Mastodon Mastodon Mastodon Mastodon

Inyección de código

Actualizado: · CyberSecureFox Editorial Team

La inyección de código es un tipo de ataque en el que el atacante envía una entrada que la aplicación ejecuta por error como código de programa.

Cómo funciona la inyección de código

La causa de fondo es mezclar datos y código. Si una aplicación construye código a partir de lo que introduce el usuario —por ejemplo, lo pasa a la función eval() en PHP, JavaScript o Python o lo inserta en una plantilla—, un atacante puede añadir sus propias instrucciones. La debilidad está catalogada como CWE-94. Variantes relacionadas:

  • Inyección de comandos del sistema (CWE-78): la entrada acaba en un comando de la shell.
  • Inyección en plantillas del servidor (SSTI): motores como Jinja2 o Twig evalúan la entrada.
  • Inyección en lenguajes de expresiones: por ejemplo, la inyección OGNL en Apache Struts que provocó la brecha de Equifax en 2017.
  • La inyección SQL y el cross-site scripting, donde se inyecta una consulta a la base de datos o un script para el navegador.

El fallo Shellshock de Bash (2014) mostró la magnitud del problema: variables de entorno manipuladas hacían que Bash ejecutara comandos en servidores web, routers y otros dispositivos.

Por qué es importante

Una inyección de código exitosa suele significar ejecución remota de código con los privilegios de la aplicación: robo de datos, web shells, criptomineros o una cabeza de puente para el ransomware. Las inyecciones figuran en el OWASP Top 10 desde su primera edición y son un blanco favorito de los escáneres automáticos. Un pariente cercano es la deserialización insegura, que también convierte datos en código ejecutado.

Cómo prevenirla

  • No pasar nunca la entrada del usuario a funciones tipo eval ni a la shell; usar API seguras y consultas parametrizadas.
  • Validar la entrada con listas de permitidos estrictas y codificar la salida según el contexto.
  • Ejecutar las aplicaciones con privilegios mínimos y aislar los motores de plantillas.
  • Usar análisis estático y pruebas de seguridad para encontrar a tiempo los puntos de inyección.
Sinónimos:
code injection