Un fallo crítico en el escáner de vulnerabilidades de código abierto Nuclei, ahora corregido, permitía a los atacantes evadir la verificación de firmas y ejecutar código malicioso a través de plantillas modificadas en sistemas locales.
Qué es Nuclei y cómo funciona
Nuclei, desarrollado por ProjectDiscovery, es una herramienta de código abierto ampliamente utilizada para escanear sitios web en busca de vulnerabilidades y configuraciones erróneas. Su sistema de escaneo se basa en más de 10,000 plantillas en formato YAML, diseñadas para identificar vulnerabilidades conocidas, archivos de configuración expuestos, webshells y puertas traseras.
Además, estas plantillas incluyen un protocolo de código que permite ejecutar comandos o scripts localmente, ampliando su funcionalidad.
Cada plantilla está “firmada” con un hash de resumen (“digest hash”) que Nuclei utiliza para verificar que no ha sido modificada con código malicioso. Esta firma se encuentra al final de las plantillas en la forma:
# digest: <hash>
La vulnerabilidad CVE-2024-43405
Investigadores de Wiz descubrieron una vulnerabilidad, identificada como CVE-2024-43405, que permite evadir la verificación de firmas de Nuclei incluso cuando una plantilla ha sido modificada con contenido malicioso.
El problema radica en la forma en que el sistema de verificación basado en expresiones regulares de Go interpreta los saltos de línea (“\r”) en comparación con el analizador YAML. Mientras que Go trata “\r” como parte de la misma línea, el analizador YAML lo interpreta como un salto de línea. Este desajuste permite inyectar contenido malicioso que evade la verificación de firmas pero se ejecuta cuando es procesado por el analizador YAML.
Otro aspecto de la vulnerabilidad es que Nuclei solo verifica la primera ocurrencia de “# digest:” en una plantilla, ignorando cualquier línea adicional. Los atacantes pueden aprovechar esto añadiendo líneas de “# digest:” maliciosas después del hash válido inicial, lo que permite la ejecución de secciones de código malicioso.
Impacto y demostración del ataque
Guy Goldenberg, investigador de Wiz, explicó cómo explotaron este desajuste entre las interpretaciones de saltos de línea. “Armados con conocimientos sobre las discrepancias en la interpretación de líneas, creamos una plantilla que explota esta disparidad entre la implementación regex de Go y el analizador YAML,” afirmó Goldenberg.
El resultado fue un ataque en el que el hash malicioso evadía la verificación y se ejecutaba al ser procesado.
Solución y recomendaciones
Wiz informó responsablemente sobre esta vulnerabilidad a ProjectDiscovery el 14 de agosto de 2024, y el problema fue solucionado en la versión 3.3.2 de Nuclei, lanzada el 4 de septiembre de 2024.
Acciones recomendadas:
- Actualizar a la versión 3.3.2 o superior: Si estás utilizando versiones anteriores de Nuclei, actualiza de inmediato para mitigar este riesgo.
- Usar entornos aislados: Ejecuta Nuclei en una máquina virtual o en un entorno aislado para minimizar el impacto de posibles plantillas maliciosas.
- Auditar plantillas personalizadas: Revisa cuidadosamente cualquier plantilla personalizada para detectar código sospechoso o hashes alterados.
Conclusión
Este incidente destaca la importancia de garantizar la seguridad de herramientas de código abierto que se utilizan ampliamente en la evaluación de vulnerabilidades. Actualizar herramientas y seguir buenas prácticas operativas son pasos esenciales para proteger los sistemas y evitar posibles ataques derivados de vulnerabilidades como esta. La seguridad es un esfuerzo continuo, y cada organización debe mantenerse alerta frente a nuevas amenazas.