BTC
ETH
HTX
SOL
BNB
Xem thị trường
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt

Khám phá các nguyên tắc kỹ thuật đằng sau lỗ hổng số ngẫu nhiên: Trò chơi đố vui EOS.WIN đã bị tấn công như thế nào?

PeckShield
特邀专栏作者
2018-11-21 14:46
Bài viết này có khoảng 2410 từ, đọc toàn bộ bài viết mất khoảng 4 phút
Nhóm bảo mật PeckShield đã lấy một trò chơi EOS.WIN điển hình làm ví dụ để khôi phục trò chơi này dưới góc nhìn của một hacker và khiến mọi người đánh giá cao bí ẩn đằng sau cuộc tấn công lỗ
Tóm tắt AI
Mở rộng
Nhóm bảo mật PeckShield đã lấy một trò chơi EOS.WIN điển hình làm ví dụ để khôi phục trò chơi này dưới góc nhìn của một hacker và khiến mọi người đánh giá cao bí ẩn đằng sau cuộc tấn công lỗ


Trong tháng trước, công ty bảo mật chuỗi khối PeckShield đã phát hiện và tiết lộ rằng hơn 8 trò chơi đố EOS như EOSBet, EOSCast, FFgame, EOSDice, EOSWin, MyEosVegas, LuckyGo và EOS Lelego đã bị tấn công và các tin tặc đã thực hiện một tổng lợi nhuận là 170.503,5 EOS, dựa trên mức giá trung bình trên thị trường trước đó là 35 nhân dân tệ mỗi mảnh, tin tặc đã kiếm được hơn 5.967.662,5 nhân dân tệ tiền lãi từ các trò chơi như vậy, điều này đã đe dọa nghiêm trọng đến trật tự sinh thái bình thường của EOS.


Nhân viên an ninh của PeckShield đã trích xuất các tính năng tấn công của nhiều trò chơi khác nhau và ban đầu phát hiện ra rằng: 1. Có nhiều nhóm tin tặc khác nhau đứng sau những kẻ tấn công thực hiện các cuộc tấn công có tổ chức và có chủ đích; 3. Các cuộc tấn công tương tự có thể trở nên thường xuyên hơn và hiệu quả tấn công của chúng có dấu hiệu dần được cải thiện.


Do phần lớn các trò chơi đố vui của EOS chưa phải là mã nguồn mở, nhằm làm rõ các nguyên tắc kỹ thuật đằng sau các lỗ hổng số ngẫu nhiên và tìm hiểu lý do tại sao tin tặc đã nhiều lần tấn công thành công. Nhóm bảo mật PeckShield đã lấy một trò chơi EOS.WIN điển hình làm ví dụ để khôi phục nó từ quan điểm của tin tặc và khiến mọi người đánh giá cao bí ẩn đằng sau cuộc tấn công lỗ hổng số ngẫu nhiên.


Vào ngày 12 tháng 11, theo dữ liệu của nền tảng nhận thức tình huống PeckShield: từ 08:59 đến 09:00 sáng, trong chưa đầy một phút, tin tặc đã thực hiện 10 cuộc tấn công vào hợp đồng trò chơi EOS.WIN (eosluckydice), kiếm được nhiều tiền hơn hơn 9.180 EOS . Nhân viên an ninh của PeckShield đã theo dõi và phân tích rằng hacker lần đầu tiên thực hiện một cuộc tấn công thử nghiệm nhỏ vào lúc 22:46 đêm qua, sau 165 lần tấn công và nắm vững phương thức tấn công, anh ta đã chọn sử dụng nhiều tài khoản liên kết để thực hiện cuộc tấn công nhanh vào lúc 9:00 ngày hôm sau. Mặc dù trò chơi cũng sử dụng thông tin giao dịch trả chậm hai lần an toàn hơn như một thành phần của số ngẫu nhiên, hacker vẫn khéo léo vượt qua những hạn chế này và thực hiện thành công cuộc tấn công.


Nguyên tắc hack và quy trình bốc thăm:


EOS.WIN chủ yếu bao gồm hai trò chơi đoán số và xì dách, trò chơi đoán số, người dùng có thể chọn một số tùy ý, hệ thống sẽ đưa ra tỷ lệ cược tương ứng theo kích thước người dùng chọn, sau đó hệ thống sẽ đưa ra tỷ lệ cược tương ứng. đưa ra một số ngẫu nhiên, Nếu kết quả khớp với lựa chọn kích thước của người dùng, nó được coi là một giải thưởng và số tiền nhận được là số tiền đã đầu tư nhân với tỷ lệ cược.


Mô tả hình ảnh

(Hình minh họa 1: Quy trình chơi xổ số DICE)


Nhân viên bảo mật PeckShield đã phân tích và nhận thấy rằng số ngẫu nhiên của hợp đồng được lấy thông qua hàm get_random và các yếu tố ảnh hưởng đến việc tạo số ngẫu nhiên là: txid là ID băm giao dịch, chiều cao khối giao dịch tapos_block_num, tiền tố ID khối tapos_block_prefix, bet_id số xổ số toàn cầu, v.v.


Để hiểu sâu hơn, trước tiên hãy nắm bắt một số kiến ​​thức cơ bản về khoa học phổ thông:


