GuilleSQL :: Microsoft SQL Server, SSIS, y más !! Votar en los Premios Bitacoras.com a Portal GuilleSQL

¿Qué es SQL Injection?

Volver a: [SQL Injection]


Este capítulo introduce el concepto de SQL Injection, quizás la técnica más común de ataque contra aplicaciones de base de datos (ej: SQL Server), especialmente para aplicaciones web disponibles en Internet. ¿Qué es SQL Injection? ¿Qué no es SQL Injection? ¿Qué peligros esconde SQL Injection? ¿Qué daños se pueden producir a través de SQL Injection? ¿Cómo proteger una aplicación de ataques SQL Injection? ¿Cómo evitar ataques SQL Injection en Internet?

SQL Injection es una técnica de ataque contra aplicaciones de base de datos, consistente en aprovechar los mecanismos de entrada de la aplicación informática fruto del ataque (ej: cajas de texto, querystrings, etc.) para introducir valores a través de los mismos (cadenas peligrosas), que puedan alterar las sentencias SQL que dicha aplicación ejecutará contra su base de datos (ej: SQL Server), consiguiendo de este modo ejecutar código SQL malicioso e invasor. Esta vulnerabilidad resulta más peligrosa cuanto mayores son los permisos concedidos al usuario utilizado para acceder a la base de datos (ojito con los permisos, siempre utilizar usuarios con permisos mínimos – low privileged users). Además, como resulta evidente, la utilización de SSL (Secure Socket Layer) e IPSec (IP Security) no ofrece ninguna protección frente a ataques SQL Injection.

SQL Injection se basa principalmente en el hecho de que algunas aplicaciones (aquellas aplicaciones vulnerables a SQL Injection, que no todas) utilizan los valores introducidos como entradas de la aplicación, para la construcción de sus sentencias SQL (ej: mediante concatenaciones) sin comprobaciones previas de dichos datos de entrada, es decir, aplicaciones que construyen sentencias SQL al vuelo (o SQL Dinámico) concatenando valores introducidos por el usuario que no han sido comprobados previamente. Para la redacción de este artículo, se ha desarrollado una pequeña base de datos de ejemplo en el Laboratorio de GuilleSQL, con las correspondientes páginas ASP y html, simulando ataques de SQL Injection, comprobando los resultados y errores obtenidos en el Laboratorio de GuilleSQL, etc.

SQL Injection no es una vulnerabilidad propia de un lenguaje de programación particular. Del mismo modo, SQL Injection tampoco es una vulnerabilidad propia de un motor de base de datos en particular. Por supuesto, SQL Injection no es un problema particular de SQL Server ni de Transact-SQL, pues SQL Injection puede producirse sobre bases de datos ORACLE, IBM DB2, IBM Informix, Microsoft Acces, MySQL, etc. De hecho, SQL Injection puede considerarse como la consecuencia de una programación descuidada, capaz de comprometer la seguridad de una aplicación por ignorancia de dicho problema o por descuidos y falta de disciplina del equipo de desarrollo. Sin embargo, lo que sí es cierto, es que debido a que cada motor de base de datos tiene sus particularidades (procedimientos almacenados del sistema, seguridad de acceso, tablas del sistema o catálogo, etc.), el conocimiento por parte del atacante de las particularidades del motor de base de datos que se está atacando, facilitará enormemente la realización de un ataque con éxito, como describimos más adelante en los ejemplos del Laboratorio de GuilleSQL.

SQL Injection presenta un especial peligro en Aplicaciones Web disponibles en Internet, en grandes redes corporativas, o en cualquier otro tipo de red pública o gran red, por tratarse de escenarios con grandes poblaciones de usuarios en los que es más probable la existencia de Hackers, debido a que la gran cantidad de usuarios y dispositivos hace más fácil al atacante pasar desapercibido o robar la identidad (dirección MAC, dirección IP, credenciales, etc.) de un tercero para satisfacer su ataque (Hacking), ya se trate de un ataque SQL Injection o de cualquier otro tipo de ataque. Además, el hecho de que para acceder a una Aplicación Web es suficiente con tener un Navegador y conocer la dirección (URL) de dicha Aplicación Web, es un aliciente, frente a Aplicaciones WinForms que precisen instalarse y configurarse en cada dispositivo.

Los daños o impactos que pueden producirse como consecuencia de ataques SQL Injection son varios, pues al margen del daño estrictamente técnico (modificación de datos de la base de datos, denegación de servicio, etc.), pueden producirse daños económicos derivados directamente del propio ataque o incluso indirectamente (ej: pérdida de confianza por parte de los Usuarios de la Aplicación, coste de reparación de los daños producidos por el ataque, etc.).

A través del resto de capítulos de este Artículo, se profundizará más en este tema (SQL Injection), incluyendo ejemplos y código fuente que faciliten la comprensión de la mecánica de los ataques SQL Injection, desarrollo de alternativas de protección y seguridad ante ataques SQL Injection, etc.

Volver a: [SQL Injection]




Miembros de
Miembros de GITCA (Global IT Community Association)

Menu de Usuario
  Iniciar Sesión
  Registrarse
  Restablecer Contraseña
  Ventajas de Registrarse

Acerca de
  Contigo desde Oct 2007
  623 usuarios registrados
  86146 pageloads/mes
  Ranking Alexa 498160



Archivo

Junio de 2012 (1)
Mayo de 2012 (2)
Abril de 2012 (7)
Marzo de 2012 (16)
Febrero de 2012 (9)
Enero de 2012 (5)
Diciembre de 2011 (10)
Noviembre de 2011 (10)
Octubre de 2011 (4)
Septiembre de 2011 (5)
Agosto de 2011 (2)
Julio de 2011 (2)
Junio de 2011 (4)
Mayo de 2011 (2)
Abril de 2011 (6)
Marzo de 2011 (4)
Febrero de 2011 (10)
Enero de 2011 (5)
Diciembre de 2010 (6)
Noviembre de 2010 (4)
Octubre de 2010 (8)
Septiembre de 2010 (4)
Agosto de 2010 (1)
Julio de 2010 (3)
Mayo de 2010 (5)
Abril de 2010 (6)
Marzo de 2010 (8)
Febrero de 2010 (3)
Enero de 2010 (1)
Diciembre de 2009 (9)
Noviembre de 2009 (14)
Octubre de 2009 (2)
Septiembre de 2009 (8)
Agosto de 2009 (2)
Julio de 2009 (10)
Junio de 2009 (9)
Mayo de 2009 (10)
Abril de 2009 (9)
Marzo de 2009 (3)
Febrero de 2009 (2)
Enero de 2009 (3)
Noviembre de 2008 (2)
Octubre de 2008 (2)
Septiembre de 2008 (2)
Agosto de 2008 (5)
Julio de 2008 (5)
Junio de 2008 (1)
Mayo de 2008 (3)
Abril de 2008 (2)
Marzo de 2008 (2)
Febrero de 2008 (2)
Enero de 2008 (5)
Noviembre de 2007 (2)
Octubre de 2007 (2)






Copyright © 2007 GuilleSQL, todos los derechos reservados.