Rompiendo Math.random(): Un algoritmo mejorado para invertir Xorshift128+

2025-09-04
Rompiendo Math.random(): Un algoritmo mejorado para invertir Xorshift128+

La reciente vulnerabilidad CVE-2025-7783 explota un caso límite en el ecosistema de Node.js, afectando a aplicaciones que usan axios o la biblioteca request obsoleta. El ataque requiere cinco salidas consecutivas de Math.random() de JavaScript, permitiendo la predicción de salidas futuras usando el solucionador z3. Esta publicación de blog presenta un enfoque más eficiente. El autor demuestra un algoritmo de 226 operaciones para invertir el algoritmo Xorshift128+ usado por Math.random(), requiriendo solo dos salidas completas de 64 bits. Al analizar Xorshift128+, conocer solo los 26 bits menos significativos de R1 permite determinar los bits restantes de L1 y R2. La publicación también discute la adaptación de esto a la función Math.random() completa, destacando los desafíos debido al truncamiento de bits y proponiendo una solución usando tres salidas. Finalmente, el autor comparte su experiencia usando ChatGPT para la investigación, observando su potencial mientras reconoce las limitaciones actuales.

Desarrollo