Randar: Lỗ hổng Minecraft dùng rút gọn lưới LLL để bẻ khóa RNG của máy chủ
(github.com/spawnmason)Dưới đây là các điểm chính từ phần giải thích và thông tin về Randar, được tóm tắt dưới dạng Markdown:
Tổng quan về exploit Randar
- Randar là một exploit dành cho các phiên bản Minecraft từ Beta 1.8 đến 1.12.2, có thể tiết lộ vị trí của người chơi khác bằng cách bẻ khóa
java.util.Randombị tái sử dụng sai cách trong máy chủ Minecraft - Nó hoạt động bằng cách dùng rút gọn lưới LLL để xác định trạng thái nội bộ của RNG dựa trên tọa độ chính xác của vật phẩm rơi ra khi một khối bị phá
- Exploit này được n0pf0x (pcm1k) phát hiện vào ngày 7 tháng 10 năm 2022
Cách exploit Randar hoạt động
- Mã của Minecraft đã vô tình tái sử dụng RNG giữa việc tạo địa hình thế giới (như Woodland Mansions) và các hành động trong game (như đào khối)
- Khi một chunk được nạp, trò chơi sẽ kiểm tra các cấu trúc như Woodland Mansions, đồng thời đặt lại seed RNG dựa trên tọa độ chunk
- Khi người chơi đào một khối ngay sau đó, tọa độ của vật phẩm rơi ra sẽ được quyết định bởi trạng thái RNG
- Bằng cách dùng rút gọn lưới, có thể xác định chính xác trạng thái nội bộ của RNG từ tọa độ vật phẩm rơi ra
- Lần ngược trạng thái RNG sẽ cho biết tọa độ chunk được nạp gần nhất, qua đó làm lộ vị trí của người chơi
Bảo vệ kho đồ khỏi Randar
- Xây kho đồ trong các vùng Woodland "mồi nhử" cụ thể, nơi có một vùng khác nằm trong phạm vi 4 bước RNG, có thể đánh lừa kẻ khai thác exploit
- Đảm bảo toàn bộ kho đồ nằm trong vùng đó và đặt một tài khoản AFK tại khu vực mồi nhử sẽ tăng thêm mức độ bảo vệ
Mã exploit đầy đủ và cách vá
- Có cung cấp đầy đủ mã Java để bẻ khóa trạng thái RNG từ tọa độ vật phẩm rơi ra và lần ngược để tìm vị trí người chơi
- Với các máy chủ Minecraft vẫn dùng những phiên bản dễ bị ảnh hưởng, bản vá là thay đổi hàm
World.setRandomSeed()để sử dụng một thực thể RNG riêng cho việc tạo thế giới
Ghi chú bổ sung từ n0pf0x
- n0pf0x đã dùng hệ thống cache để tra cứu seed sang tọa độ nhanh hơn so với cách dùng GPU hashmap của Mason
- Có mô tả các kỹ thuật để theo dõi các hit trong chiều không gian The End, vốn khó hơn vì chunk chỉ ảnh hưởng đến RNG ở lần tạo đầu tiên
- Một "End Occupancy Tracker" ước tính người chơi nào đang ở The End dựa trên số lần gọi RNG mỗi tick để giúp xác định ai đã gây ra một số hit nhất định
Ý kiến của GN⁺
- Randar là một exploit nghiêm trọng vì có thể suy ra seed và làm lộ vị trí người chơi trên toàn bộ thế giới. Nếu máy chủ chưa nâng cấp lên 1.13 hoặc chưa áp dụng bản vá, đây có thể là mối đe dọa rất lớn
- Đặc biệt với các máy chủ anarchy cho phép hack, nguy cơ bị lạm dụng như một công cụ gian lận là rất cao, nên cần sớm có biện pháp đối phó
- Việc dùng một RNG duy nhất áp dụng cho toàn bộ thế giới có thể là để thuận tiện, nhưng khi lỗ hổng bị phát hiện, nó trở thành một khiếm khuyết kiến trúc có thể ảnh hưởng đến toàn bộ trò chơi. Những phần cần seed có tính dự đoán và lặp lại nên được quản lý bằng RNG riêng
- Tuy vậy, vì vẫn có thể suy luận từ các bản replay PoC trước 1.12, nên cũng cần xem lại liệu những replay trước đây có làm lộ các căn cứ quan trọng hay không
- Không chỉ Minecraft, các game khác cũng từng xuất hiện lỗ hổng do tái sử dụng seed. Seed hoặc RNG dùng trong các hệ thống cốt lõi của game cần được xem xét rất cẩn thận. Cần kiểm tra chu kỳ của bộ sinh số giả ngẫu nhiên, độ ngẫu nhiên của seed và việc tái sử dụng seed
1 bình luận
Ý kiến trên Hacker News
Dưới đây là các ý chính được tóm tắt từ phần bình luận trên Hacker News:
Trong "Cuộc thi Lập trình International RoShamBo" giai đoạn 1999-2000, một bot tên là "Nostradamus" đã giành chiến thắng bằng cách đảo ngược trạng thái của bộ sinh số ngẫu nhiên để dự đoán nước đi của một bot đối chứng ngẫu nhiên với độ chính xác 100%.
Phép rút gọn lưới LLL, cũng là thuật toán được dùng trong bot "Nostradamus", cũng có thể được dùng để bẻ khóa khóa PuTTY từ các nonce bị lệch như được giải thích trong một bình luận gần đây trên Hacker News của 'tptacek.
Máy chủ Minecraft SciCraft đã dùng một thiết lập tinh vi để điều khiển trạng thái RNG của trò chơi theo cách xác định nhằm kích hoạt các cú sét "ngẫu nhiên" ở mọi frame để nhận vật phẩm rơi ra tốt hơn, như được trình bày trong một video trên YouTube.
Một số người bình luận thấy lỗ hổng này vừa hấp dẫn vừa mang tính cảnh báo, vì nó cho thấy rủi ro khi để các nguồn ngẫu nhiên tương tác với nhau trong mã. Đây được xem là một trong những khai thác tinh vi nhất nhưng đem lại lợi ích thấp nhất.
Ý tưởng về một "máy chủ lạm dụng bug tự do hoàn toàn" trong Minecraft được so sánh với hình ảnh chiến đấu thực tế có thể sẽ trông như thế nào trong một metaverse giả định.
Cộng đồng modding/hacking Minecraft được khen ngợi vì mức độ tinh vi của họ, với một số màn bẻ RNG ngay trong game rất ấn tượng được trình diễn trong một video YouTube khác.
Việc thao túng RNG được so sánh với các đồ thị không gian pha của RNG ISN TCP yếu.
Một số người chơi thích các máy chủ "vô chính phủ" trong Minecraft như 2b2t, xem đó là cách trò chơi nên được chơi, dù các máy chủ này đôi khi trở nên quá nổi tiếng.
Một người bình luận tò mò về nền tảng nghề nghiệp của một hacker game Minecraft nổi tiếng tên Leijurv, đoán rằng họ có thể làm trong lĩnh vực infosec hoặc giao dịch thuật toán vì kỹ năng ấn tượng của họ.