Randar: LLL kafes indirgemesini kullanarak sunucu RNG'sini kıran Minecraft açığı
(github.com/spawnmason)Here are the key points from the Randar explanation and information, summarized in Markdown format:
Randar istismarına genel bakış
- Randar, Minecraft Beta 1.8 ile 1.12.2 arasındaki sürümler için, Minecraft sunucusundaki hatalı şekilde yeniden kullanılan
java.util.Random'ı kırarak diğer oyuncuların konumlarını açığa çıkarabilen bir istismardır - Bir blok kırıldığında düşen eşyaların hassas koordinatlarına dayanarak RNG'nin iç durumunu belirlemek için LLL kafes indirgemesini kullanır
- İstismar, 7 Ekim 2022'de n0pf0x (pcm1k) tarafından keşfedildi
Randar istismarı nasıl çalışır
- Minecraft kodu, arazi üretimi (örneğin Woodland Mansion'lar) ile oyun içi eylemler (örneğin blok kazma) arasında RNG'yi yanlışlıkla yeniden kullanır
- Bir chunk yüklendiğinde, Woodland Mansion gibi yapıları kontrol ederken chunk koordinatlarına göre RNG tohumunu yeniden ayarlar
- Bir oyuncu kısa süre sonra bir bloğu kazdığında, düşen eşyanın koordinatları RNG durumuna göre belirlenir
- Kafes indirgeme kullanılarak, düşen eşyanın koordinatlarından RNG'nin tam iç durumu belirlenebilir
- RNG durumunu geriye doğru ilerletmek, en son yüklenen chunk'ın koordinatlarını ortaya çıkararak oyuncunun konumunu ifşa eder
Randar'a karşı stash'leri koruma
- İçinde 4 RNG adımı mesafesinde başka bir bölge bulunan belirli "decoy" Woodland bölgelerinde stash kurmak, istismarcıları yanıltabilir
- Tüm stash'in bu bölgenin içinde olmasını sağlamak ve decoy'da bir AFK hesap bulundurmak ek koruma sağlar
Tam istismar kodu ve yama
- Eşya düşüş koordinatlarından RNG durumunu kırmak ve oyuncu konumlarını bulmak için geriye doğru ilerlemek üzere tam Java kodu sağlanmıştır
- Hâlâ etkilenen sürümlerde çalışan Minecraft sunucuları için yama,
World.setRandomSeed()fonksiyonunun dünya üretimi için ayrı bir RNG örneği kullanacak şekilde değiştirilmesini içerir
n0pf0x'tan ek notlar
- n0pf0x, Mason'ın GPU hashmap yaklaşımına kıyasla tohumdan koordinata aramaları hızlandırmak için bir önbellekleme sistemi kullandı
- The End boyutunda isabetleri takip etmeye yönelik teknikler de açıklanıyor; çünkü burada chunk'lar RNG'yi yalnızca ilk üretimde etkiliyor ve bu da işi zorlaştırıyor
- Bir "End Occupancy Tracker", belirli isabetlere kimin sebep olduğunu belirlemeye yardımcı olmak için tick başına RNG çağrılarına dayanarak hangi oyuncuların The End'de olduğunu tahmin eder
GN⁺'nin görüşü
- Randar, tohumu (
seed) çıkararak dünya genelinde oyuncu konumlarını sızdırabilmesi nedeniyle ciddi bir istismardır. 1.13'e güncellenmemiş veya yama uygulanmamış sunucular için ciddi bir tehdit oluşturabilir - Özellikle hack kullanımına izin veren anarchy sunucularında, cheat aracı olarak kötüye kullanılma potansiyeli yüksek olduğundan buna karşı önlem alınması acil görünüyor
- Dünya genelinde kullanılan tek bir RNG'nin tercih edilmesi muhtemelen kolaylık içindi; ancak bir açık bulunduğunda oyunun tamamını etkileyebilen yapısal bir kusur gibi görünüyor. Öngörülebilir ve tekrarlayan tohum gerektiren bölümlerin ayrı RNG'lerle yönetilmesi daha uygun olur
- Ancak 1.12 öncesi sürümlerin PoC replay'lerinden de çıkarım yapılabildiği için, geçmiş replay'lerde önemli üslerin açığa çıkıp çıkmadığını gözden geçirmek gerekebilir
- Yalnızca Minecraft'ta değil, diğer oyunlarda da tohumun yeniden kullanımı nedeniyle açıkların bulunduğu örnekler var. Oyunun çekirdek sistemlerinde kullanılan tohumlar ve RNG'ler dikkatle ele alınmalı. Sözde rastgele sayıların periyodu, tohumun rastgeleliği ve tohumun yeniden kullanımı denetlenmelidir
1 yorum
Hacker News yorumları
Hacker News yorumlarından öne çıkan noktalar şöyle özetleniyor:
1999-2000 dönemindeki "International RoShamBo Programming Competition"da, "Nostradamus" adlı bir bot, rastgele sayı üretecinin durumunu tersine çevirerek rastgele tabanlı bir botun hamlelerini %100 doğrulukla tahmin edip kazandı.
"Nostradamus" botunda kullanılan aynı algoritma olan LLL kafes indirgeme, 'tptacek'in yakın tarihli bir Hacker News yorumunda açıkladığı gibi, önyargılı nonce değerlerinden PuTTY anahtarlarını kırmak için de kullanılabiliyor.
SciCraft Minecraft sunucusu, daha iyi eşya düşürmeleri için oyunun RNG durumunu deterministik olarak manipüle edip her karede "rastgele" yıldırım düşmesini tetikleyen gelişmiş bir düzenek kullandı; bu durum bir YouTube videosunda gösterildi.
Bazı yorumcular bu açığı hem büyüleyici hem de uyarıcı buluyor; çünkü bu durum, kod içinde rastgele kaynakların birbiriyle etkileşime girmesinin risklerini ortaya koyuyor. En düşük getirili ama en sofistike açık istismarlarından biri olarak görülüyor.
Minecraft'taki "herkesin her şeyi yapabildiği bir bug istismarı sunucusu" fikri, varsayımsal bir metaverse'te gerçek çatışmaların nasıl görünebileceğine benzetiliyor.
Minecraft modlama/hack topluluğu sofistikeliğiyle övülüyor; başka bir YouTube videosunda oyun içi RNG kırmaya dair etkileyici örnekler gösteriliyor.
Bu RNG manipülasyonu, zayıf TCP ISN RNG'sinin faz uzayı grafiklerine benzetiliyor.
Bazı oyuncular Minecraft'taki 2b2t gibi "anarşi" sunucularını seviyor ve sunucular bazen fazla popüler hâle gelse de bunun oyunun oynanması gereken asıl biçimi olduğunu düşünüyor.
Bir yorumcu, Leijurv adlı öne çıkan bir Minecraft oyun hacker'ının profesyonel geçmişini merak ediyor; etkileyici becerileri göz önüne alındığında bilgi güvenliği ya da algoritmik işlemler alanında çalışıyor olabileceğini tahmin ediyor.