Poolz gặp phải cuộc tấn công tràn số học, thiệt hại khoảng 66,5 triệu đô la
Gần đây, một sự kiện an ninh nghiêm trọng đã xảy ra trên nhiều mạng lưới blockchain. Theo dữ liệu giám sát blockchain cho thấy, vào rạng sáng ngày 15 tháng 3, dự án Poolz trên mạng Ethereum, chuỗi thông minh BNB và mạng Polygon đã bị tấn công bởi hacker, dẫn đến việc số lượng lớn token bị đánh cắp.
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. Tổng giá trị của các token bị đánh cắp ước tính khoảng 665.000 USD. Hiện tại, kẻ tấn công đã chuyển đổi một phần token bị đánh cắp sang BNB, nhưng vẫn chưa chuyển tiền ra khỏi địa chỉ tấn công.
Phân tích cho thấy, cuộc tấn công này chủ yếu lợi dụng một lỗ hổng tràn số học trong hợp đồng thông minh Poolz. Kẻ tấn công đã khéo léo thao tác tính toán số lượng token thông qua việc gọi hàm CreateMassPools, đạt được mục đích nhận được số lượng lớn token chỉ với một lượng token rất nhỏ.
Cụ thể, kẻ tấn công đầu tiên đã đổi một lượng nhỏ mã thông báo MNZ tại một sàn giao dịch phi tập trung nào đó. Sau đó, kẻ tấn công đã gọi hàm CreateMassPools để tạo hàng loạt các bể thanh khoản. Hàm này được sử dụng để người dùng có thể tạo bể một cách hàng loạt và cung cấp thanh khoản ban đầu.
Vấn đề nằm ở hàm getArraySum. Hàm này chịu trách nhiệm tính toán số lượng thanh khoản ban đầu mà người dùng cung cấp. Kẻ tấn công đã truyền vào một mảng được xây dựng đặc biệt, trong đó chứa hai số lớn. Khi hai số này được cộng lại, do giới hạn của kiểu uint256, đã xảy ra tràn số nguyên, dẫn đến kết quả cuối cùng trở thành 1.
Tuy nhiên, hợp đồng sử dụng giá trị lớn của đầu vào gốc khi ghi lại thuộc tính của pool. Điều này đã gây ra một sự không nhất quán nghiêm trọng: kẻ tấn công thực tế chỉ chuyển vào 1 token, nhưng hợp đồng lại ghi lại một giá trị khổng lồ. Cuối cùng, kẻ tấn công đã dễ dàng rút ra số lượng lớn token bằng cách gọi hàm withdraw, hoàn thành toàn bộ quá trình tấn công.
Sự kiện này một lần nữa làm nổi bật tầm quan trọng của an ninh hợp đồng thông minh. Để ngăn chặn các vấn đề tương tự, các nhà phát triển được khuyến nghị sử dụng phiên bản mới hơn của ngôn ngữ lập trình Solidity, vì phiên bản mới sẽ tự động thực hiện kiểm tra tràn trong quá trình biên dịch. Đối với các dự án sử dụng phiên bản cũ của Solidity, có thể xem xét việc đưa vào thư viện SafeMath của OpenZeppelin để giải quyết vấn đề tràn số nguyên.
Sự kiện này nhắc nhở chúng ta rằng ngay cả những sơ suất lập trình có vẻ nhỏ cũng có thể dẫn đến tổn thất kinh tế lớn. Các dự án blockchain cần chú trọng hơn đến việc kiểm tra mã và kiểm tra an ninh để đảm bảo an toàn cho tài sản của người dùng.
Xem bản gốc
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.
11 thích
Phần thưởng
11
5
Chia sẻ
Bình luận
0/400
ShibaOnTheRun
· 07-12 01:15
Lại là tay sai của lỗ hổng tràn
Xem bản gốcTrả lời0
GateUser-ccc36bc5
· 07-11 10:27
又 một dự án chết tiệt
Xem bản gốcTrả lời0
GasFeeNightmare
· 07-09 09:48
thế giới tiền điện tử một ngày bằng một năm trên thế gian
Poolz遭 tấn công tràn số học, thiệt hại đa chuỗi 66.5 triệu đô la Mỹ
Poolz gặp phải cuộc tấn công tràn số học, thiệt hại khoảng 66,5 triệu đô la
Gần đây, một sự kiện an ninh nghiêm trọng đã xảy ra trên nhiều mạng lưới blockchain. Theo dữ liệu giám sát blockchain cho thấy, vào rạng sáng ngày 15 tháng 3, dự án Poolz trên mạng Ethereum, chuỗi thông minh BNB và mạng Polygon đã bị tấn công bởi hacker, dẫn đến việc số lượng lớn token bị đánh cắp.
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. Tổng giá trị của các token bị đánh cắp ước tính khoảng 665.000 USD. Hiện tại, kẻ tấn công đã chuyển đổi một phần token bị đánh cắp sang BNB, nhưng vẫn chưa chuyển tiền ra khỏi địa chỉ tấn công.
Phân tích cho thấy, cuộc tấn công này chủ yếu lợi dụng một lỗ hổng tràn số học trong hợp đồng thông minh Poolz. Kẻ tấn công đã khéo léo thao tác tính toán số lượng token thông qua việc gọi hàm CreateMassPools, đạt được mục đích nhận được số lượng lớn token chỉ với một lượng token rất nhỏ.
Cụ thể, kẻ tấn công đầu tiên đã đổi một lượng nhỏ mã thông báo MNZ tại một sàn giao dịch phi tập trung nào đó. Sau đó, kẻ tấn công đã gọi hàm CreateMassPools để tạo hàng loạt các bể thanh khoản. Hàm này được sử dụng để người dùng có thể tạo bể một cách hàng loạt và cung cấp thanh khoản ban đầu.
Vấn đề nằm ở hàm getArraySum. Hàm này chịu trách nhiệm tính toán số lượng thanh khoản ban đầu mà người dùng cung cấp. Kẻ tấn công đã truyền vào một mảng được xây dựng đặc biệt, trong đó chứa hai số lớn. Khi hai số này được cộng lại, do giới hạn của kiểu uint256, đã xảy ra tràn số nguyên, dẫn đến kết quả cuối cùng trở thành 1.
Tuy nhiên, hợp đồng sử dụng giá trị lớn của đầu vào gốc khi ghi lại thuộc tính của pool. Điều này đã gây ra một sự không nhất quán nghiêm trọng: kẻ tấn công thực tế chỉ chuyển vào 1 token, nhưng hợp đồng lại ghi lại một giá trị khổng lồ. Cuối cùng, kẻ tấn công đã dễ dàng rút ra số lượng lớn token bằng cách gọi hàm withdraw, hoàn thành toàn bộ quá trình tấn công.
Sự kiện này một lần nữa làm nổi bật tầm quan trọng của an ninh hợp đồng thông minh. Để ngăn chặn các vấn đề tương tự, các nhà phát triển được khuyến nghị sử dụng phiên bản mới hơn của ngôn ngữ lập trình Solidity, vì phiên bản mới sẽ tự động thực hiện kiểm tra tràn trong quá trình biên dịch. Đối với các dự án sử dụng phiên bản cũ của Solidity, có thể xem xét việc đưa vào thư viện SafeMath của OpenZeppelin để giải quyết vấn đề tràn số nguyên.
Sự kiện này nhắc nhở chúng ta rằng ngay cả những sơ suất lập trình có vẻ nhỏ cũng có thể dẫn đến tổn thất kinh tế lớn. Các dự án blockchain cần chú trọng hơn đến việc kiểm tra mã và kiểm tra an ninh để đảm bảo an toàn cho tài sản của người dùng.