Ataque Spectre en Cloudflare Workers
Investigadores de ciberseguridad han revelado un ataque remoto Spectre que afecta a Cloudflare Workers, permitiendo la filtración de un JSON Web Token (JWT) desde un Worker co-localizado en el entorno de producción, con una tasa de extracción de hasta 12 bits por segundo. Este nuevo método supera con creces la tasa de un ataque previo realizado en 2021, que alcanzaba solo 2 bits por minuto.
Detalles del ataque
El experimento realizado por los investigadores consistió en un Worker atacante y un Worker víctima, con el JWT intencionadamente almacenado en la memoria del Worker víctima. A pesar de la gravedad del ataque, Cloudflare ha afirmado que no se accedió a datos de clientes. Según la compañía, ya se han implementado medidas de mitigación en producción, mejorando el Dynamic Process Isolation (DyPrIs), integrando el V8 Sandbox y aplicando un aislamiento basado en Memory Protection Keys (MPK). No se han encontrado indicios de explotación activa en los últimos tres años.
Los investigadores señalaron que la implementación de DyPrIs en producción fue insuficiente. Cloudflare Workers opera el código de múltiples inquilinos en aislados V8 dentro del mismo proceso del sistema operativo, utilizando un aislamiento a nivel de lenguaje en lugar de un aislamiento de procesos estricto para reducir la latencia de inicio. Esto puede permitir la filtración entre inquilinos si se realiza una lectura de memoria dentro de un proceso compartido.
Requisitos del ataque
Para llevar a cabo el ataque, es necesario que los Workers atacante y víctima se encuentren co-localizados en diferentes aislados V8 dentro del mismo proceso de Worker. El atacante controla un código válido en su propio aislado. La ejecución de código nativo no forma parte del modelo de amenaza, y el ataque no depende de una explotación de software de V8 o de una fuga de sandbox.
Cloudflare ha implementado restricciones en las fuentes de temporización locales al congelar o reducir la granularidad de los temporizadores durante la ejecución de la CPU, evitando la exposición de memoria compartida o multihilo a los scripts de Worker. Sin embargo, los investigadores han descubierto que las comunicaciones WebSocket podrían proporcionar una fuente de temporización remota, mientras que los Durable Objects pueden mantener un aislado de Worker activo durante períodos prolongados.
Limitaciones y soluciones
El estudio destaca que el DyPrIs aísla scripts sospechosos en un proceso separado una vez que termina la invocación. Sin embargo, se detectó que una invocación de Durable Object de larga duración podía seguir ejecutándose antes de que se produjera el aislamiento. Además, se observó que la actividad de entrada/salida (I/O) intensiva en WebSocket aumentaba la actividad del instruction translation lookaside buffer (iTLB), lo que reducía la señal de mala predicción de rama utilizada por DyPrIs por debajo de su umbral de detección.
Los investigadores identificaron que la solución robusta de detección debería llevarse a cabo durante la ejecución y utilizar una señal que no pudiera ser suprimida por la actividad I/O. Las pruebas de producción se realizaron en servidores Linux utilizando procesadores AMD EPYC Zen 2 y Zen 3, realizando las mediciones en horas nocturnas, cuando la utilización de la CPU se encontraba entre el 10% y el 25%, para obtener los mejores resultados posibles.
Conclusiones
El informe reveló una tasa de filtración de hasta 12 bits por segundo con una precisión del 99.16%, en contraste con los 120 bits por hora del ataque anterior. Este descubrimiento llega casi cinco años después de que Cloudflare y TU Graz publicaran investigaciones sobre un ataque remoto Spectre contra Workers, introduciendo DyPrIs como defensa. Cloudflare ha publicado medidas adicionales para endurecer Workers en septiembre de 2025, que incluyen mejoras en la detección de DyPrIs, limitaciones en el acceso transitorio a punteros de 64 bits mediante el V8 Sandbox y el uso de aislamiento basado en MPK para proteger los montones de Worker.
Cloudflare ha indicado que los sistemas modernos x64 dejan disponibles unos 12 keys para este propósito, y su diseño combina estas claves con el V8 Sandbox y una disposición de memoria rotativa para evitar que los sandbox cercanos compartan una clave. La descripción de Cloudflare en septiembre de 2025 indicaba que la asignación aleatoria de MPK sola podría atrapar aproximadamente el 92% de los accesos entre aislados, y que la disposición rotativa más estricta se utiliza para eliminar esa brecha en el modelo de amenaza cubierto en sandbox.