Vào sáng ngày 9 tháng 1, hợp đồng chưa mở mã nguồn được triển khai cách đây 5 năm của Truebit Protocol đã bị tấn công, thiệt hại 8.535,36 ETH (tương đương khoảng 26,4 triệu USD). Nhóm an ninh của Beosin đã tiến hành phân tích lỗ hổng và theo dõi dòng tiền của vụ tấn công này, và chia sẻ kết quả như sau:
Phân tích phương thức tấn công
Trong vụ việc này, chúng tôi lấy giao dịch tấn công chính làm ví dụ phân tích, mã băm giao dịch là: 0xcd4755645595094a8ab984d0db7e3b4aabde72a5c87c4f176a030629c47fb014
Kẻ tấn công gọi hàm getPurchasePrice() để lấy giá
Sau đó gọi hàm có lỗ hổng 0xa0296215(), và đặt giá trị msg.value rất nhỏ
Vì hợp đồng chưa mở mã nguồn, qua việc phân tích mã đã biên dịch, có thể suy đoán rằng hàm này có lỗ logic tính toán, như vấn đề tràn số nguyên, dẫn đến kẻ tấn công thành công tạo ra một lượng lớn token TRU.
Kẻ tấn công sử dụng hàm burn để “bán lại” token đã tạo cho hợp đồng, rút ra một lượng lớn ETH từ kho dự trữ của hợp đồng.
Quá trình này lặp lại 4 lần, mỗi lần giá trị msg.value tăng lên, cho đến khi gần như rút hết ETH trong hợp đồng.
Theo dõi dòng tiền bị đánh cắp
Dựa trên dữ liệu giao dịch trên chuỗi, Beosin đã tiến hành theo dõi dòng tiền chi tiết qua nền tảng điều tra và theo dõi chuỗi khối của mình là BeosinTrace, và chia sẻ kết quả như sau:
Hiện tại, 8.535,36 ETH bị đánh cắp đã được chuyển đi, phần lớn được gửi vào các địa chỉ 0xd12f6e0fa7fbf4e3a1c7996e3f0dd26ab9031a60 và 0x273589ca3713e7becf42069f9fb3f0c164ce850a.
Trong đó, địa chỉ 0xd12f có 4.267,09 ETH, địa chỉ 0x2735 có 4.001 ETH. Địa chỉ của kẻ tấn công (0x6c8ec8f14be7c01672d31cfa5f2cefeab2562b50) còn giữ 267,71 ETH, ba địa chỉ này chưa có thêm các chuyển khoản khác.
Biểu đồ phân tích dòng tiền bị đánh cắp bởi Beosin Trace
Các địa chỉ trên đều đã được Beosin KYT đánh dấu là địa chỉ rủi ro cao, lấy ví dụ là địa chỉ của kẻ tấn công:
Beosin KYT
Kết luận
Số tiền bị đánh cắp lần này liên quan đến hợp đồng thông minh chưa mở mã nguồn cách đây 5 năm. Đối với các hợp đồng như vậy, phía dự án nên nâng cấp hợp đồng, giới thiệu các biện pháp tạm dừng khẩn cấp, giới hạn tham số và sử dụng các tính năng an toàn mới của Solidity. Ngoài ra, kiểm tra an ninh vẫn là bước không thể thiếu trong quá trình phát triển hợp đồng. Thông qua kiểm tra an ninh, các doanh nghiệp Web3 có thể phát hiện và sửa chữa các lỗ hổng tiềm ẩn trong mã hợp đồng, nâng cao độ an toàn của hợp đồng.
*Beosin sẽ cung cấp báo cáo phân tích đầy đủ về dòng tiền và rủi ro địa chỉ trong vụ việc này, mời các bạn liên hệ qua email chính thức support@beosin.com để nhận.
Trang này có thể chứa nội dung của bên thứ ba, được cung cấp chỉ nhằm mục đích thông tin (không phải là tuyên bố/bảo đảm) và không được coi là sự chứng thực cho quan điểm của Gate hoặc là lời khuyên về tài chính hoặc chuyên môn. Xem Tuyên bố từ chối trách nhiệm để biết chi tiết.
Mất hơn 26 triệu USD, Phân tích sự cố bảo mật của Truebit Protocol và theo dõi dòng chảy của quỹ bị đánh cắp
null
Tác giả:Beosin
Vào sáng ngày 9 tháng 1, hợp đồng chưa mở mã nguồn được triển khai cách đây 5 năm của Truebit Protocol đã bị tấn công, thiệt hại 8.535,36 ETH (tương đương khoảng 26,4 triệu USD). Nhóm an ninh của Beosin đã tiến hành phân tích lỗ hổng và theo dõi dòng tiền của vụ tấn công này, và chia sẻ kết quả như sau:
Phân tích phương thức tấn công
Trong vụ việc này, chúng tôi lấy giao dịch tấn công chính làm ví dụ phân tích, mã băm giao dịch là: 0xcd4755645595094a8ab984d0db7e3b4aabde72a5c87c4f176a030629c47fb014
Kẻ tấn công gọi hàm getPurchasePrice() để lấy giá
Sau đó gọi hàm có lỗ hổng 0xa0296215(), và đặt giá trị msg.value rất nhỏ
Vì hợp đồng chưa mở mã nguồn, qua việc phân tích mã đã biên dịch, có thể suy đoán rằng hàm này có lỗ logic tính toán, như vấn đề tràn số nguyên, dẫn đến kẻ tấn công thành công tạo ra một lượng lớn token TRU.
Quá trình này lặp lại 4 lần, mỗi lần giá trị msg.value tăng lên, cho đến khi gần như rút hết ETH trong hợp đồng.
Theo dõi dòng tiền bị đánh cắp
Dựa trên dữ liệu giao dịch trên chuỗi, Beosin đã tiến hành theo dõi dòng tiền chi tiết qua nền tảng điều tra và theo dõi chuỗi khối của mình là BeosinTrace, và chia sẻ kết quả như sau:
Hiện tại, 8.535,36 ETH bị đánh cắp đã được chuyển đi, phần lớn được gửi vào các địa chỉ 0xd12f6e0fa7fbf4e3a1c7996e3f0dd26ab9031a60 và 0x273589ca3713e7becf42069f9fb3f0c164ce850a.
Trong đó, địa chỉ 0xd12f có 4.267,09 ETH, địa chỉ 0x2735 có 4.001 ETH. Địa chỉ của kẻ tấn công (0x6c8ec8f14be7c01672d31cfa5f2cefeab2562b50) còn giữ 267,71 ETH, ba địa chỉ này chưa có thêm các chuyển khoản khác.
Biểu đồ phân tích dòng tiền bị đánh cắp bởi Beosin Trace
Các địa chỉ trên đều đã được Beosin KYT đánh dấu là địa chỉ rủi ro cao, lấy ví dụ là địa chỉ của kẻ tấn công:
Beosin KYT
Kết luận
Số tiền bị đánh cắp lần này liên quan đến hợp đồng thông minh chưa mở mã nguồn cách đây 5 năm. Đối với các hợp đồng như vậy, phía dự án nên nâng cấp hợp đồng, giới thiệu các biện pháp tạm dừng khẩn cấp, giới hạn tham số và sử dụng các tính năng an toàn mới của Solidity. Ngoài ra, kiểm tra an ninh vẫn là bước không thể thiếu trong quá trình phát triển hợp đồng. Thông qua kiểm tra an ninh, các doanh nghiệp Web3 có thể phát hiện và sửa chữa các lỗ hổng tiềm ẩn trong mã hợp đồng, nâng cao độ an toàn của hợp đồng.
*Beosin sẽ cung cấp báo cáo phân tích đầy đủ về dòng tiền và rủi ro địa chỉ trong vụ việc này, mời các bạn liên hệ qua email chính thức support@beosin.com để nhận.