Randar: vulnerabilidade no Minecraft que quebra o RNG do servidor com redução de reticulado LLL
(github.com/spawnmason)Aqui estão os pontos principais da explicação e das informações sobre o Randar, resumidos em formato Markdown:
Visão geral do exploit Randar
- Randar é um exploit para versões do Minecraft da Beta 1.8 até a 1.12.2 que pode revelar a localização de outros jogadores ao quebrar o
java.util.Randomreutilizado incorretamente no servidor do Minecraft - Ele funciona usando redução de reticulado LLL para determinar o estado interno do RNG com base nas coordenadas precisas dos itens dropados quando um bloco é quebrado
- O exploit foi descoberto por n0pf0x (pcm1k) em 7 de outubro de 2022
Como o exploit Randar funciona
- O código do Minecraft reutiliza por engano o RNG entre a geração do terreno (como Woodland Mansions) e ações dentro do jogo (como minerar blocos)
- Quando um chunk é carregado, ele verifica estruturas como Woodland Mansions, redefinindo a seed do RNG com base nas coordenadas do chunk
- Quando um jogador minera um bloco logo depois, as coordenadas do item dropado são determinadas pelo estado do RNG
- Usando redução de reticulado, é possível determinar o estado interno exato do RNG a partir das coordenadas dos itens dropados
- Retrocedendo o estado do RNG, é possível revelar as coordenadas do chunk carregado mais recentemente, expondo a localização de um jogador
Protegendo stashes contra o Randar
- Construir stashes em regiões específicas de Woodland "isca", onde outra região esteja a até 4 passos do RNG, pode enganar quem explora a vulnerabilidade
- Garantir que todo o stash esteja dentro da região e manter uma conta AFK na isca oferece proteção extra
Código completo do exploit e aplicação de patch
- O código Java completo para quebrar o estado do RNG a partir das coordenadas de drop de itens e retroceder para encontrar a localização dos jogadores é fornecido
- Para servidores de Minecraft que ainda estão em versões vulneráveis, o patch envolve alterar a função
World.setRandomSeed()para usar uma instância de RNG separada para a geração do mundo
Notas adicionais de n0pf0x
- n0pf0x usou um sistema de cache para buscas mais rápidas de seed para coordenadas, em vez da abordagem de hashmap em GPU do Mason
- São descritas técnicas para rastrear acertos na dimensão The End, o que é mais complicado, já que os chunks só afetam o RNG na primeira geração
- Um "End Occupancy Tracker" estima quais jogadores estão no The End com base nas chamadas de RNG por tick para ajudar a identificar quem causou determinados acertos
Opinião do GN⁺
- O Randar é um exploit grave porque pode descobrir a seed e vazar a localização de jogadores em todo o mundo. Em servidores que não atualizaram para a 1.13 ou não aplicaram o patch, isso pode representar uma ameaça séria
- Especialmente em servidores anarchy que permitem hacking, há grande potencial de uso indevido como ferramenta de cheat, então parece urgente preparar contramedidas
- O uso de um único RNG aplicado ao mundo inteiro provavelmente foi feito por conveniência, mas, quando uma vulnerabilidade é descoberta, isso parece uma falha estrutural capaz de afetar o jogo inteiro. Partes que exigem seeds previsíveis e repetitivas deveriam idealmente ser gerenciadas por um RNG separado
- No entanto, como isso também pode ser inferido a partir de replays de PoC em versões anteriores à 1.12, vale revisar se bases importantes não ficaram expostas em replays passados
- Não só no Minecraft, mas também em outros jogos já houve casos de vulnerabilidades causadas pela reutilização de seed. Seeds e RNGs usados em sistemas centrais do jogo exigem cuidado extremo. É preciso verificar o período do gerador pseudoaleatório, a aleatoriedade da seed e a sua reutilização
1 comentários
Comentários do Hacker News
Aqui estão os principais pontos resumidos dos comentários do Hacker News:
Na "International RoShamBo Programming Competition" de 1999-2000, um bot chamado "Nostradamus" venceu ao reverter o estado do gerador de números aleatórios para prever as jogadas de um bot aleatório de referência com 100% de precisão.
A redução de reticulado LLL, o mesmo algoritmo usado no bot "Nostradamus", também pode ser usada para quebrar chaves do PuTTY a partir de nonces enviesados, como explicado em um comentário recente no Hacker News por 'tptacek'.
O servidor de Minecraft SciCraft usava uma configuração sofisticada para manipular deterministicamente o estado do RNG do jogo e acionar relâmpagos "aleatórios" a cada frame para obter melhores drops de itens, como demonstrado em um vídeo no YouTube.
Alguns comentaristas consideram esse exploit ao mesmo tempo fascinante e um alerta, pois ele destaca os riscos de fazer fontes aleatórias interagirem no código. É considerado um dos exploits mais sofisticados para o menor retorno possível.
A ideia de um "servidor de abuso de bugs liberado geral" em Minecraft é comparada a como combates reais poderiam ser em um metaverso hipotético.
A comunidade de modding/hacking de Minecraft é elogiada por sua sofisticação, com algumas demonstrações impressionantes de quebra de RNG dentro do jogo em outro vídeo no YouTube.
A manipulação de RNG é comparada a gráficos de espaço de fase de um RNG fraco de ISN do TCP.
Alguns jogadores gostam dos servidores de "anarquia" no Minecraft, como o 2b2t, considerando esse o jeito como o jogo deve ser jogado, embora esses servidores às vezes fiquem populares demais.
Um comentarista tem curiosidade sobre a formação profissional de um conhecido hacker de Minecraft chamado Leijurv, supondo que ele possa trabalhar com infosec ou trading algorítmico, dado o nível impressionante de suas habilidades.