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ỹ.
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.
(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.
(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.
(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.
(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
(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.
(6) Lặp lại quy trình trên để liên tục nhận thêm mã thông báo BNO
(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.
2. 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.
2. 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.
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.
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.
3. 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.
Về chúng tôi
Tầm nhìn của SharkTeam là bảo vệ toàn diện an ninh của thế giới Web3. Nhóm bao gồm các chuyên gia bảo mật giàu kinh nghiệm và các nhà nghiên cứu cấp cao từ khắp nơi trên thế giới. Họ thành thạo lý thuyết cơ bản về chuỗi khối và hợp đồng thông minh, đồng thời cung cấp các dịch vụ bao gồm kiểm toán hợp đồng thông minh, phân tích trên chuỗi và ứng phó khẩn cấp. Nó đã thiết lập mối quan hệ hợp tác lâu dài với những người chơi chính trong các lĩnh vực khác nhau của hệ sinh thái blockchain, chẳng hạn như Polkadot, Moonbeam, đa giác, OKC, Huobi Global, imToken, ChainIDE, v.v.
Trang web chính thức: https://www.sharkteam.org
Địa chỉ: https://www.sharkteam.org
Twitter: https://twitter.com/sharkteamorg
Bất hòa: https://discord.gg/jGH9xXCjDZ
Điện tín: https://t.me/sharkteamorg
Tất cả bình luận