Los ataques de inserción de SQL son una de las vulnerabilidades de aplicaciones web más antiguas, ya que se analizan desde finales de los años 90, pero siguen siendo relevantes en la actualidad. En este artículo se explica qué son, cómo funcionan y cómo se pueden prevenir.
Una inserción de SQL, que a veces se abrevia como SQLi, es un tipo de vulnerabilidad en la que un atacante utiliza un fragmento de código SQL (Structured Query Language, lenguaje de consulta estructurado) para manipular una base de datos y obtener acceso a información potencialmente valiosa. Es uno de los tipos de ataque más frecuentes y amenazadores, porque puede atacar prácticamente cualquier aplicación o sitio web que utilice una base de datos basada en SQL (que son la mayoría).
Para entender la inserción de SQL, es importante saber qué es el lenguaje de consulta estructurado. SQL es un lenguaje de consulta que se utiliza en programación para acceder a datos almacenados en bases de datos relacionales, modificarlos y eliminarlos. Debido a que la gran mayoría de los sitios y aplicaciones web dependen de bases de datos SQL, un ataque de inserción de SQL puede tener graves consecuencias para las organizaciones.
Una consulta SQL es una solicitud que se envía a una base de datos para que se realice algún tipo de actividad o función, como consultas de datos o ejecuciones de código SQL. Un ejemplo es cuando la información de inicio de sesión se envía a través de un formulario web para permitir que un usuario acceda a un sitio. Normalmente, este tipo de formulario web está diseñado para aceptar solo ciertos tipos de datos, como un nombre o una contraseña. Cuando se añade dicha información, se contrasta con una base de datos y, si coincide, se permite la entrada al usuario. Si no coincide, se deniega el acceso.
Surgen posibles problemas porque la mayoría de formularios web no pueden evitar de ninguna manera que se introduzca información adicional en los formularios. Los atacantes pueden aprovechar esta debilidad y usar las casillas de entrada del formulario para enviar sus propias solicitudes a la base de datos. De esta manera, podrían realizar una amplia gama de actividades perversas, desde el robo de datos confidenciales hasta la manipulación de la información de la base de datos para sus propios fines.
Dado el predominio de sitios web y servidores que utilizan bases de datos, las vulnerabilidades de inserción de SQL son uno de los tipos de ciberataques más antiguos y extendidos. Varios acontecimientos en la comunidad hacker han aumentado el riesgo de este tipo de ataque, sobre todo la aparición de herramientas para detectar y aprovechar la inserción de SQL. Estas herramientas, disponibles de forma gratuita por medio de desarrolladores de código abierto, permiten a los cibercriminales realizar ataques automáticamente en unos minutos, ya que les brindan acceso a cualquier tabla o columna de la base de datos con un sencillo proceso de clic y ataque.
Es posible que un ataque de inserción de SQL exitoso no muestre ningún síntoma. Sin embargo, a veces hay algunas señales externas, entre las que se incluyen:
Según la forma de acceso a los datos del back-end y el alcance del posible daño que provocan, las inserciones de SQL se dividen en tres categorías:
SQLi en banda:
Este tipo de ataque de SQLi es sencillo para los atacantes, porque utilizan el mismo canal de comunicación para lanzar los ataques y obtener los resultados. Este tipo de ataque de SQLi tiene dos subvariantes:
SQLi inferencial (también conocida como inserción de SQL ciega):
En este tipo de SQLi, los atacantes utilizan los patrones de respuesta y comportamiento del servidor después de enviar cargas útiles de datos para obtener más información sobre su estructura. Los datos no se transfieren desde la base de datos del sitio web al atacante, por lo que este no ve la información sobre el ataque en banda (por eso se utiliza el término “SQLi ciega”). La SQLi inferencial puede clasificarse en dos subtipos:
SQLi fuera de banda:
Este tipo de ataque de SQL tiene lugar en dos situaciones:
Un ataque de inserción de SQL exitoso puede tener graves consecuencias para una empresa. Esto se debe a que mediante un ataque de inserción de SQL se puede hacer lo siguiente:
El coste de un ataque de inserción de SQL no es solo económico: también puede suponer la pérdida de la confianza de los clientes y daños en la reputación si se roba información personal como nombres, direcciones, números de teléfono y datos de tarjetas de crédito. Cuando se pierde la confianza del cliente, es difícil recuperarla.
A lo largo de los años, muchas organizaciones han sido víctimas de SQLi. Estos son algunos ejemplos destacados:
Fortnite, 2019
Fortnite es un juego en línea con más de 350 millones de usuarios. En 2019, se descubrió una vulnerabilidad de inserción de SQL que permitía a los atacantes acceder a las cuentas de los usuarios. La vulnerabilidad se corrigió.
Cisco, 2018
En 2018, se encontró una vulnerabilidad de inserción de SQL en Cisco Prime License Manager. La vulnerabilidad permitía a los atacantes obtener acceso shell a los sistemas en los que estaba implementado el gestor de licencias. Cisco ya corrigió la vulnerabilidad.
Tesla, 2014
En 2014, los investigadores de seguridad anunciaron que podían quebrantar el sitio web de Tesla con una inserción de SQL, lo que permitía obtener privilegios de administrador y robar datos de los usuarios en el proceso.
Estas son algunas de las preguntas frecuentes sobre SQLi:
Un ataque de inserción de SQL utiliza código SQL malicioso para manipular la base de datos de back-end y acceder a información privada. Esta información puede incluir información confidencial de la empresa, listas de usuarios o detalles de los clientes. SQL es la sigla de "Structured Query Language", que significa "lenguaje de consulta estructurado", e inserción de SQL a veces se abrevia como SQLi.
Los ataques de inserción de SQL permiten a los atacantes suplantar la identidad, alterar los datos existentes, revelar datos del sistema, destruir datos o hacer que no estén disponibles, y convertirse en administradores del servidor de la base de datos. Los ataques de inserción de SQL pueden provocar daños graves a las empresas, como la pérdida de confianza de los clientes si se filtran los datos confidenciales de los usuarios.
Debido a que son relativamente fáciles de implementar y la posible recompensa es grande, los ataques de inserción de SQL son frecuentes. Las estadísticas varían, pero se estima que los ataques de inserción de SQL constituyen la mayoría de los ataques en las aplicaciones de software. Según el Open Web Application Security Project (Proyecto abierto de seguridad de aplicaciones web), los ataques de inserción, que incluyen inserciones de SQL, fueron el tercer riesgo de seguridad más grave en las aplicaciones web en 2021.
Para las empresas interesadas en la prevención de las inserciones de SQL, los principios clave para ayudar a proteger los sitios y las aplicaciones web son los siguientes:
Formar al personal:Capacita al equipo responsable de tu aplicación web sobre los riesgos basados en SQLi y brinda la formación necesaria a todos los usuarios en función del puesto.
Controlar los datos que ingresan los usuarios:Cualquier entrada de usuario utilizada en una consulta SQL genera un riesgo. Trata las entradas de los usuarios autenticados e/o internos de la misma manera que las entradas públicas hasta que se comprueben. Concede a las cuentas que se conectan a la base de datos SQL solo los privilegios mínimos necesarios. Utiliza listas blancas como práctica habitual en lugar de listas negras para verificar y filtrar las entradas de los usuarios.
Utilizar las versiones más recientes:Es importante utilizar la versión más reciente del entorno de desarrollo para maximizar la protección, ya que es posible que a las versiones más antiguas les falten funciones de seguridad. Asegúrate de instalar el software y los parches de seguridad más recientes cuando estén disponibles.
Analizar de forma continua las aplicaciones web:
Utiliza herramientas integrales de administración del rendimiento de las aplicaciones. Analizar con regularidad las aplicaciones web permite identificar y abordar posibles vulnerabilidades antes de que provoquen daños graves.
Usar un firewall:Un firewall de aplicaciones web (WAF, por su sigla en inglés) a menudo se utiliza para filtrar SQLi, así como otras amenazas en línea. Un WAF confía en una amplia lista de firmas que se actualiza con frecuencia y permite filtrar consultas SQL maliciosas. Por lo general, la lista contiene firmas para hacer frente a vectores de ataque específicos y se corrige regularmente en respuesta a las vulnerabilidades descubiertas recientemente.
Productos relacionados:
Más artículos: