Inyección de Código
¿Qué es Inyección de Código?
Inyección de CódigoClase de vulnerabilidades en la que datos proporcionados por el atacante se interpretan y ejecutan como código de la aplicación, permitiendo ejecución arbitraria.
La inyección de código es la familia amplia de fallos en los que entrada no confiable se incorpora a algo que la aplicación trata más tarde como código, configuración o marcado, provocando que el runtime lo ejecute. Casos concretos incluyen inyecciones basadas en eval en JavaScript y Python, inyección de plantillas del servidor, inyecciones de lenguajes de expresión (OGNL, SpEL), deserialización insegura que dispara cadenas de gadgets, y carga dinámica de clases desde datos del usuario. Una explotación exitosa suele dar ejecución remota con la identidad de la aplicación, paso previo a comprometer todo el host o clúster. Las defensas incluyen no construir código a partir de la entrada, APIs parametrizadas, restringir funciones dinámicas y aplicar mínimos privilegios y sandboxing.
● Ejemplos
- 01
eval(request.body.expr) ejecuta JavaScript controlado por el atacante en un servicio Node.
- 02
Aplicación Java que llama a ScriptEngine.eval sobre un script proporcionado por el usuario.
● Preguntas frecuentes
¿Qué es Inyección de Código?
Clase de vulnerabilidades en la que datos proporcionados por el atacante se interpretan y ejecutan como código de la aplicación, permitiendo ejecución arbitraria. Pertenece a la categoría de Ataques y amenazas en ciberseguridad.
¿Qué significa Inyección de Código?
Clase de vulnerabilidades en la que datos proporcionados por el atacante se interpretan y ejecutan como código de la aplicación, permitiendo ejecución arbitraria.
¿Cómo funciona Inyección de Código?
La inyección de código es la familia amplia de fallos en los que entrada no confiable se incorpora a algo que la aplicación trata más tarde como código, configuración o marcado, provocando que el runtime lo ejecute. Casos concretos incluyen inyecciones basadas en eval en JavaScript y Python, inyección de plantillas del servidor, inyecciones de lenguajes de expresión (OGNL, SpEL), deserialización insegura que dispara cadenas de gadgets, y carga dinámica de clases desde datos del usuario. Una explotación exitosa suele dar ejecución remota con la identidad de la aplicación, paso previo a comprometer todo el host o clúster. Las defensas incluyen no construir código a partir de la entrada, APIs parametrizadas, restringir funciones dinámicas y aplicar mínimos privilegios y sandboxing.
¿Cómo defenderse de Inyección de Código?
Las defensas contra Inyección de Código combinan habitualmente controles técnicos y prácticas operativas, como se detalla en la definición.
¿Cuáles son otros nombres para Inyección de Código?
Nombres alternativos comunes: Ejecución remota de código, Ejecución de código arbitrario.
● Términos relacionados
- attacks№ 392
Inyección en eval
Caso particular de inyección de código causado por pasar entrada no confiable a primitivas de evaluación dinámica como eval() de JavaScript o eval/exec de Python.
- attacks№ 202
Inyección de comandos
Ataque en el que la entrada del usuario se pasa sin saneamiento a un intérprete del sistema, haciendo que la aplicación ejecute comandos proporcionados por el atacante.
- attacks№ 1084
Inyección SQL
Ataque de inyección de código que incrusta SQL controlado por el atacante en una consulta a la base de datos para leer, modificar o destruir datos.
- attacks№ 1009
Inyección de plantillas del lado del servidor
Ataque que inyecta sintaxis del motor de plantillas en entradas no fiables, provocando ejecución de código en el servidor cuando la plantilla se renderiza.
- vulnerabilities№ 539
Deserialización insegura
Vulnerabilidad en la que una aplicación deserializa datos no confiables, permitiendo al atacante instanciar objetos arbitrarios y, a menudo, lograr ejecución remota de código.
● Véase también
- № 808Exploit en PDF