Poolz gặp phải lỗ hổng tràn số học, thiệt hại khoảng 66,5 nghìn đô la Mỹ
Gần đây, dự án Poolz trên mạng Ethereum, Binance Smart Chain và Polygon đã bị tấn công, dẫn đến việc nhiều loại token bị đánh cắp, tổng giá trị khoảng 665.000 USD. Cuộc tấn công xảy ra vào khoảng 3 giờ 16 phút sáng UTC ngày 15 tháng 3 năm 2023.
Theo dữ liệu trên chuỗi, cuộc tấn công này liên quan đến nhiều loại token, bao gồm MEE, ESNC, DON, ASW, KMON, POOLZ, v.v. Kẻ tấn công đã đổi một phần token bị đánh cắp sang BNB, nhưng hiện tại số tiền này vẫn chưa được chuyển đi.
Cuộc tấn công chủ yếu khai thác một lỗ hổng tràn số học trong hợp đồng Poolz. Cụ thể, vấn đề nằm ở hàm getArraySum trong hàm CreateMassPools. Hàm này, khi tính toán tính thanh khoản ban đầu cho người dùng khi tạo nhiều hồ bơi, đã không xử lý đúng các giá trị lớn, dẫn đến tràn số nguyên.
Kẻ tấn công thông qua các tham số đầu vào được xây dựng cẩn thận, khiến cho hàm getArraySum trả về giá trị là 1, trong khi giá trị thực tế của _StartAmount lại là một con số rất lớn. Như vậy, kẻ tấn công chỉ cần chuyển vào 1 token, đã có thể ghi nhận một lượng lớn thanh khoản ban đầu trong hệ thống. Sau đó, kẻ tấn công thông qua việc gọi hàm withdraw để rút ra những "thanh khoản giả" này, từ đó hoàn thành cuộc tấn công.
Để ngăn chặn vấn đề này xảy ra lần nữa, các chuyên gia khuyên các nhà phát triển nên sử dụng phiên bản mới hơn của trình biên dịch Solidity, vì các phiên bản mới sẽ tự động thực hiện kiểm tra tràn. Đối với các dự án sử dụng phiên bản Solidity thấp, có thể xem xét việc giới thiệu thư viện SafeMath của OpenZeppelin để xử lý các phép toán số nguyên, nhằm tránh rủi ro tràn.
Sự kiện lần này một lần nữa nhắc nhở chúng ta rằng việc xử lý an toàn cho các phép toán số học là rất quan trọng trong việc phát triển hợp đồng thông minh. Các nhà phát triển cần luôn cảnh giác với các vấn đề tràn số nguyên có thể xảy ra và thực hiện các biện pháp thích hợp để bảo vệ an toàn cho hợp đồng.
Xem bản gốc
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
12 thích
Phần thưởng
12
7
Chia sẻ
Bình luận
0/400
CryptoPunster
· 07-09 19:50
好家伙 又是合约出事 这韭都 chơi đùa với mọi người到裤衩了
Xem bản gốcTrả lời0
BoredRiceBall
· 07-08 04:48
Một lỗ hổng nữa lại được phát hiện.
Xem bản gốcTrả lời0
NotFinancialAdviser
· 07-06 20:27
Số tiền thương vong cũng không lớn lắm nhỉ~
Xem bản gốcTrả lời0
LiquidationSurvivor
· 07-06 20:25
Lại gặp dự án khỏa thân
Xem bản gốcTrả lời0
SelfSovereignSteve
· 07-06 20:14
Một dự án airdrop lại chơi đùa với đồ ngốc đã chết tiệt.
Poolz bị tấn công tràn số học, thiệt hại 66,5 triệu USD
Poolz gặp phải lỗ hổng tràn số học, thiệt hại khoảng 66,5 nghìn đô la Mỹ
Gần đây, dự án Poolz trên mạng Ethereum, Binance Smart Chain và Polygon đã bị tấn công, dẫn đến việc nhiều loại token bị đánh cắp, tổng giá trị khoảng 665.000 USD. Cuộc tấn công xảy ra vào khoảng 3 giờ 16 phút sáng UTC ngày 15 tháng 3 năm 2023.
Theo dữ liệu trên chuỗi, cuộc tấn công này liên quan đến nhiều loại token, bao gồm MEE, ESNC, DON, ASW, KMON, POOLZ, v.v. Kẻ tấn công đã đổi một phần token bị đánh cắp sang BNB, nhưng hiện tại số tiền này vẫn chưa được chuyển đi.
Cuộc tấn công chủ yếu khai thác một lỗ hổng tràn số học trong hợp đồng Poolz. Cụ thể, vấn đề nằm ở hàm getArraySum trong hàm CreateMassPools. Hàm này, khi tính toán tính thanh khoản ban đầu cho người dùng khi tạo nhiều hồ bơi, đã không xử lý đúng các giá trị lớn, dẫn đến tràn số nguyên.
Kẻ tấn công thông qua các tham số đầu vào được xây dựng cẩn thận, khiến cho hàm getArraySum trả về giá trị là 1, trong khi giá trị thực tế của _StartAmount lại là một con số rất lớn. Như vậy, kẻ tấn công chỉ cần chuyển vào 1 token, đã có thể ghi nhận một lượng lớn thanh khoản ban đầu trong hệ thống. Sau đó, kẻ tấn công thông qua việc gọi hàm withdraw để rút ra những "thanh khoản giả" này, từ đó hoàn thành cuộc tấn công.
Để ngăn chặn vấn đề này xảy ra lần nữa, các chuyên gia khuyên các nhà phát triển nên sử dụng phiên bản mới hơn của trình biên dịch Solidity, vì các phiên bản mới sẽ tự động thực hiện kiểm tra tràn. Đối với các dự án sử dụng phiên bản Solidity thấp, có thể xem xét việc giới thiệu thư viện SafeMath của OpenZeppelin để xử lý các phép toán số nguyên, nhằm tránh rủi ro tràn.
Sự kiện lần này một lần nữa nhắc nhở chúng ta rằng việc xử lý an toàn cho các phép toán số học là rất quan trọng trong việc phát triển hợp đồng thông minh. Các nhà phát triển cần luôn cảnh giác với các vấn đề tràn số nguyên có thể xảy ra và thực hiện các biện pháp thích hợp để bảo vệ an toàn cho hợp đồng.