Una vulnerabilidad denominada HollowByte permite a atacantes no autenticados provocar una condición de denegación de servicio (DoS) en servidores OpenSSL con una carga útil maliciosa de solo 11 bytes. El equipo de OpenSSL ha corregido silenciosamente la vulnerabilidad (sin identificador asignado) y ha retroportado el parche a versiones anteriores. Dado que OpenSSL es la base fundamental para la comunicación segura en Internet, las organizaciones deberían priorizar la actualización a una versión corregida de la biblioteca.
Detalles de HollowByte
En un aviso a principios de esta semana, el equipo rojo de Okta describió cómo funciona la vulnerabilidad de DoS HollowByte y su impacto en un escenario real. Los investigadores explican que en un handshake TLS, cada mensaje tiene un encabezado de 4 bytes que declara el tamaño del mensaje entrante. Sin embargo, las versiones vulnerables de OpenSSL asignan la longitud declarada antes de recibir la carga útil y verificar su tamaño.
Cada mensaje de handshake TLS comienza con un encabezado de handshake de 4 bytes, donde un campo de longitud de tres bytes revela el tamaño de los datos de handshake que deben seguir. Sin validar la carga útil, el servidor confía en las afirmaciones del paquete y asigna la memoria indicada. "El hilo de trabajo entonces se bloquea, esperando indefinidamente datos que nunca llegarán", explica Okta.
Un atacante no autenticado puede desencadenar HollowByte abriendo una conexión TLS y enviando una entrada maliciosa de 11 bytes con un encabezado que declara que seguirá un cuerpo de mensaje mucho más grande. El atacante repite el mismo proceso en múltiples conexiones, haciendo que el servidor asigne cantidades considerables de memoria mediante un volumen de datos transmitidos relativamente pequeño.
Los investigadores de Okta señalan que, aunque OpenSSL libera los búferes cuando una conexión se cae, la Biblioteca GNU C (glibc) maneja la memoria de manera diferente y "no devuelve inmediatamente las asignaciones pequeñas a medianas al sistema operativo; las mantiene para posible reutilización". "Al lanzar oleadas de conexiones con tamaños reclamados aleatorizados, un atacante impide que el asignador reutilice esos fragmentos liberados", dice Okta. "El heap se fragmenta fuertemente, causando que el Resident Set Size (RSS) del servidor aumente continuamente. Incluso después de que el atacante se desconecta, el servidor permanece permanentemente inflado". La única forma de recuperar completamente el espacio es reiniciar el proceso.
Impacto y correcciones
La biblioteca OpenSSL de código abierto está integrada en proyectos de software populares como los servidores web NGINX y Apache, los entornos de ejecución de lenguajes (por ejemplo, Node.js, Python, Ruby, PHP) y las bases de datos (MySQL, PostgreSQL). Viene preinstalada en la mayoría de las distribuciones de Linux para el cifrado TLS y el manejo de certificados.
En las pruebas de Okta con NGINX, se mostró que los entornos de baja capacidad pueden agotarse fácilmente de memoria usando HollowByte, mientras que los servidores de mayor especificación pueden perder hasta el 25% de su memoria mientras el ancho de banda del ataque permanece por debajo de los umbrales de alerta de seguridad. Aunque las fallas de DoS se consideran menos graves que las vulnerabilidades que permiten el robo de datos o la ejecución de código, pueden causar interrupciones operativas y daños reputacionales.
El problema de DoS HollowByte se ha corregido en OpenSSL 4.0.1 y se ha retroportado a las versiones 3.6.3, 3.5.7, 3.4.6 y 3.0.21, que ahora crecen el búfer solo cuando llegan los datos, ignorando las afirmaciones del encabezado. A pesar de haber sido tratado como una "corrección de endurecimiento" y no como una vulnerabilidad de seguridad, Okta recomienda "actualizar los paquetes de OpenSSL de su distribución inmediatamente".


















Deja una respuesta