Randar: ช่องโหว่ Minecraft ที่แคร็ก RNG ของเซิร์ฟเวอร์ด้วยการย่อแลตทิซ LLL
(github.com/spawnmason)ต่อไปนี้คือประเด็นสำคัญจากคำอธิบายและข้อมูลเกี่ยวกับ Randar โดยสรุปในรูปแบบ Markdown:
ภาพรวมของการโจมตี Randar
- Randar เป็นช่องโหว่สำหรับ Minecraft เวอร์ชัน Beta 1.8 ถึง 1.12.2 ที่สามารถเปิดเผยตำแหน่งของผู้เล่นคนอื่นได้ ด้วยการแคร็ก
java.util.Randomที่ถูกนำกลับมาใช้ซ้ำอย่างไม่ถูกต้องในเซิร์ฟเวอร์ Minecraft - มันทำงานโดยใช้การย่อแลตทิซ LLL เพื่อหาสถานะภายในของ RNG จากพิกัดที่แม่นยำของไอเท็มดรอปเมื่อบล็อกถูกขุดทำลาย
- ช่องโหว่นี้ถูกค้นพบโดย n0pf0x (pcm1k) เมื่อวันที่ 7 ตุลาคม 2022
Randar ทำงานอย่างไร
- โค้ดของ Minecraft นำ RNG เดียวกันกลับมาใช้ซ้ำผิดพลาดระหว่างการสร้างภูมิประเทศ (เช่น Woodland Mansions) และการกระทำภายในเกม (เช่น การขุดบล็อก)
- เมื่อมีการโหลดชังก์ ระบบจะตรวจสอบโครงสร้างอย่าง Woodland Mansions และรีเซ็ตค่า seed ของ RNG ตามพิกัดของชังก์
- เมื่อผู้เล่นขุดบล็อกหลังจากนั้นไม่นาน พิกัดของไอเท็มดรอปจะถูกกำหนดโดยสถานะของ RNG
- ด้วยการใช้การย่อแลตทิซ จึงสามารถระบุสถานะภายในที่แน่นอนของ RNG ได้จากพิกัดของไอเท็มดรอป
- การย้อนสถานะ RNG กลับไปจะเผยพิกัดของชังก์ที่ถูกโหลดล่าสุด ทำให้ตำแหน่งของผู้เล่นถูกเปิดเผย
การปกป้องคลังของจาก Randar
- การสร้างคลังของในพื้นที่ Woodland หลอกบางแห่งที่มีอีกพื้นที่หนึ่งอยู่ภายใน 4 ขั้นของ RNG สามารถหลอกผู้ใช้ช่องโหว่ได้
- การทำให้คลังทั้งหมดอยู่ภายในพื้นที่ดังกล่าว และวางบัญชี AFK ไว้ที่จุดล่อ จะช่วยเพิ่มการป้องกันได้
โค้ดโจมตีฉบับเต็มและการแพตช์
- มีการให้โค้ด Java แบบเต็มสำหรับแคร็กสถานะ RNG จากพิกัดไอเท็มดรอป และย้อนกลับเพื่อหาตำแหน่งผู้เล่น
- สำหรับเซิร์ฟเวอร์ Minecraft ที่ยังใช้เวอร์ชันที่มีช่องโหว่ การแพตช์คือแก้ฟังก์ชัน
World.setRandomSeed()ให้ใช้ RNG คนละอินสแตนซ์สำหรับการสร้างโลก
หมายเหตุเพิ่มเติมจาก n0pf0x
- n0pf0x ใช้ระบบแคชเพื่อให้การค้นหา seed ไปยังพิกัดทำได้เร็วกว่าแนวทาง GPU hashmap ของ Mason
- มีการอธิบายเทคนิคสำหรับติดตาม hit ในมิติ The End ซึ่งยากกว่า เพราะชังก์จะมีผลต่อ RNG เฉพาะตอนถูกสร้างครั้งแรกเท่านั้น
- "End Occupancy Tracker" ใช้ประเมินว่าผู้เล่นคนใดอยู่ใน The End จากจำนวนการเรียก RNG ต่อ tick เพื่อช่วยระบุว่าใครเป็นต้นเหตุของ hit บางรายการ
ความเห็นของ GN⁺
- Randar เป็นช่องโหว่ร้ายแรง เพราะสามารถหา seed และเปิดเผยตำแหน่งของผู้เล่นได้ทั่วทั้งโลกของเกม หากเป็นเซิร์ฟเวอร์ที่ยังไม่อัปเดตเป็น 1.13 หรือยังไม่ติดแพตช์ ก็อาจเป็นภัยคุกคามอย่างมาก
- โดยเฉพาะในเซิร์ฟเวอร์แนว anarchy ที่อนุญาตการแฮ็ก ก็มีโอกาสสูงที่จะถูกนำไปใช้เป็นเครื่องมือโกง จึงดูเป็นเรื่องเร่งด่วนที่ต้องมีมาตรการรับมือ
- การใช้ RNG เดียวทั้งโลกอาจเป็นทางเลือกเพื่อความสะดวก แต่เมื่อพบช่องโหว่แล้ว มันดูเป็นข้อบกพร่องเชิงสถาปัตยกรรมที่อาจส่งผลต่อทั้งเกม ส่วนที่ต้องการ seed ที่คาดเดาได้และใช้ซ้ำควรแยกไปจัดการด้วย RNG คนละตัว
- อย่างไรก็ตาม เนื่องจากสามารถอนุมานได้จาก PoC replay ของเวอร์ชันก่อน 1.12 เช่นกัน จึงควรย้อนกลับไปตรวจสอบว่า replay เก่า ๆ เคยเปิดเผยฐานสำคัญหรือไม่
- ไม่ใช่แค่ Minecraft เท่านั้นที่เคยพบช่องโหว่จากการนำ seed กลับมาใช้ซ้ำ เกมอื่น ๆ ก็มีกรณีลักษณะนี้เช่นกัน seed หรือ RNG ที่ใช้ในระบบสำคัญของเกมจึงต้องได้รับการตรวจสอบอย่างรอบคอบ ทั้งคาบของ pseudo-random number, ความสุ่มของ seed และการนำ seed กลับมาใช้ซ้ำ
1 ความคิดเห็น
ความเห็นจาก Hacker News
นี่คือประเด็นสำคัญที่สรุปจากความเห็นบน Hacker News:
ในการแข่งขัน "International RoShamBo Programming Competition" ปี 1999-2000 บอตชื่อ "Nostradamus" ชนะด้วยการย้อนสถานะของตัวสร้างเลขสุ่มเพื่อทำนายการเล่นของบอตพื้นฐานแบบสุ่มได้ถูกต้อง 100%
การลดแลตทิซแบบ LLL ซึ่งเป็นอัลกอริทึมเดียวกับที่ใช้ในบอต "Nostradamus" ยังสามารถใช้แคร็กคีย์ของ PuTTY จาก nonce ที่มีอคติได้ ตามที่ 'tptacek อธิบายไว้ในความเห็นบน Hacker News เมื่อไม่นานมานี้
เซิร์ฟเวอร์ Minecraft ของ SciCraft ใช้การตั้งค่าที่ซับซ้อนเพื่อควบคุมสถานะ RNG ของเกมแบบกำหนดได้แน่นอน ทำให้เกิดฟ้าผ่าแบบ "สุ่ม" ได้ทุกเฟรมเพื่อให้ดรอปไอเท็มดีขึ้น ดังที่มีการสาธิตไว้ในวิดีโอ YouTube
ผู้แสดงความเห็นบางคนมองว่าเอ็กซ์พลอยต์นี้ทั้งน่าทึ่งและเป็นอุทาหรณ์ เพราะมันชี้ให้เห็นถึงความเสี่ยงของการที่แหล่งสุ่มหลายแหล่งมาโต้ตอบกันในโค้ด หลายคนมองว่านี่เป็นหนึ่งในเอ็กซ์พลอยต์ที่ซับซ้อนที่สุดเมื่อเทียบกับผลตอบแทนที่น้อยที่สุด
แนวคิดเรื่อง "เซิร์ฟเวอร์สำหรับการใช้บั๊กแบบไร้กติกา" ใน Minecraft ถูกนำไปเปรียบเทียบกับภาพของการต่อสู้จริงใน metaverse สมมุติ
ชุมชนม็อดดิ้ง/แฮ็ก Minecraft ได้รับคำชมว่ามีความซับซ้อนสูง โดยมีการสาธิตการแคร็ก RNG ภายในเกมที่น่าประทับใจในวิดีโอ YouTube อีกอันหนึ่ง
การควบคุม RNG นี้ถูกนำไปเปรียบเทียบกับกราฟ phase space ของ RNG สำหรับ TCP ISN ที่อ่อนแอ
ผู้เล่นบางคนชอบเซิร์ฟเวอร์แบบ "อนาธิปไตย" ใน Minecraft เช่น 2b2t และมองว่านี่คือวิธีที่เกมควรถูกเล่น แม้ว่าบางครั้งเซิร์ฟเวอร์เหล่านี้จะได้รับความนิยมมากเกินไปก็ตาม
ผู้แสดงความเห็นคนหนึ่งสงสัยเกี่ยวกับภูมิหลังทางอาชีพของแฮ็กเกอร์เกม Minecraft ชื่อดัง Leijurv โดยคาดเดาว่าอาจทำงานในสาย infosec หรือ algorithmic trading จากทักษะที่น่าประทับใจของพวกเขา