You are on page 1of 3

ESTADO DEL ARTE.

El Lenguaje de Consulta Estructurado (Structured Query Language), cariosamente


conocido (por nosotros) con la nomenclatura de SQL, es un lenguaje declarativo de
acceso a bases de datos relacionales que permite especificar diversos tipos
de operaciones sobre
las
mismas.
Concentra
caractersticas
del lgebra y
el clculo relacional permitiendo lanzar consultas con el fin de recuperar informacin de
inters de un "banco de registros", de una forma sencilla y poderosa. Forma parte de
los lenguajes de Cuarta Generacin (4GL).
Sus orgenes dan a conocer que en 1970, Codd, propone el modelo relacional y asociado
a este un sublenguaje de acceso a los datos basado en el clculo de predicados.
Apoyndose en estas ideas, los laboratorios de IBM definen el lenguaje SEQUEL
(Structured English QUEry Language) que ms tarde sera ampliamente implementado
por el SGBD (Sistema de Gestin de Base de Datos) experimental System R, desarrollado
en 1977 tambin por IBM. Sin embargo, fue Oracle quien lo introdujo por primera vez
en 1979 en un programa comercial.
El SEQUEL terminara siendo el predecesor de SQL, siendo ste una versin evolucionada
del primero.
El SQL pasa a ser el lenguaje por excelencia de los diversos SGBD relacionales surgidos
en los aos siguientes y es, por fin, estandarizado en 1986 por el ANSI, dando lugar a
la primera versin estndar de este lenguaje, el SQL-86 o SQL1. Al ao siguiente este
estndar es tambin adoptado por la ISO.
Empero, este primer estndar no cubre todas las necesidades de los desarrolladores e
incluye funcionalidades de definicin de almacenamiento que se consideraron suprimir.
As que en 1992 se lanza un nuevo estndar ampliado y revisado del SQL llamado SQL92 o SQL2.
En la actualidad el SQL es el estndar de facto de la inmensa mayora de los SGBD
comerciales. Y, aunque la diversidad de aadidos particulares que incluyen las distintas
implementaciones comerciales del lenguaje es amplia, el soporte al estndar SQL-92 es
general y muy extenso.
Asimismo, el ANSI (Instituto Nacional Estadounidense de Estndares) SQL sufri varias
revisiones y agregados a lo largo del tiempo, por ejemplo, en una de sus ltimas
observaciones estudiadas, se permiti incluir: caractersticas del XML (Lenguaje
de Marcas Extendidos), columnas autonumricas, cambios y avances en
ciertas funciones, etctera.
Hoy, a casi 30 aos de su aparicin, el "Pure SQL" ha demostrado que lejos de sus inicios
como lenguaje "embebido", se ha convertido en una poderosa herramienta, capaz de
manejar estructuras lgicas complejas, as como cualquier tipo de dato imaginado. De
hecho, una versin en desarrollo denominada SQL3 comparte tantos atributos con los
lenguajes de programacin actuales que uno se puede animar a considerarlo como una
versin de un verdadero (valga la redundancia) Lenguaje de Programacin Standalone.
Pero la primera vez que el concepto de SQL injection apareci Jeff Forristal, tambin
conocido con el alias de lluvia Forrest Puppy, fue uno de los primeros en documentar
cada vez la inyeccin de SQL. Forristal, durante una auditora a un sistema NT, se
encontr un servicio web que interactuaba con una base de datos MS SQL Server 6.5, y

revisando la posibilidad del motor SQL, se percat de que era posible ejecutar sentencias
encadenadas. Debido a que se encontr una pgina web que permita introducir valores
en parmetros para la realizacin de bsquedas, pens en encadenar sentencias
SQL para provocar la ejecucin de consultas una vez la aplicacin concatenase dicha
consulta con la original en el cdigo fuente. Adems, como no poda ver el cdigo fuente
de la sentencia en s, pens en incluir caracteres guin para evitar la ejecucin del cdigo
posterior a lo que l introdujese.
Uno de sus compaeros contact con Microsoft para informar acerca de este nuevo
mundo de posibilidades que ofreca la aplicacin vulnerable y la base de datos MS SQL
Server. Microsoft no lo consider un problema, y lo dej estar.
Una de las recomendaciones que da es:

No asumas que los valores introducidos por el usuario son siempre adecuados en
sentencias SQL.
Actualmente estamos viendo ms de 50.000 ataques por da que entran en nuestra
categorizacin de inyeccin SQL. La mayora de ellos estn automatizados y tratan de
comprometer las vulnerabilidades conocidas en CMS y proyectos web (Joomla,
WordPress, vBulletin, etc) comn.
Esta es la fluctuacin de ataque para ataques SQLi, meses ms de mes:

El nmero de ataques que estn detectando est creciendo cada mes, esto es de
esperar, aunque como nuestro producto Sitio Web Firewall sigue creciendo. General, sin
embargo, el nmero de intentos de inyeccin SQL seguir creciendo.
Si profundizar en nuestros datos y conectarlo a un localizador de geo tambin podemos
ver que los ataques vienen de todas partes. La mayora de la gente tiende a pensar que
Rusia, Brasil, Rumania y algunos otros pases son las fuentes de los malos, pero para
la inyeccin de SQL, los mejores atacantes provienen de los EE.UU., India, Indonesia y
China:

As que a menos que slo un pas de servicios especficos y no se preocupan por el resto
del mundo, el bloqueo Geo no es una buena proteccin contra las inyecciones SQL
automatizados. Lo que encontramos interesante es que la mayora de los robots todava
como para fingir s mismos, ya sea como Google, MSIE 6 o establecer ningn agente de
usuario en absoluto:
16% - MSIE 6.0; Windows NT 5.1; SV1; NET CLR 1.1.4322)
13% - Googlebot / 2,1; + http: //www.google.com/bot.html)
11% - Ningn agente de usuario
Slo mediante el bloqueo de estas solicitudes anmalas, puedes librarte de un tercio de
todos los intentos de inyeccin automatizados.
Las tendencias de los nuevos ataques de SQL Injection se mueven en el campo de:

CSRF (Cross Site Reques Forgery): se aprovecha de la autenticacin de la vctima


en un sitio para efectuar peticiones sin conocimiento de esta. Estas peticiones
son de acuerdo a las acciones que el usuario puede hacer en el sitio (comprar,
agregar, pagar, etc).
Xpath Injection consiste en la manipulacin de las consultas xpath para extraer
informacin de las bases de datos XML. Esta es una tcnica relativamente nueva
que tiene algunas similutes con los ataques Sql injection como veremos a
continuacin.
LDAP (lLightweight Directory Access Protocol) es un protocolo de acceso ligero
a un directorio de servicios sobre TCP/IP. Inicialmente naci como una forma de
consultar las bases de datos jerarquizadas de informacin en los rboles X.500
pero con el tiempo cobr entidad propia y hoy en da el directorio de informacin
es un rbol LDAP. Con sus propias estructuras y documentos que formalizan esta
tecnologa.

You might also like