1. Giao dịch bị trì hoãn và tapos_block_prefix: Trong các phương pháp tạo số ngẫu nhiên phổ biến, hầu hết đều sử dụng tapos_block_num và tapos_block_prefix làm thành phần quan trọng và chỉ định thông tin của khối tương lai trong giao dịch để đảm bảo không thể đoán trước. Nếu giao dịch bị trì hoãn được sử dụng trong hợp đồng, nghĩa là khoảng thời gian bị trì hoãn được chỉ định trong quá trình giao dịch (chẳng hạn như xổ số), dường như sử dụng thông tin trong tương lai. đã chỉ định đồng bộ hóa mới nhất sẽ được sử dụng. Thông tin khối (head_block) và do đó, tapos_block_num và tapos_block_prefix cũng được xác định.


2. Khôi phục thông tin trạng thái giao dịch: Trong các giao dịch EOS, nếu một hành động trong giao dịch được thực hiện bất thường, nó sẽ gây ra việc khôi phục toàn bộ trạng thái giao dịch. Ví dụ: nếu bạn triển khai một hợp đồng trong tài khoản của chính mình và đưa ra một ngoại lệ mỗi khi bạn nhận được biên lai chuyển khoản, điều đó có thể khiến toàn bộ quá trình chuyển khoản không thành công và tất cả thông tin trạng thái, bao gồm cả số dư, sẽ vẫn như cũ.


3. Tính ID băm giao dịch: Một giao dịch (giao dịch) có thể chứa nhiều hành động, nếu tất cả thông tin tham số hành động được xác nhận, sau đó kết hợp với thông tin tapos_block_prefix (ref_block_prefix) đã nói ở trên, bạn có thể tự tính toán ID băm giao dịch.


Nói tóm lại, kẻ tấn công lợi dụng số xổ số (bet_id) để tham gia tạo số ngẫu nhiên và lỗi gọi nội tuyến để gây ra việc khôi phục thông tin trạng thái và kiểm soát nhiều tài khoản hợp đồng cùng lúc để gửi yêu cầu giao dịch tại đồng thời, để đảm bảo rằng yêu cầu cuối cùng Tài khoản có thể nhận được số sê-ri xổ số dự kiến ​​​​để tham gia tạo số ngẫu nhiên để giành phần thưởng. Lấy EOS.WIN làm ví dụ, kẻ tấn công đầu tiên sử dụng 5 tài khoản để đặt cược với số tiền nhỏ và sau khi nắm vững xác suất cao hơn, đã sử dụng tài khoản cuối cùng với số tiền lớn nhất để đặt cược chính, qua đó giành được giải thưởng với một xác suất cao hơn.


Quá trình tấn công cụ thể như sau (như trong hình bên dưới):


1. Kẻ tấn công triển khai 6 hợp đồng tấn công, khi gọi phương thức tấn công, 6 tài khoản sẽ được gửi đồng thời các yêu cầu giao dịch trong hợp đồng tấn công, do đó các yêu cầu này sẽ được rút ra trong cùng một khối. giao dịch trong giao dịch xổ số tapos_block_num và tapos_block_prefix giống nhau, chỉ bet_id có thể khác nhau.


2. 5 hợp đồng tấn công đầu tiên của kẻ tấn công có thể nhận được bet_id hiện tại khi nhận được thông báo xổ số và đánh giá xem id này có thể khiến tài khoản cuối cùng giành được giải thưởng hay không.


1) Nếu phép tính cho thấy tài khoản cuối cùng không thể trúng thưởng thì thông báo bốc thăm của tài khoản này sẽ được thực hiện bình thường, để các tài khoản tiếp theo sử dụng mã số xổ số mới để tính số ngẫu nhiên;


Mô tả hình ảnh

 

(Hình minh họa 2: Quá trình tấn công nhiều tài khoản của kẻ tấn công)



Xác suất chiến thắng:


Từ quá trình bốc thăm và tấn công ở trên, có thể thấy rằng mỗi khi một tài khoản được thêm vào làm đòn nhử, sẽ có thêm một cơ hội để tính toán trước liệu tài khoản tấn công chính cuối cùng có thắng hay không. Theo số lượng đoán, chọn 20 để tính tỷ lệ cược là 5 lần, 6 tài khoản sẽ tăng xác suất chiến thắng lên khoảng 74%, mặc dù vẫn không đảm bảo rằng tấn nào cũng thắng, nhưng người tấn công có thể thắng 6 lần trong 10 các cuộc tấn công vốn đã rất cao Và làm xáo trộn trật tự của xác suất chiến thắng trong trò chơi thông thường.


Lời khuyên an toàn:


Trong các trò chơi như EOS.Win, số ngẫu nhiên bị ảnh hưởng bởi một biến mà kẻ tấn công có thể kiểm soát, đó là số xổ số trong trò chơi (bet_id). việc tạo số ngẫu nhiên của DApp.Các biến như số xổ số trò chơi, v.v., đồng thời tránh hành động xổ số và hành động thông báo (biên nhận) trong cùng một giao dịch, do đó tránh được tình trạng quay ngược trạng thái giao dịch, từ đó ngăn chặn các cuộc tấn công từ tin tặc.




Chào mừng tham gia cộng đồng chính thức của Odaily
Nhóm đăng ký
https://t.me/Odaily_News
Nhóm trò chuyện
https://t.me/Odaily_GoldenApe
Tài khoản chính thức
https://twitter.com/OdailyChina
Nhóm trò chuyện
https://t.me/Odaily_CryptoPunk