Randar: vulnerabilidad de Minecraft que crackea el RNG del servidor usando reducción de retículas LLL
(github.com/spawnmason)Estos son los puntos clave de la explicación e información sobre Randar, resumidos en formato Markdown:
Resumen del exploit Randar
- Randar es un exploit para las versiones Beta 1.8 a 1.12.2 de Minecraft que puede revelar la ubicación de otros jugadores al crackear el
java.util.Randomreutilizado incorrectamente en el servidor de Minecraft - Funciona usando reducción de retículas LLL para determinar el estado interno del RNG a partir de las coordenadas precisas de los ítems soltados cuando se rompe un bloque
- El exploit fue descubierto por n0pf0x (pcm1k) el 7 de octubre de 2022
Cómo funciona el exploit Randar
- El código de Minecraft reutiliza por error el RNG entre la generación del terreno (como Woodland Mansions) y las acciones dentro del juego (como minar bloques)
- Cuando se carga un chunk, se revisa si hay estructuras como Woodland Mansions, reiniciando la semilla del RNG según las coordenadas del chunk
- Cuando un jugador mina un bloque poco después, las coordenadas del ítem soltado quedan determinadas por el estado del RNG
- Usando reducción de retículas, se puede determinar el estado interno exacto del RNG a partir de las coordenadas del ítem soltado
- Al retroceder el estado del RNG, se revelan las coordenadas del chunk cargado más recientemente, exponiendo la ubicación de un jugador
Cómo proteger escondites contra Randar
- Construir escondites en regiones señuelo específicas de Woodland donde otra región esté dentro de 4 pasos del RNG puede engañar a quienes usan el exploit
- Asegurarse de que todo el escondite esté dentro de la región y dejar una cuenta AFK en el señuelo brinda protección adicional
Código completo del exploit y parche
- Se proporciona el código completo en Java para crackear el estado del RNG a partir de las coordenadas de caída de ítems y retroceder para encontrar ubicaciones de jugadores
- Para servidores de Minecraft que siguen en versiones vulnerables, el parche consiste en cambiar la función
World.setRandomSeed()para usar una instancia de RNG separada para la generación del mundo
Notas adicionales de n0pf0x
- n0pf0x usó un sistema de caché para búsquedas más rápidas de semilla a coordenadas frente al enfoque de hashmap en GPU de Mason
- Se describen técnicas para rastrear impactos en la dimensión The End, que es más complicada porque los chunks solo afectan al RNG en la primera generación
- Un "End Occupancy Tracker" estima qué jugadores están en The End basándose en las llamadas al RNG por tick para ayudar a identificar quién causó ciertos impactos
Opinión de GN⁺
- Randar es un exploit grave porque puede filtrar la ubicación de jugadores en todo el mundo al averiguar la semilla (
seed). Si se trata de un servidor que no se ha actualizado a la 1.13 o al que no se le ha aplicado el parche, puede representar una amenaza seria - En particular, en los servidores anarchy que permiten el hackeo, tiene un alto potencial de uso malicioso como herramienta de trampa, por lo que parece urgente preparar contramedidas
- El uso de un único RNG aplicado a todo el mundo probablemente fue por conveniencia, pero si se descubre una vulnerabilidad, parece un defecto estructural que puede afectar a todo el juego. Es preferible gestionar con un RNG separado las partes que requieren semillas predecibles y repetitivas
- Sin embargo, como también puede inferirse en replays PoC de versiones anteriores a la 1.12, conviene revisar si alguna base importante quedó expuesta en replays anteriores
- No solo en Minecraft; también ha habido casos en otros juegos donde se descubrieron vulnerabilidades por la reutilización de semillas. Las semillas y los RNG usados en sistemas centrales del juego requieren atención meticulosa. Hay que revisar el período del generador seudoaleatorio, la aleatoriedad de la semilla y la reutilización de la semilla
1 comentarios
Opinión de Hacker News
Aquí están los puntos clave resumidos de los comentarios de Hacker News:
En la "International RoShamBo Programming Competition" de 1999-2000, un bot llamado "Nostradamus" ganó al revertir el estado del generador de números aleatorios para predecir las jugadas de un bot base aleatorio con 100% de precisión.
La reducción de retículas LLL, el mismo algoritmo usado en el bot "Nostradamus", también puede usarse para crackear claves de PuTTY a partir de nonces sesgados, como explicó recientemente 'tptacek' en un comentario de Hacker News.
El servidor de Minecraft SciCraft usó una configuración sofisticada para manipular de forma determinista el estado del RNG del juego y provocar rayos "aleatorios" en cada frame para obtener mejores drops de ítems, como se muestra en un video de YouTube.
A algunos comentaristas esta vulnerabilidad les parece tanto fascinante como aleccionadora, ya que resalta los riesgos de hacer que fuentes aleatorias interactúen en el código. Se considera una de las vulnerabilidades más sofisticadas para la menor recompensa.
La idea de un "servidor de abuso de bugs sin reglas" en Minecraft se compara con cómo podría verse un combate real en un metaverso hipotético.
Se elogia a la comunidad de modding/hacking de Minecraft por su sofisticación, con una impresionante ruptura del RNG dentro del juego demostrada en otro video de YouTube.
La manipulación del RNG se compara con gráficos de espacio de fases de un RNG débil para TCP ISN.
Algunos jugadores disfrutan los servidores de "anarquía" en Minecraft como 2b2t, y consideran que es la forma en que el juego está destinado a jugarse, aunque a veces esos servidores se vuelven demasiado populares.
A un comentarista le da curiosidad el perfil profesional de un destacado hacker del juego Minecraft llamado Leijurv, y supone que quizá trabaja en infosec o en trading algorítmico dadas sus impresionantes habilidades.