Inyección de SQL

Conecta Software
4 lectura mínima

¿Qué es una Inyección de SQL?

Una inyección de SQL es un método por el cual, se infiltra código intruso a través de una vulnerabilidad que se encuentra presente en una aplicación haciendo uso del lenguaje de consultas SQL en una base de datos. 

Se dice que se produce una inyección de SQL en el momento en el que se inserta una sentencia SQL dentro de un código SQL programado, con la finalidad de alterar el funcionamiento normal de la aplicación y lograr así que se ejecute la porción de código invasor incrustado dentro de la base de datos, independientemente de si se trata de una aplicación de escritorio o de una aplicación web (entre otros).

Además, se trata a nivel de seguridad informática como un problema, y se debe tener siempre en cuenta por parte del programador para que sea prevenida.

¿Cuándo aparecieron las inyecciones de SQL?

La primera vez que se habló de inyecciones de SQL fue en el año 1998 gracias al afamado hacker James Forristal, quién hacía uso del nickname Rain Forest Puppy a través de un artículo en el que describía una técnica novedosa. Dicho artículo se llamó NT Web Technology Vulnerabilities (ya que en aquellos años se hacía uso del sistema operativo Windows NT) y describía que, a través de conexiones ODBC junto con un servidor de datos Microsoft SQL Server 6.5 se podían ejecutar consultas y comandos usando el lenguaje SQL. 

La vulnerabilidad consistía en que, a través de la inyección de código SQL en una aplicación (por lo general una aplicación web) se podía modificar la manera en la que se realizaban las consultas a una base de datos consiguiendo así, evadir los mecanismos de seguridad que existían, ejecutar comandos en el servidor o recuperar datos sensibles (entre muchas otras).

¿Para qué utilizan los atacantes las Inyecciones de SQL?

Los ataques de inyección de SQL son utilizados con el objetivo de tener un acceso más directo y profundo de la base de datos administrativa de una aplicación. Se intenta recuperar correos electrónicos y contraseñas e información financiera y confidencial valiéndose de que los usuarios no tienen la costumbre de utilizar distintas contraseñas en distintas plataformas, si no siempre utilizar la misma.

Un informe presentado por Akamai del 2019 exponía que el 36% de los ataques a entidades financieras se hacía a través de inyecciones de SQL.

¿Cómo combatir las inyecciones de SQL?

Existen varios enfoques generales de cómo prevenir las inyecciones SQL de una aplicación:

    • Prevención a través del código fuente. Se deben aplicar una serie de buenas prácticas cuando se trabaja con consultas hacia una base de datos que utiliza el lenguaje de consultas SQL. Para ello, se deben consultar las APIs de los lenguajes de programación y utilizar aquellos procedimientos y técnicas que se encuentren lo más actualizado posible. 
    • Uso de firewalls. Se debe colocar un firewall delante de la aplicación para inspeccionar y filtrar el tráfico entrante. 
    • Actualización e instalación de parches. Muchas veces, los profesionales de las tecnologías de la información desarrollan parches que suplen los problemas técnicos que pueda tener una aplicación una vez que se ha descubierto una vulnerabilidad. Se debe estar al día en cuanto a dichos parches ya que prevén muchos ataques informáticos a parte de las inyecciones de SQL.