Mastodon Mastodon Mastodon Mastodon

Inyección SQL [SQLi]

Actualizado: · CyberSecureFox Editorial Team

La inyección SQL (SQLi) es un ataque web en el que se introduce una entrada maliciosa en una consulta a la base de datos, lo que permite al atacante leer, modificar o borrar datos a los que no debería acceder.

Cómo funciona la inyección SQL

El fallo se produce cuando una aplicación construye una consulta SQL pegando directamente la entrada del usuario en el texto de la consulta. Si un formulario de acceso ejecuta SELECT * FROM users WHERE name = 'entrada', una entrada como ' OR '1'='1 cambia la lógica de la consulta.

Variantes:

  • en banda: los resultados aparecen directamente en la página (basada en errores o en UNION);
  • ciega: el atacante deduce los datos a partir de respuestas verdadero/falso o de retrasos;
  • fuera de banda: los datos se envían a un servidor controlado por el atacante.

Según la base de datos y sus permisos, la SQLi puede ir más allá del robo de datos, hasta escribir archivos y lograr ejecución remota de código. Herramientas como sqlmap automatizan el descubrimiento y la explotación.

Por qué la inyección SQL es peligrosa

Es una de las vulnerabilidades web más antiguas y sigue dentro de la categoría «Inyección» del OWASP Top 10. Ha causado filtraciones enormes:

  • el ataque a Heartland Payment Systems en 2008 expuso más de 100 millones de números de tarjeta;
  • en 2023, el grupo Cl0p usó una inyección SQL en MOVEit Transfer (CVE-2023-34362) para robar datos de miles de organizaciones.

Cómo prevenir la inyección SQL

  • Use consultas parametrizadas (prepared statements) o un ORM seguro: nunca concatene entradas en SQL.
  • Conceda a la cuenta de base de datos de la aplicación solo los permisos necesarios.
  • Valide las entradas, oculte los errores detallados de la base de datos y pruebe el código con herramientas SAST/DAST.
  • Un cortafuegos de aplicaciones web (WAF) ayuda como capa adicional, pero no sustituye a corregir el código.
Sinónimos:
SQL injection, ataque de inyección SQL