Phân tích nguyên lý sự kiện tấn công BNO

金色财经_

Vào ngày 18 tháng 7 năm 2023, giờ Bắc Kinh, Ocean BNO đã bị một cuộc tấn công cho vay chớp nhoáng và kẻ tấn công đã kiếm được khoảng 500.000 đô la Mỹ.

20230718161919783image.png

SharkTeam lần đầu tiên tiến hành phân tích kỹ thuật về sự cố này và tóm tắt các biện pháp phòng ngừa bảo mật, hy vọng rằng các dự án tiếp theo có thể rút kinh nghiệm và cùng nhau xây dựng tuyến phòng thủ bảo mật cho ngành công nghiệp blockchain.

1. Phân tích sự kiện

Địa chỉ kẻ tấn công:

0xa6566574edc60d7b2adbacedb71d5142cf2677fb

Hợp đồng tấn công:

0xd138b9a58d3e5f4be1cd5ec90b66310e241c13cd

Hợp đồng bị tấn công:

0xdCA503449899d5649D32175a255A8835A03E4006

Giao dịch tấn công:

0x33fed54de490797b99b2fc7a159e43af57e9e6bdefc2c2d052dc814cfe0096b9

Quá trình tấn công:

(1) Kẻ tấn công (0xa6566574) đã mượn 286.449 BNO thông qua khoản vay flash pancakeSwap.

20230718161449018image.png

(2) Sau đó, gọi chức năng stakeNft của hợp đồng bị tấn công (0xdCA50344) để cam kết hai nft.

20230718161457306image.png

(3) Sau đó, gọi chức năng cầm cố của hợp đồng bị tấn công (0xdCA50344) để cầm cố 277856 BNO coin.

20230718161633397image.png

(4) Gọi chức năng EmergencyWithdraw của hợp đồng bị tấn công (0xdCA50344) để trích xuất tất cả BNO

20230718161641122image.png

(5) Sau đó, gọi hàm unstakeNft của hợp đồng bị tấn công (0xdCA50344), truy xuất hai nft đã cam kết và nhận thêm mã thông báo BNO.

20230718161732948image.png

(6) Lặp lại quy trình trên để liên tục nhận thêm mã thông báo BNO

20230718161752651image.png

(7) Sau khi hoàn trả khoản vay chớp nhoáng, hãy đổi tất cả các mã thông báo BNO lấy 50,5W BUSD và rời khỏi thị trường với lợi nhuận.

20230718161800166image.png

Thứ hai, phân tích lỗ hổng

Nguyên nhân sâu xa của cuộc tấn công này là: có sự cố với cơ chế tính toán phần thưởng và logic tương tác của chức năng rút tiền khẩn cấp trong hợp đồng bị tấn công (0xdCA50344), khiến người dùng nhận được thêm mã thông báo phần thưởng sau khi rút tiền gốc.

20230718161812689image.png

20230718161820027image.png

Hợp đồng cung cấp chức năng EmergencyWithdraw để rút mã thông báo khẩn cấp và xóa tổng số tiền thế chấp và tổng số nợ bonusDebt của kẻ tấn công, nhưng không xóa biến nftAddition của kẻ tấn công và biến nftAddition cũng được tính thông qua biến số tiền đặt cọc.

20230718161834850image.png

Trong hàm unstakeNft, phần thưởng hiện tại của người dùng sẽ vẫn được tính và nếu biến nftAddition không được đặt lại về 0, thì hàmendingFit sẽ vẫn trả về giá trị phần thưởng BNO bổ sung, khiến kẻ tấn công lấy thêm mã thông báo BNO.

20230718161842539image.png

Thứ ba, Khuyến nghị bảo mật

Để đối phó với cuộc tấn công này, chúng ta nên tuân theo các biện pháp phòng ngừa sau trong quá trình phát triển:

(1) Khi tính phần thưởng, hãy xác minh xem người dùng đã rút tiền gốc chưa.

(2) Trước khi dự án trực tuyến, cần tìm kiếm sự hỗ trợ kỹ thuật từ nhóm kiểm toán chuyên nghiệp của bên thứ ba.

Tuyên bố miễn trừ trách nhiệm: Thông tin trên trang này có thể đến từ bên thứ ba và không đại diện cho quan điểm hoặc ý kiến của Gate. Nội dung hiển thị trên trang này chỉ mang tính chất tham khảo và không cấu thành bất kỳ lời khuyên tài chính, đầu tư hoặc pháp lý nào. Gate không đảm bảo tính chính xác hoặc đầy đủ của thông tin và sẽ không chịu trách nhiệm cho bất kỳ tổn thất nào phát sinh từ việc sử dụng thông tin này. Đầu tư vào tài sản ảo tiềm ẩn rủi ro cao và chịu biến động giá đáng kể. Bạn có thể mất toàn bộ vốn đầu tư. Vui lòng hiểu rõ các rủi ro liên quan và đưa ra quyết định thận trọng dựa trên tình hình tài chính và khả năng chấp nhận rủi ro của riêng bạn. Để biết thêm chi tiết, vui lòng tham khảo Tuyên bố miễn trừ trách nhiệm.
Bình luận
0/400
Không có bình luận