Math.random() knacken: Ein verbesserter Algorithmus zum Invertieren von Xorshift128+

Die kürzlich entdeckte Schwachstelle CVE-2025-7783 nutzt einen Sonderfall im Node.js-Ökosystem aus und betrifft Anwendungen, die axios oder die veraltete request-Bibliothek verwenden. Der Angriff benötigt fünf aufeinanderfolgende Ausgaben von JavaScript's Math.random(), um zukünftige Ausgaben mit dem z3-Solver vorherzusagen. Dieser Blogbeitrag präsentiert einen effizienteren Ansatz. Der Autor demonstriert einen 226-Operationen-Algorithmus, um den von Math.random() verwendeten Xorshift128+-Algorithmus zu invertieren, wobei nur zwei vollständige 64-Bit-Ausgaben benötigt werden. Durch die Analyse von Xorshift128+ lässt sich durch Kenntnis der 26 niederwertigsten Bits von R1 die verbleibenden Bits von L1 und R2 bestimmen. Der Beitrag diskutiert auch die Anpassung an die vollständige Math.random()-Funktion, wobei die Herausforderungen durch Bit-Abschneiden hervorgehoben und eine Lösung mit drei Ausgaben vorgeschlagen wird. Abschließend teilt der Autor seine Erfahrungen mit der Verwendung von ChatGPT für die Forschung und beobachtet dessen Potenzial bei gleichzeitiger Anerkennung der aktuellen Grenzen.