Una falla en los núcleos permite a los modelos maliciosos eludir la verificación de firmas

Nuclei

Núcleos

Una vulnerabilidad ahora parcheada en el escáner de vulnerabilidades de código abierto Nuclei podría permitir a los atacantes eludir la verificación de firmas mientras insertan código malicioso en modelos que se ejecutan en sistemas locales.

Nuclei es un popular escáner de vulnerabilidades de código abierto creado por ProjectDiscovery que escanea sitios web en busca de vulnerabilidades y otras debilidades.

El proyecto utiliza un sistema de escaneo basado en plantillas de más de 10,000 modelos YAML que escanean sitios web en busca de vulnerabilidades conocidas, configuraciones incorrectas, archivos de configuración expuestos, shells web y puertas traseras.

Las plantillas YAML también incluyen un protocolo de código que se puede utilizar para ejecutar comandos o scripts localmente en un dispositivo que amplía la funcionalidad de un modelo.

Cada modelo está «firmado» con un hash de resumen que Nuclei utiliza para verificar que el modelo no haya sido modificado para incluir código malicioso.

Este hash de resumen se agrega al final de los modelos en forma de:


# digest: <hash>

La falla elude la verificación de la firma de Nuclei

un nuevo Núcleos La vulnerabilidad rastreada como CVE-2024-43405 fue descubierta por investigadores de Wiz que omite la verificación de firma de Nuclei incluso si se modifica una plantilla para incluir código malicioso.

La falla es causada por la verificación de firmas basada en expresiones regulares de Go y la forma en que el analizador YAML maneja los saltos de línea durante la verificación de firmas.

Al verificar una firma, la lógica de verificación de Go procesa \r como parte de la misma línea. Sin embargo, el analizador YAML lo interpreta como un salto de línea. Esta falta de coincidencia permite a los atacantes inyectar contenido malicioso que elude la verificación pero que aún se ejecuta cuando lo procesa el analizador YAML.

Otro problema es cómo Nuclei maneja múltiples # digest: líneas de firma, porque el proceso solo verifica la primera aparición de #digest: en un patrón, ignorando todas las demás apariciones encontradas más adelante en el patrón.

Esto se puede aprovechar añadiendo cargas útiles «#digest:» maliciosas adicionales después del resumen válido inicial que contengan una sección de «código» malicioso, que luego se inyecta y ejecuta cuando se utiliza la plantilla.

«Armados con nuestro conocimiento de interpretaciones de nuevas líneas incompatibles, creamos un modelo que explota la disparidad entre la implementación de expresiones regulares de Go y el analizador YAML», explica el investigador de Wiz Guy Goldenberg.

«Al usar \r como nueva línea, podemos incluir una segunda línea #digest: en la plantilla que escapa al proceso de verificación de firma pero que el intérprete YAML analiza y ejecuta».

Ejemplo de cómo diferentes analizadores analizan un modelo de Núcleos
Ejemplo de cómo diferentes analizadores analizan un modelo de Núcleos
Fuente: Wiz

Wiz reveló responsablemente la falla a ProjectDiscovery el 14 de agosto de 2024 y se solucionó en Nuclei v3.3.2 el 4 de septiembre.

Si está utilizando versiones anteriores de Nuclei, se recomienda encarecidamente actualizar a la última versión ahora que los detalles técnicos de este error se han divulgado públicamente.

Goldenberg también recomienda utilizar Nuclei en una máquina virtual o en un entorno aislado para evitar una posible explotación de plantillas maliciosas.