¿Qué es la inyección de lenguaje de consulta estructurado (SQL)?
La inyección de SQL es muy peligrosa, se trata de un tipo de ciberataque que intenta instalar código propio en un sitio web y quebrar el sistema de seguridad. Corrompe la estructura de código con elementos maliciosos que están diseñados para encontrar datos confidenciales e información sensible de la víctima. Descubre qué es la inyección SQL, cómo actúa, algunos ejemplos y la manera de protegerte online.
Tabla de contenidos
¿Qué es SQL en español?
Definición de SQL
SQL son las siglas en inglés de Structured Query Language, que podemos traducir como “lenguaje de consulta estructurado”. Estamos ante un lenguaje de programación que sirve para que los sistemas de gestión de bases de datos (DBMS) sean más eficientes y puedan atender las solicitudes de los usuarios, entregándoles la información que están buscando en una base de datos.
¿Es el código SQL algo nuevo? No, el lenguaje SQL se desarrolló ya en la década de 1970 y fue una revolución porque mejoró notablemente la gestión de bases de datos. Recuerda que en estas siglas, se encuentra la palabra “query” que en español significa consulta (que en la actualidad también es llamada “keyword”).
Gracias al lenguaje SQL, cuando una persona teclea una palabra clave en el buscador, esta se relaciona con conceptos reconocibles en inglés y otras lenguas. Las solicitudes SQL se tramitan de la siguiente manera:
- Un cibernauta hace una consulta en su buscador (que en definitiva es una gran base de datos).
- Se crea una cadena SQL que contiene dicha keyword.
- La cadena SQL llega a la base de datos, donde entra en escena el sistema de gestión DBMS.
- DBMS reconoce comandos de codificación y relaciona la palabra clave con la información relevante.
- En pantalla el usuario puede leer los datos que estaba buscando.
¿Qué es la inyección SQL?
Definición de inyección SQL
La inyección SQL es la introducción de comandos SQL en un sitio web determinado. Resulta muy peligroso porque los hackers planean inyecciones SQL para introducir trozos de código malicioso en los dispositivos de terceras personas, de modo que desbloquean el acceso a información personal, archivos privados o las contraseñas guardadas en la base de datos.
En otras palabras, se trata de una forma de engañar a un sitio web a través de cadenas SQL que contienen el código malicioso de los hackers. El sistema de gestión de datos DBMS leerá el código inyectado como si fuera legítimo, de modo que será procesado y ejecutado.
Tipos de guerras cibernéticas
En el primer apartado definimos qué es una guerra cibernética, pero todavía no hemos profundizado en sus diferentes formas y qué se pretende conseguir con estos ataques. A grandes rasgos, existen cuatro tipos de ciberguerras. Puedes ver sus características a continuación.
Problemas que causan las inyecciones SQL
Estos son algunos ejemplos de las consecuencias de una ataque informático que emplea inyección SQL:
- Robo de nombres de usuarios y contraseñas. El código corrompido puede solicitar los datos de los clientes de una tienda online o las claves secretas de los perfiles de la plataforma.
- Vulneración de la privacidad de los usuarios. Los chats en vivo, direcciones de correo electrónico o el número de teléfono podrían quedar al descubierto por culpa de las inyecciones SQL.
- Filtraciones de datos del formulario de suscripción. Todos los datos que se introducen pueden terminar en las manos menos indicadas.
- Consultar tu saldo y realizar transferencias no autorizadas. Si el ataque de código SQL tiene en el punto de mira un portal de banca electrónica, tus datos bancarios estarán en peligro.
¿Qué pueden hacer los ataques de inyección SQL?
Un ciberataque de inyección SQL causa graves daños en la seguridad y la privacidad de un sitio web. Es una manera muy efectiva de introducirse en su base de datos, lo que no augura nada bueno.
Pero ¿cuál es el objetivo del delincuente informático que diseña un ataque de estas características? A veces, el daño simplemente consiste en la eliminación de algunos datos para desatar el caos en la estructura web. En otras ocasiones, el ataque se centra en la edición de datos para introducir textos que no son propios de ese dominio o extraer información confidencial, como en el caso de las entidades financieras.
No obstante, las estadísticas muestran que este modus operandi acostumbra a usarse para robar los datos de las cuentas online de los usuarios registrados en un sitio web. Un ciberdelincuente no quedará satisfecho solo con el robo de tu información confidencial, con frecuencia estos datos se venden en la web oscura. Ahora que ya sabes qué es SQL y para qué sirve, aprende a diferenciar los tipos de “inyecciones” de los que podrías ser víctima.
3 tipos de inyecciones SQL
Las inyecciones SQL se clasifican en función del método que utilizan los delincuentes para acceder a la base de datos que no les pertenece. Compara sus características y aprende a identificarlos para prevenir encontrarte con uno de estos ciberataques.
SQLi In-Band (SQLi clásico)
Los ataques de inyección de SQLi In-Band son los más comunes, por eso también reciben el nombre de SQLi clásico. Esta popularidad se debe en parte por su sencillez a la hora de ser diseñados. Asimismo, el ataque y la recolección de datos se hace a través del mismo canal, lo que simplifica enormemente el proceso.
Dentro de esta categoría, debemos señalar otros dos tipos de ataques SQLi clásicos: SQLi basado en errores y SQLi basado en la unión. A continuación, puedes leer todos los detalles.
- SQLi basado en errores: funcionan gracias a los errores que se producen en la base de datos, en la cual puede haber numerosos datos confidenciales. Con ese código malicioso que han introducido, pueden modificar la consulta SQL para una mayor vulneración.
- SQLi basado en la unión: recibe su nombre del operador UNION que sirve para combinar los resultados de varias declaraciones SELECT (con una sola salida), que finalmente configuran una respuesta que se envía junto al HTTP.
SQLi Blind
Este tipo de ataque de inyección SQL se dice que es ciego porque el atacante no puede ver directamente las respuestas de las consultas realizadas. Entonces, ¿por qué se lleva a cabo este ciberdelito? Porque sí que es posible observar el comportamiento de una app y plagiar su estructura.
Una vez explicado el significado de SQL Blind, conviene diferenciar las dos formas que puede adoptar:
- SQLi Blind basado en Boolean (basado en contenido): el atacante envía varias consultas SQL que se traducen en una respuesta de SÍ o NO.
- SQLi Blind basado en el tiempo: el delincuente envía consultas SQL a la base de datos, pero hay una espera determinada antes de responder. Si accedes a un sitio web que carga demasiado lento, quizá se esté produciendo una inyección SQL.
Out-of-band SQLi
El último tipo de ataque de inyección SQLi que vamos a definir es el Out-of-band SQLi. Se trata de una explotación que permite que los delincuentes filtren datos confidenciales a través de canales DNS o HTTP.
Ejemplos de inyección SQL
Anteriormente, mencionamos el comando UNION, aunque ahora entraremos en detalles. Este comando sirve para agregar consultas adicionales a la que ya ha realizado el usuario, por lo tanto no son legítimas. Cuando se entregue la información solicitada por el cibernauta, se incluirán resultados relacionados con la consulta no autorizada del código SQL extra.
En esta lista de ejemplos inyecciones SQL, no podíamos dejar de mencionar las empresas (reconocidas a nivel mundial) que fueron víctimas de estas prácticas delictivas:
- Fornite (2019): este popular videojuego online estaba operando con una vulnerabilidad de inyección SQL que permitía que los delincuentes accedieran a las cuentas de los usuarios. Esta vulnerabilidad se corrigió en 2019.
- Cisco (2018): Cisco Prime License Manager también operaba con una vulnerabilidad que permitía que personas no autorizadas accedieran al sistema que otorgaba las licencias. Por supuesto, ya se ha corregido este error en el código SQL.
- Tesla (2014): expertos en seguridad aseguraron en el año 2014 que podían sortear la protección del sitio web de la marca a través de una inyección SQL.
¿Qué puede robar un hacker de código SQL?
Un sitio web desprotegido es una mina para los ciberdelincuentes especializados en inyecciones SQL. Casi todo lo que forme parte de la base de datos, podría terminar en las manos de los hackers o venderse a terceras partes.
Los datos de los clientes de una tienda online estarán en peligro, ya que quizá terminen mostrándose en un catálogo como si fueran los productos a la venta. Mira el siguiente vídeo para entender mejor lo que pueden robar los hackers de código SQL (tienes disponibles los subtítulos en español).
Prevención y protección ante los ataques de inyección SQL
Lee con atención estos consejos para prevenir ser la víctima de ataques informáticos de inyección SQL:
- Segrega tus datos. No guardes todos los detalles de tus documentos de identidad o certificados en un mismo lugar, aunque sea en la nube. Por eso es peligroso mantener los datos de la cartelera de clientes en línea en una única base de datos, en especial si no se encripta con tecnología de última generación.
- Evita diseñar un sitio web con plantillas. Si la estructura de tu página sigue el mismo patrón, en el que solo hay huecos en blanco esperando a ser rellenados con palabras clave, un hacker podría editar el código SQL en un abrir y cerrar de ojos. No permitas que se induzcan comandos que no deseas.
- Validación de entradas. Debe estar integrada en el sitio web y establecer una lista de términos válidos que se irá haciendo más grande cuando se introduzcan más elementos a la base de datos. Si la consulta que se emite no corresponde a ningún dato registrado, no se ejecutará el código y aparecerá en pantalla el mensaje “sin resultados”.
La seguridad online empieza con un clic.
Máxima seguridad con la VPN líder del mundo