Cointime

Download App
iOS & Android

SharkTeam: Phân tích nguyên lý tấn công MIM_SPELL

Vào ngày 30 tháng 1 năm 2024, MIM_SPELL bị tấn công cho vay nhanh. Do lỗ hổng tính toán chính xác, dự án đã thiệt hại 6,5 triệu USD.

SharkTeam đã tiến hành phân tích kỹ thuật về sự cố này ngay lập tức và tóm tắt các biện pháp phòng ngừa an ninh. Chúng tôi hy vọng rằng các dự án tiếp theo có thể học hỏi từ điều này và cùng nhau xây dựng tuyến phòng thủ an ninh cho ngành công nghiệp blockchain.

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

0x87F585809Ce79aE39A5fa0C7C96d0d159eb678C9

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

0xe1091d17473b049cccd65c54f71677da85b77a45

0x13AF445F81B0DEcA5dCb2Be6A4C691F545c95912

0xe59b54a9e37ab69f6e9312a9b3f72539ee184e5a

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

0x7259e152103756e1616A77Ae982353c3751A6a90

Giao dịch tấn công:

0x26a83db7e28838dd9fee6fb7314ae58dcc6aee9a20bf224c386ff5e80f7e4cf2

0xdb4616b89ad82062787a4e924d520639791302476484b9a6eca5126f79b6d877

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

1. Kẻ tấn công (0x87F58580) đã vay 300.000 mã thông báo MIM thông qua khoản vay nhanh.

2. Sau đó, 240.000 mã thông báo MIM đã được gửi đến hợp đồng bị tấn công (0x7259e1520) cho bước tiếp theo là hoàn trả khoản vay của người dùng.

2. Sau đó, 240.000 mã thông báo MIM đã được gửi đến hợp đồng bị tấn công (0x7259e1520) cho bước tiếp theo là hoàn trả khoản vay của người dùng.

3. Sau đó, kẻ tấn công (0x87F58580) gọi hàm returnForAll để trả các khoản vay của người dùng khác, sau đó gọi hàm trả nợ để trả các khoản vay của người dùng khác nhằm giảm biến co giãn về 0.

4. Sau khi biến đàn hồi giảm xuống 0, kẻ tấn công (0x87F58580) tạo một hợp đồng tấn công mới (0xe59b54a9) và liên tục gọi các hàm vay và trả nợ cho đến khi đàn hồi = 0 và base = 120080183810681886665215049728.

5. Sau đó, kẻ tấn công (0x87F58580) gọi hàm vay và hàm rút của hợp đồng DegenBox để cho vay 5.000.047 mã thông báo MIM.

5. Sau đó, kẻ tấn công (0x87F58580) gọi hàm vay và hàm rút của hợp đồng DegenBox để cho vay 5.000.047 mã thông báo MIM.

6. Kẻ tấn công (0x87F58580) đã trả lại chức năng flash loan và đổi 4.400.000 mã thông báo MIM lấy 1.807 ETH. Lợi nhuận từ giao dịch này là khoảng 450W.

Bản chất của cuộc tấn công là có vấn đề về độ chính xác khi tính toán các biến số cho vay, khiến các biến chính co giãn và giá trị cơ sở bị thao túng và tỷ lệ mất cân bằng, dẫn đến các vấn đề khi tính toán số tiền thế chấp và khoản vay, và cuối cùng là cho vay quá nhiều token MIM.

Hàm vay và hàm trả nợ trong hợp đồng bị tấn công (0x7259e1520) đều sử dụng phương pháp làm tròn lên khi tính toán các biến co giãn và biến cơ sở.

Kẻ tấn công (0x87F58580) trước tiên đặt biến đàn hồi và biến cơ sở lần lượt là 0 và 97 bằng cách hoàn trả các khoản vay của người dùng khác.

Sau đó, hàm mượn và hàm trả nợ được gọi liên tục và số lượng tham số đều bằng 1. Khi hàm mượn được gọi lần đầu tiên, vì elastic=0, logic if ở trên sẽ được thực thi và trả về hàm add. Điều này dẫn đến co giãn = 1, cơ sở = 98.

Sau đó, kẻ tấn công (0x87F58580) gọi hàm mượn và chuyển vào 1. Vì elastic=1, logic else sẽ được thực thi và giá trị trả về được tính toán là 98. Theo cách này, khi quay lại hàm add, elastic=2 và biến cơ sở là 196.

Nhưng tại thời điểm này, kẻ tấn công (0x87F58580) gọi hàm trả nợ và chuyển vào 1. Vì elastic=2 nên logic else sẽ được thực thi. Biến đàn hồi được tính toán ban đầu là 1*2/98 = 0, nhưng do các bước sau của việc làm tròn lên, kết quả tính ra giá trị trả về là 1, để khi quay về hàm con, biến đàn hồi đổi về 1, biến cơ sở là 195.

Có thể thấy, sau vòng vay-trả nợ, biến đàn hồi không thay đổi và biến cơ sở tăng gần gấp đôi, lợi dụng lỗ hổng này, hacker thường xuyên lặp chức năng vay-trả nợ, cuối cùng gọi trả nợ lần nữa, cuối cùng tạo ra elastic=0 cơ sở = 120080183810681886665215049728.

Khi tỷ lệ giữa biến đàn hồi và biến Cơ sở bị mất cân bằng nghiêm trọng, kẻ tấn công (0x87F58580) có thể cho vay một lượng lớn mã thông báo MIM bằng cách thêm một ít tài sản thế chấp để vượt qua các hạn chế trong công cụ sửa đổi dung môi.

Để đố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 phát triển logic liên quan đến tính toán chính xác, hãy xem xét cẩn thận độ chính xác và làm tròn.

2. Trước khi dự án trực tuyến, nhóm kiểm toán chuyên nghiệp của bên thứ ba cần tiến hành kiểm tra hợp đồng thông minh.

Tầm nhìn của SharkTeam là bảo vệ 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, những người thành thạo lý thuyết cơ bản về blockchain và hợp đồng thông minh. Nó cung cấp các dịch vụ bao gồm phân tích dữ liệu lớn trên chuỗi, cảnh báo rủi ro trên chuỗi, KYT/AML, kiểm toán hợp đồng thông minh, phục hồi tài sản được mã hóa và các dịch vụ khác, đồng thời đã tạo ra nền tảng nhận dạng rủi ro thông minh trên chuỗi ChainAegis. phân tích biểu đồ chuyên sâu và có thể chống lại mối đe dọa liên tục nâng cao (APT) một cách hiệu quả trong thế giới Web3. 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ủ chốt trong các lĩnh vực khác nhau của hệ sinh thái Web3, như Polkadot, Moonbeam, Polygon, Sui, OKX, imToken, Collab.Land, v.v.

Trang web chính thức: 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

Các bình luận

Tất cả bình luận

Recommended for you