ModSecurity: qué revisar en tus servidores por CVE-2026-73857 y CVE-2026-104269

Ilustración de una terminal de administración junto al escudo de un cortafuegos de aplicaciones web

Si administras servidores con OWASP ModSecurity v3 (libmodsecurity) delante de Nginx, Apache u otro servidor web, hay dos avisos de gravedad alta que revisar. CVE-2026-73857, un fallo de memoria en el procesador XML, afecta a las versiones 3.0.15 y 3.0.16 y se corrige en la 3.0.17. CVE-2026-104269 permite saltarse las reglas de nombres de archivo en subidas multipart y todavía no tiene parche, así que hay que mitigarlo por otras vías. OpenSecurity ha explicado ambos fallos; aquí va la parte práctica.

Las claves de los avisos de ModSecurity en 30 segundos

  • CVE-2026-73857 (CVSS 7,5): libmodsecurity 3.0.15 y 3.0.16, solo con SecParseXmlIntoArgs activado.
  • Se corrige actualizando a libmodsecurity 3.0.17, publicada el 29/09/2026.
  • CVE-2026-104269 (CVSS 8,6): evasión de reglas de subida con filename*, sin parche.
  • Afecta sobre todo a aplicaciones en Go, Python, Node.js y Java; PHP nativo no.

Antes de tocar nada, conviene saber qué tienes. ModSecurity v2 (el módulo clásico de Apache) no está afectado por el fallo de XML, y el aviso del fallo de nombres de archivo se refiere a la rama 3.

Comprobar versión y configuración

La versión de libmodsecurity depende de cómo la instalaste. En distribuciones basadas en paquetes:

# Debian / Ubuntu
dpkg -l | grep -i modsecurity

# RHEL, AlmaLinux, Rocky
rpm -qa | grep -i modsecurity

# Compilada a mano: busca la librería
ls -l /usr/local/modsecurity/lib/libmodsecurity.so*Lenguaje del código: PHP (php)

Después, busca la directiva que habilita el código vulnerable de CVE-2026-73857. Si no aparece, está en su valor por defecto, Off, y el fallo no es alcanzable:

grep -Rni "SecParseXmlIntoArgs" /etc/nginx /etc/apache2 /etc/httpd /etc/modsecurity /usr/local/modsecurity 2>/dev/nullLenguaje del código: JavaScript (javascript)

Si devuelve On u OnlyArgs y tu versión es la 3.0.15 o la 3.0.16, tienes dos opciones: actualizar a la 3.0.17 o poner la directiva en Off hasta que puedas hacerlo. Tras cualquier cambio, valida la sintaxis y recarga el servidor (nginx -t && systemctl reload nginx, o apachectl configtest && systemctl reload apache2).

Mitigar la evasión con filename*

CVE-2026-104269 se aprovecha de que ModSecurity no entiende la sintaxis de la RFC 2231. Una cabecera como filename="safe.jpg"; filename*=UTF-8''shell.php pasa las reglas de extensiones de OWASP CRS (920120, 922100, 922110, entre otras), porque el WAF solo ve safe.jpg, mientras que Go, Flask/Werkzeug, FastAPI/Starlette, busboy, @fastify/multipart o Spring usan shell.php. Si tus aplicaciones son PHP nativo, este fallo no te afecta, porque PHP solo lee filename.

Sin parche disponible, la defensa real está en la aplicación: ignorar el nombre que manda el cliente y generar uno propio, validar la extensión con una lista de permitidas tras normalizar el nombre, comprobar el tipo real del contenido y guardar las subidas fuera del directorio público, sin permisos de ejecución. Como capa adicional, si tus aplicaciones no necesitan filename*, puedes rechazarlo en el WAF con una regla propia. Esta es una propuesta nuestra, no del aviso: comprueba que tu versión de libmodsecurity admite la variable MULTIPART_PART_HEADERS y pruébala primero con SecRuleEngine DetectionOnly:

SecRule MULTIPART_PART_HEADERS "@rx (?i)filename*s*=" 
    "id:1009901,phase:2,t:none,deny,status:400,log,
    msg:'RFC 2231 filename* no permitido (CVE-2026-104269)'"Lenguaje del código: PHP (php)

Revisa los registros unos días antes de pasarla a bloqueo: algunos clientes legítimos envían filename* para nombres con caracteres no ASCII, y bloquearlos puede romper subidas de usuarios con tildes o alfabetos no latinos.

Preguntas frecuentes

¿Cómo sé si estoy afectado por CVE-2026-73857?

Si usas libmodsecurity 3.0.15 o 3.0.16 y tienes SecParseXmlIntoArgs en On u OnlyArgs. Con la directiva en Off, el valor por defecto, el fallo no es alcanzable.

¿Qué versión debo instalar?

libmodsecurity 3.0.17, que corrige CVE-2026-73857. No corrige CVE-2026-104269, que sigue sin parche.

¿Sirve OWASP CRS para frenar CVE-2026-104269?

No por sí solo, porque las reglas de nombres de archivo ven el parámetro filename y no filename*. Hace falta validar en la aplicación o añadir una regla propia.

Fuentes:

Suscríbete al boletín SysAdmin

Este es tu recurso para las últimas noticias y consejos sobre administración de sistemas, Linux, Windows, cloud computing, seguridad de la nube, etc. Lo enviamos 2 días a la semana. Recuerda revisar tu email para confirmar la suscripción.

Scroll al inicio
×