Log Poisoning
🌐 Vulnerabilidad: Log Poisoning (Envenenamiento de Registros)
🕵️♂️ ¿Qué es Log Poisoning?
Log Poisoning es una vulnerabilidad en la que un atacante manipula las entradas registradas en los archivos de registro (logs) de una aplicación para inyectar contenido malicioso. Este contenido puede incluir scripts o comandos que se ejecuten si los logs son procesados de manera insegura o utilizados en otros contextos (como visualización, análisis o carga en otra aplicación).
⚙️ ¿Cómo se produce?
Falta de sanitización en los datos de entrada:
La aplicación registra directamente las entradas del usuario en los logs.
Inyección de código o comandos maliciosos:
El atacante manipula entradas para incluir código malicioso.
Ejecución de los logs comprometidos:
Cuando los logs se procesan sin validación, el código malicioso puede ejecutarse.
🛠️ Mecanismo de ataque
Ejemplo: Una aplicación web registra la dirección IP de los usuarios en un archivo de logs:
El atacante envía una solicitud modificada para que la dirección IP registrada sea:
El log ahora contiene:
Si estos logs son leídos y procesados por un sistema que ejecuta código PHP, el comando cat /etc/passwd
se ejecutará, exponiendo información confidencial.
🎯 Impacto
Ejecución de código remoto (RCE): Si los logs se procesan como código, el atacante puede ejecutar comandos en el servidor.
Inyección de scripts: Scripts maliciosos pueden inyectarse en las herramientas de monitoreo o visualización de logs.
Manipulación de datos: Un atacante puede insertar datos falsos para ocultar sus actividades.
Escalamiento de privilegios: En sistemas que procesan logs como entradas válidas para otras operaciones.
📉 Puntaje CVSS v3
Vector de ataque: Red
Complejidad del ataque: Media
Impacto en confidencialidad: Alto
Impacto en integridad: Alto
Impacto en disponibilidad: Medio
Puntaje CVSS v3: 7.5 - 9.0 (Alto - Crítico) 🔥
🧑💻 Ejemplo práctico
Código vulnerable:
Ataque: El atacante envía como username
:
Log generado:
📌 Si los logs se muestran en una interfaz web sin sanitización, este código se ejecutará en el navegador, generando un ataque XSS.
🛡️ ¿Cómo prevenir Log Poisoning?
1️⃣ Sanitización de entradas
Limpia todas las entradas antes de registrarlas en los logs:
2️⃣ Uso de formatos seguros
Asegúrate de que los logs no se procesen como código ejecutable. Por ejemplo:
Usa texto plano para registros en lugar de formatos interpretables como JSON o XML.
Si usas JSON, escapa caracteres especiales:
3️⃣ Separación de responsabilidades
Evita que los mismos sistemas que registran datos sean responsables de procesarlos. Usa herramientas específicas para análisis de logs con validación adicional.
4️⃣ Restricciones de acceso a los logs
Asegúrate de que los archivos de logs solo sean accesibles por usuarios autorizados:
5️⃣ Auditoría y monitoreo de logs
Revisa periódicamente los logs para identificar patrones sospechosos o entradas maliciosas.
6️⃣ Deshabilitar ejecución de scripts en directorios de logs
Configura el servidor para que no ejecute scripts almacenados en directorios de logs. Por ejemplo, en Apache:
7️⃣ Uso de herramientas seguras de manejo de logs
Usa bibliotecas o frameworks que manejen los logs de manera segura:
Monolog en PHP.
Winston en Node.js.
Log4j (configurado correctamente) en Java.
💡 Dato extra: Aunque Log Poisoning no siempre lleva directamente a una explotación, puede ser un paso inicial en un ataque más complejo, como RCE, XSS, o manipulación de análisis forense.
🚨 Nota importante: La vulnerabilidad puede combinarse con otras fallas, como LFI (Local File Inclusion), para ejecutar código desde los logs.
Última actualización
¿Te fue útil?