CVE-2021-41773: path traversal en Apache 2.4.49, comprobar y corregir
Última actualización:
Apache HTTP Server 2.4.49 cambió la forma de normalizar las rutas, y el cambio dejaba pasar un punto codificado (%2e). Una petición con segmentos .%2e/ en la ruta podía así llegar a archivos fuera de las carpetas que mapea la configuración. Con CGI activado en una de esas carpetas, el mismo truco ejecuta programas en el servidor.
Solo está afectada la versión 2.4.49. Su corrección, 2.4.50, también era incompleta (CVE-2021-42013), así que la versión que hay que usar es 2.4.51 o posterior.
De un vistazo
- CVE
- CVE-2021-41773
- Software
- Apache HTTP Server
- Versiones afectadas
- Solo 2.4.49
- Corregida en
- 2.4.50 (incompleta, ver CVE-2021-42013); actualiza a 2.4.51 o posterior
- Puntuación CVSS
- 9.8 Crítica (NVD, CVSS 3.1) ·
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - CISA Known Exploited Vulnerabilities
- Sí, añadida el 3 de noviembre de 2021
- Publicada por NVD
- 5 de octubre de 2021
- Parche virtual de InfraFence
vp-cve-2021-41773(ModSecurity id 9920001)
Qué está afectado
Apache 2.4.49 fue la versión actual durante unas tres semanas, entre septiembre y octubre de 2021. Hoy se encuentra sobre todo en servidores compilados desde el código fuente, en imágenes de contenedor de esa época o en sistemas que no se han actualizado desde entonces. La divulgación de archivos solo funciona donde los archivos fuera de las carpetas mapeadas no están protegidos por el Require all denied predeterminado en <Directory />; la ejecución de código necesita además CGI (mod_cgi o mod_cgid) en una carpeta con alias.
Comprobar si un servidor es vulnerable
Comprueba primero la versión:
apache2 -vhttpd -v/usr/local/apache2/bin/httpd -vCualquier versión distinta de Apache/2.4.49 o Apache/2.4.50 no está afectada por esta vulnerabilidad. En esas dos versiones, comprueba la configuración de la raíz del sistema de archivos, que debe denegar el acceso, y si hay un módulo CGI cargado:
sudo grep -rn -A3 '<Directory />' /etc/apache2/ /etc/httpd/ /usr/local/apache2/conf/ 2>/dev/nullsudo apachectl -M 2>/dev/null | grep -i cgiLos intentos dejan puntos codificados en los logs de acceso:
sudo grep -rhiE '\.%2e/|%2e\./|%2e%2e/|%%32%65|\.%%32' --include='*access*' --exclude='*.gz' /var/log/apache2 /var/log/httpd 2>/dev/null | tail -20Corregirlo
Actualiza a 2.4.51 o posterior. Con el paquete de tu distribución (la actualización reinicia Apache: elige un momento tranquilo):
sudo apt-get update
sudo apt-get install --only-upgrade apache2
apache2 -vsudo dnf upgrade httpd
httpd -vUn servidor compilado desde el código fuente necesita una nueva compilación de la versión 2.4 actual; un contenedor necesita una imagen nueva. Después asegúrate de que la raíz del sistema de archivos deniega el acceso, como en la configuración predeterminada, y recarga:
<Directory />
AllowOverride None
Require all denied
</Directory>sudo apachectl configtest && sudo apachectl gracefulAtención: Si los logs muestran peticiones con éxito (estado 200) con puntos codificados, trata el servidor como comprometido: archivos como /etc/passwd o configuraciones con contraseñas pueden haberse leído y, con CGI, puede haberse ejecutado un programa.
Cómo la bloquea InfraFence mientras actualizas
El parche virtual para CVE-2021-41773 es una regla ModSecurity sobre la ruta sin procesar de la petición, antes de que Apache la decodifique: bloquea una ruta con un punto codificado junto a un punto (.%2e, %2e., %2e%2e) seguido de una barra, normal o codificada. Las URL normales nunca contienen esa secuencia.
Cómo se aplica el parche
- El agente anota qué puertos SSH y qué sitios responden.
- Escribe la regla (id de ModSecurity 9920001) entre sus propios marcadores en su archivo de ModSecurity, ejecuta
apachectl configtesty recarga Apache de forma ordenada. Si la prueba falla, vuelve a poner el archivo anterior. - Comprueba que SSH y los sitios siguen respondiendo, y quita el parche si no es así.
- Comprueba que ModSecurity bloquea de verdad con la regla, con una petición de prueba local inofensiva. Un ModSecurity en
DetectionOnlysolo registra: en ese caso el parche se quita y se notifica como ineficaz, nunca como aplicado.
Cada petición que bloquea el parche se notifica con CVE-2021-41773 (agente 1.0.37 o posterior): ves los intentos en la actividad del servidor y en la página Explotación del panel, así sabes que están probando la vulnerabilidad contra ti.
Atención: Un parche virtual bloquea la forma conocida del ataque en las peticiones que pasan por Apache en ese servidor. No sustituye a la actualización: instala la versión corregida y después quita el parche desde Actividad con Deshacer si ya no lo necesitas.
Los parches virtuales necesitan Apache con ModSecurity, el ajuste Permitir cambios en la configuración del servidor web y ningún panel de hosting ni herramienta de gestión de la configuración a cargo del servidor web; forman parte del plan Pro y de AutoMode. Los aplica una persona desde el análisis con IA, o AutoMode. Consulta Parches virtuales.
Fuentes
Los datos de esta página vienen de estas fuentes; consúltalas por si hay cambios.
Pruébalo gratis en 1 servidor
Starter es gratuito para un servidor, con protección completa y bloqueo automático. Sin tarjeta de crédito.
Instala el agente como root, con tu token en lugar de <TOKEN>:
curl -fsSL https://github.com/infrafence/infrafence-agent/releases/latest/download/install.sh | sudo bash -s -- --token <TOKEN>El token se crea en el panel, en Servidores › Añadir servidor.
