Dia 0 hasta en el CSS, analisis de la vulnerabilidad CVE-2026–2441
Siempre he hecho la broma de que salen Day 0 hasta en el CSS; que ya nada es seguro y que cada semana hay leaks de información y vulnerabilidades a cascoporro.
Pues bien, ya ha llegado el día. El día en el que estamos todos jodidos. Hoy es el día en el que os vengo a decir que se ha cumplido: hay un Day 0 en el CSS.
Y encima es una vulnerabilidad activa y explotada en la actualidad: la CVE-2026–2441. Afecta a cómo Chrome parsea los CSS. Mientras vas actualizándolo, o pasándote a Firefox, o a cualquier otra cosa, te voy explicando cómo funciona el tema:
Análisis de la vulnerabilidad: CVE-2026–2441
- Severidad: Alta (CVSS 8.8)
- Estado: Explotación activa (Zero-Day)
- Descubridor: Shaheen Fazim (Reportado el 11 de febrero de 2026)
- Versiones afectadas: Versiones de Chrome anteriores a la 145.0.7632.75 (Windows/macOS) y 144.0.7559.75 (Linux).
Según la Base de Datos Nacional de Vulnerabilidades (NVD), el fallo permite que un atacante remoto “ejecute código arbitrario dentro de un sandbox a través de una página HTML manipulada”.
Para entender cómo funciona este hack, hay que entender el error de base: el UAF (Use-After-Free). Chrome está escrito en C++, lenguaje en el cual la gestión de la memoria depende de los desarrolladores. Esto por sí mismo no tiene nada de malo, siempre y cuando se tenga en cuenta y se sepa gestionar correctamente.
El vector de ataque: CSS y @font-feature-values
Aquí está el meollo. Normalmente se usa @font-feature-values para dar nombres entendibles a fuentes. Con un ejemplo lo veremos algo más claro:
@font-feature-values "VayaFuente" {
@styleset {
elegante: 42; /* Ahora el número 42 se llama "elegante" */
}
}
h1 {
font-family: "VayaFuente";
font-variant-alternates: styleset(elegante); /* Mucho más elegante de leer, ¿no? */
}
No discuto que pueda tener sus utilidades pero, hasta la fecha, la mayor ha sido servir como vector de ataque. Para gestionar esto, Chrome crea un “Map” (un mapa de datos) sobre el cual el navegador itera para ir aplicando los estilos.
Aquí llegamos a nuestra “Race Condition”: el exploit aprovecha un descuido en cómo Chrome recorre ese mapa de reglas de fuentes. Esta vulnerabilidad existe porque el código utiliza una referencia directa del mapa mientras se itera, sin prever que este puede ser modificado durante el proceso.
Así, el atacante crea una web que configura este mapa e inmediatamente lanza un evento de JavaScript que lo elimina mientras se está procesando. Como el bucle (loop) mantiene una referencia que sigue apuntando a la dirección de memoria donde debería estar esa norma, el atacante puede llenar esa memoria vacía con su código malicioso. Una vez que el bucle continúa, se ejecuta el ataque.
El parche es bastante elegante, pero obvio: se crea una copia de la información antes de trabajar con ella. Así, el atacante ya no puede eliminar la información a mitad del proceso ni ejecutar su código.
Podríamos decir que “esto con Rust no pasa”, pero tampoco quiero ser uno de esos brasas que trata a Rust como la segunda venida de Cristo.
Fuentes:
- Fuente original: Reporte de seguridad de Chrome
- ID de la vulnerabilidad: CVE-2026–2441
- Noticia en infosecwriteups Infowriteups