Randar: Minecraft-Schwachstelle zum Knacken des Server-RNG mit LLL-Gitterreduktion
(github.com/spawnmason)Hier sind die wichtigsten Punkte aus der Randar-Erklärung und den Informationen, in Markdown zusammengefasst:
Überblick über den Randar-Exploit
- Randar ist ein Exploit für Minecraft-Versionen von Beta 1.8 bis 1.12.2, der die Positionen anderer Spieler offenlegen kann, indem das fälschlich wiederverwendete
java.util.Randomauf dem Minecraft-Server geknackt wird - Er nutzt LLL-Gitterreduktion, um den internen Zustand des RNG anhand der exakten Koordinaten fallengelassener Items beim Abbau eines Blocks zu bestimmen
- Der Exploit wurde am 7. Oktober 2022 von n0pf0x (pcm1k) entdeckt
So funktioniert der Randar-Exploit
- Der Minecraft-Code verwendet das RNG irrtümlich sowohl für die Terrain-Generierung (wie Woodland Mansions) als auch für Aktionen im Spiel (wie das Abbauen von Blöcken) erneut
- Wenn ein Chunk geladen wird, prüft er auf Strukturen wie Woodland Mansions und setzt dabei den RNG-Seed anhand der Chunk-Koordinaten zurück
- Wenn ein Spieler kurz darauf einen Block abbaut, werden die Koordinaten des fallengelassenen Items durch den RNG-Zustand bestimmt
- Mithilfe von Gitterreduktion lässt sich aus den Koordinaten der Item-Drops der exakte interne Zustand des RNG bestimmen
- Wenn man den RNG-Zustand rückwärts verfolgt, lassen sich die Koordinaten des zuletzt geladenen Chunks ermitteln, wodurch die Position eines Spielers offengelegt wird
Schutz von Stashes vor Randar
- Das Bauen von Stashes in bestimmten „Täuschungs“-Woodland-Regionen, in denen sich eine weitere Region innerhalb von 4 RNG-Schritten befindet, kann Exploiter täuschen
- Zusätzlichen Schutz bietet es, wenn sich der gesamte Stash innerhalb der Region befindet und ein AFK-Account beim Köder positioniert wird
Vollständiger Exploit-Code und Patching
- Der vollständige Java-Code zum Knacken des RNG-Zustands aus den Koordinaten von Item-Drops und zum Rückwärtsschreiten, um Spielerpositionen zu finden, wird bereitgestellt
- Für Minecraft-Server, die noch auf anfälligen Versionen laufen, besteht der Patch darin, die Funktion
World.setRandomSeed()so zu ändern, dass für die Weltgenerierung eine separate RNG-Instanz verwendet wird
Zusätzliche Hinweise von n0pf0x
- n0pf0x verwendete ein Caching-System für schnellere Seed-zu-Koordinaten-Lookups im Vergleich zum GPU-Hashmap-Ansatz von Mason
- Es werden Techniken beschrieben, um Treffer in der Dimension The End zu verfolgen, was schwieriger ist, da Chunks das RNG dort nur bei der ersten Generierung beeinflussen
- Ein „End Occupancy Tracker“ schätzt anhand der RNG-Aufrufe pro Tick, welche Spieler sich in The End befinden, um besser zu identifizieren, wer bestimmte Treffer verursacht hat
Meinung von GN⁺
- Randar ist ein schwerwiegender Exploit, da sich durch die Ermittlung des Seeds die Positionen von Spielern über die gesamte Welt hinweg offenlegen lassen. Auf Servern, die weder auf 1.13 aktualisiert noch gepatcht wurden, kann dies eine erhebliche Bedrohung darstellen
- Besonders auf Anarchy-Servern, auf denen Hacking erlaubt ist, ist das Missbrauchspotenzial als Cheat-Tool groß, weshalb dringend Gegenmaßnahmen erforderlich scheinen
- Die Verwendung eines einzigen RNG für die gesamte Welt mag der Bequemlichkeit gedient haben, wirkt bei Entdeckung einer Schwachstelle jedoch wie ein struktureller Fehler, der das gesamte Spiel betreffen kann. Bereiche, die vorhersehbare und wiederholbare Seeds benötigen, sollten besser mit separaten RNGs verwaltet werden
- Da sich dies jedoch auch aus PoC-Replays von Versionen vor 1.12 ableiten lässt, sollte rückblickend geprüft werden, ob in früheren Replays wichtige Stützpunkte offengelegt wurden
- Nicht nur bei Minecraft, sondern auch in anderen Spielen wurden bereits Schwachstellen durch wiederverwendete Seeds entdeckt. Seeds oder RNGs, die in Kernsystemen eines Spiels verwendet werden, erfordern besondere Sorgfalt. Geprüft werden sollten die Periode des Pseudozufalls, die Zufälligkeit des Seeds und die Wiederverwendung von Seeds
1 Kommentare
Hacker-News-Kommentare
Hier sind die wichtigsten Punkte aus den Hacker-News-Kommentaren zusammengefasst:
Beim „International RoShamBo Programming Competition“ 1999–2000 gewann ein Bot namens „Nostradamus“, indem er den Zustand des Zufallszahlengenerators zurückrechnete und so die Züge eines zufälligen Basis-Bots mit 100% Genauigkeit vorhersagte.
Die LLL-Gitterreduktion, derselbe Algorithmus, der im Bot „Nostradamus“ verwendet wurde, kann auch zum Knacken von PuTTY-Schlüsseln aus verzerrten Nonces genutzt werden, wie in einem aktuellen Hacker-News-Kommentar von „tptacek“ erklärt wurde.
Der SciCraft-Minecraft-Server nutzte ein ausgeklügeltes Setup, um den RNG-Zustand des Spiels deterministisch zu manipulieren und so in jedem Frame „zufällige“ Blitzeinschläge für bessere Item-Drops auszulösen, wie in einem YouTube-Video demonstriert wird.
Einige Kommentatoren finden diesen Exploit zugleich faszinierend und warnend, da er die Risiken verdeutlicht, die entstehen, wenn Zufallsquellen im Code miteinander interagieren. Er gilt als einer der ausgefeiltesten Exploits mit dem geringsten Ertrag.
Die Idee eines „Free-for-all-Servers zum Bug-Missbrauch“ in Minecraft wird damit verglichen, wie echte Kämpfe in einem hypothetischen Metaverse aussehen könnten.
Die Minecraft-Modding-/Hacking-Community wird für ihre technische Raffinesse gelobt; in einem weiteren YouTube-Video wird beeindruckendes In-Game-RNG-Cracking gezeigt.
Die RNG-Manipulation wird mit Phasenraumdiagrammen eines schwachen TCP-ISN-RNG verglichen.
Einige Spieler mögen die „Anarchy“-Server in Minecraft wie 2b2t und halten sie für die Art, wie das Spiel eigentlich gespielt werden sollte, auch wenn die Server manchmal zu populär werden.
Ein Kommentator ist neugierig auf den beruflichen Hintergrund eines bekannten Minecraft-Game-Hackers namens Leijurv und vermutet angesichts seiner beeindruckenden Fähigkeiten, dass er vielleicht in der Informationssicherheit oder im algorithmischen Handel arbeitet.