Randar : une vulnérabilité Minecraft permettant de casser le RNG du serveur à l’aide de la réduction de réseau LLL
(github.com/spawnmason)Voici les points clés de l’explication et des informations sur Randar, résumés au format Markdown :
Vue d’ensemble de l’exploit Randar
- Randar est un exploit pour les versions de Minecraft allant de Beta 1.8 à 1.12.2, qui peut révéler l’emplacement d’autres joueurs en cassant le
java.util.Randomréutilisé de manière incorrecte dans le serveur Minecraft - Il fonctionne en utilisant la réduction de réseau LLL pour déterminer l’état interne du RNG à partir des coordonnées précises des objets lâchés lorsqu’un bloc est cassé
- L’exploit a été découvert par n0pf0x (pcm1k) le 7 octobre 2022
Fonctionnement de l’exploit Randar
- Le code de Minecraft réutilise par erreur le RNG entre la génération du terrain (comme les Woodland Mansions) et les actions en jeu (comme miner des blocs)
- Lorsqu’un chunk est chargé, il vérifie la présence de structures comme les Woodland Mansions, en réinitialisant la seed du RNG à partir des coordonnées du chunk
- Lorsqu’un joueur mine un bloc peu après, les coordonnées de l’objet lâché sont déterminées par l’état du RNG
- En utilisant la réduction de réseau, il est possible de déterminer l’état interne exact du RNG à partir des coordonnées des objets lâchés
- En remontant l’état du RNG, on peut retrouver les coordonnées du chunk chargé le plus récemment, ce qui expose la position d’un joueur
Protéger les stashes contre Randar
- Construire des stashes dans des régions « leurres » spécifiques de Woodland, où une autre région se trouve à moins de 4 étapes de RNG, peut tromper les exploitants
- Veiller à ce que l’intégralité du stash soit dans la région et laisser un compte AFK au niveau du leurre offre une protection supplémentaire
Code complet de l’exploit et correctif
- Le code Java complet permettant de casser l’état du RNG à partir des coordonnées de drop d’objets et de remonter jusqu’aux positions des joueurs est fourni
- Pour les serveurs Minecraft encore sur des versions vulnérables, le correctif consiste à modifier la fonction
World.setRandomSeed()afin d’utiliser une instance de RNG distincte pour la génération du monde
Notes complémentaires de n0pf0x
- n0pf0x a utilisé un système de cache pour accélérer la recherche seed-vers-coordonnées, par rapport à l’approche de hashmap GPU de Mason
- Des techniques sont décrites pour suivre les hits dans la dimension The End, ce qui est plus délicat puisque les chunks n’affectent le RNG que lors de leur première génération
- Un « End Occupancy Tracker » estime quels joueurs se trouvent dans The End à partir des appels RNG par tick afin d’aider à identifier qui a provoqué certains hits
Avis de GN⁺
- Randar est un exploit grave, car il permet de retrouver la seed et de divulguer la position des joueurs à l’échelle de tout le monde. Sur un serveur qui n’a pas été mis à jour en 1.13 ou corrigé, cela peut constituer une menace majeure
- En particulier sur les serveurs anarchy qui autorisent le hacking, le risque d’abus via des outils de triche paraît élevé, ce qui rend urgente la mise en place de contre-mesures
- L’utilisation d’un RNG unique appliqué à l’échelle de tout le monde relevait sans doute d’un choix de commodité, mais cela ressemble à un défaut structurel pouvant affecter l’ensemble du jeu dès lors qu’une vulnérabilité est découverte. Les parties nécessitant des seeds prévisibles et répétables devraient être gérées avec un RNG séparé
- Comme cela peut aussi être déduit à partir de replays PoC de versions antérieures à 1.12, il peut être utile de vérifier si des bases importantes n’ont pas été exposées dans d’anciens replays
- Des vulnérabilités liées à la réutilisation de seed ont été découvertes non seulement dans Minecraft, mais aussi dans d’autres jeux. Les seeds et RNG utilisés dans les systèmes critiques d’un jeu nécessitent une grande vigilance. Il faut examiner la période du pseudo-aléatoire, l’aléa de la seed et sa réutilisation
1 commentaires
Avis Hacker News
Voici les points clés résumés à partir des commentaires de Hacker News :
Lors de l'« International RoShamBo Programming Competition » de 1999-2000, un bot appelé « Nostradamus » a gagné en inversant l'état du générateur de nombres aléatoires afin de prédire les coups d'un bot de référence aléatoire avec une précision de 100 %.
La réduction de réseau LLL, le même algorithme utilisé par le bot « Nostradamus », peut aussi servir à casser des clés PuTTY à partir de nonces biaisés, comme l'a expliqué récemment 'tptacek' dans un commentaire sur Hacker News.
Le serveur Minecraft SciCraft utilisait une configuration sophistiquée pour manipuler de façon déterministe l'état du RNG du jeu afin de déclencher des éclairs « aléatoires » à chaque frame pour obtenir de meilleurs drops d'objets, comme le montre une vidéo YouTube.
Certains commentateurs trouvent cet exploit à la fois fascinant et édifiant, car il met en lumière les risques liés à l'interaction de sources aléatoires dans le code. Il est considéré comme l'un des exploits les plus sophistiqués pour le plus faible gain.
L'idée d'un « serveur d'abus de bugs ouvert à tous » dans Minecraft est comparée à ce à quoi pourrait ressembler un véritable affrontement dans un métavers hypothétique.
La communauté du modding/hacking de Minecraft est saluée pour son haut niveau de sophistication, avec un impressionnant cassage du RNG en jeu montré dans une autre vidéo YouTube.
Cette manipulation du RNG est comparée aux diagrammes d'espace des phases d'un RNG ISN TCP faible.
Certains joueurs apprécient les serveurs « anarchy » de Minecraft comme 2b2t, estimant que c'est ainsi que le jeu est censé être joué, même si ces serveurs deviennent parfois trop populaires.
Un commentateur se demande quel est le parcours professionnel de Leijurv, un hackeur de jeu Minecraft bien connu, en supposant qu'il travaille peut-être dans l'infosec ou le trading algorithmique au vu de ses compétences impressionnantes.