
Contents
Los ataques de inyección de SQL son mas comunes de lo que pensamos, En este artículo, exploraremos en qué consisten, como funcionan, y que podemos hacer para prevenirlos.
¿Qué es Inyección SQL?
SQL significa: lenguaje de consulta estructurada (del inglés Structured Query Language) es un lenguaje diseñado para bases de datos; que nos permite añadir, extraer y modificar información en sistemas de gestión de bases relacionales.
Ahora, la forma en la que funcionan los ataques de inyección SQL, valga la redundancia, es inyectando código malicioso que se ejecutará dentro de la base de datos infectada. El vector de ataque más común es a través de páginas web, pero también se dan este tipo de ataques en bases de datos (por ejemplo: de instituciones educativas y hospitalarias) y aplicaciones.
El problema con este modelo es el concepto de las Queries:
- Cuando hacemos una búsqueda en Google, estamos haciendo una Query (consulta).
- Cuando buscamos los datos de un usuario en un CRM, por ejemplo “José”, también estamos haciendo una Query (solicitud) para extraer la información relativa a esta entrada.
¿Cómo funcionan los ataques de inyección SQL?
Lo explicaremos con el ejemplo de la página LinkedIn:
- En un caso normal, usamos la barra de búsqueda para buscar ofertas de trabajo (como empleados) o profesionales (como empleadores).
- Dentro del marco este lenguaje, las queries más comunes son seleccionar, actualizar, borrar, insertar, crear base de datos, alterar base de datos, y crear tabla.
- Luego, al buscar una oferta que nos interese y darle click para abrirla, estaríamos enviando un query de “SELECT”, al escribir algo como “traductor inglés-español” y seleccionar una.
- La forma en la que se inyectan estos códigos, es permitiendo que, podamos insertar código SQL en la barra de búsqueda
¿Cómo se inyecta el código malicioso?
Así podría verse el código en la base de datos, al buscar “traductor inglés-español” en LinkedIn:
SELECT * FROM empleos WHERE nombre = ‘traductor inglés-español’ |
Y así, en vez de buscar “traductor inglés-español”, insertaríamos un código malicioso, aprovechando la vulnerabilidad del sistema:
traductor inglés-español’; DROP TABLE empleos; SELECT * FROM datos WHERE nombre LIKE ‘% |
Entonces; insertando ese código en la barra de búsqueda, en vez de buscar los resultados relativos a “traductor inglés-español”, inyectamos este código en la base de datos, seleccionando toda la tabla “DATOS” y eliminando la tabla “EMPLEOS”.
¡Imagínate que alguien gane acceso a la base de datos de LinkedIn y elimine todas las ofertas de empleo! Pero, no te preocupes, esto también tiene soluciones.
¿Cómo prevenir ataques de inyección SQL?
Según un reporte de Akamai; los ataques de inyección SQL son uno de los métodos más comunes de ciberataques, tanto como 65.1% de los ataques reportados entre 2017 y 2019 se basaron en este marco.
Usemos el análisis de la Universidad de Berkeley para definir los métodos más efectivos para protegernos de estos ciberataques:
- Primero y lo más importante: es definir parámetros y límites estrictos para las Queries accesibles a nuestra audiencia y equipo de trabajo. Es decir, lo que pueden insertar en las barras de búsqueda.
- Debes asegurarte de mantener actualizados los componentes software de aplicaciones y páginas web.
- Hay un principio de programación, que cuenta más como filosofía que como metodología, el principio del menor privilegio posible. Consiste en no darle privilegios innecesarios a roles que no lo ameriten y sobre todo limitar las cuentas con privilegios de administrador a una sola.
- Es necesario implementar un protocolo de higiene de credenciales: Actualizar las contraseñas periódicamente y asegurarnos que ninguno de los miembros de nuestro equipo de trabajo, use la misma cuenta para conectarse a través de las plataformas o sistemas de información de la empresa.
Finalmente, te recomendamos darle un vistazo a las recomendaciones de la Fundación OWASP para comprobar si tus sistemas son vulnerables ante estos ataques.
Te puede interesar: ¿Cómo funciona un departamento de sistemas?
En conclusión
Como comprobaste a través de este artículo, es importante saber qué es un ataque de inyección SQL. Este tipo de amenaza se ha vuelto bastante común en el entorno de ciberseguridad de hoy en día. Incluso como individuos sin conocimiento de programación y desarrollo; podemos dar un paso adelante y ser una verdadera influencia positiva, en pro de nuestra ciberseguridad y la de nuestras empresas.
Gracias por leer.
Esperemos que haya sido de tu agrado.
Si fue así, compártelo con otros apasionados de la ciberseguridad y síguenos en nuestras redes sociales.
Suscríbete a nuestro boletín para recibir lo más reciente en ciberseguridad cada semana.
¡Hasta la próxima!