Vào ngày 15 tháng 5 năm 2024, Sonne Finance bị tấn công và dự án thiệt hại hơn 20 triệu đô la Mỹ.
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.
Kẻ tấn công: 0xae4a7cde7c99fb98b0d5fa414aa40f0300531f43
Hợp đồng tấn công: 0x02fa2625825917e9b1f8346a465de1bbc150c5b9
Hợp đồng mục tiêu: 0xe3b81318b1b6776f0877c3770afddff97b9f5fe5
Giao dịch tấn công: 0x9312ae377d7ebdf3c7c3a86f80514878deb5df51aad38b6191d55db53e42b7f0
Quá trình tấn công như sau:
1. Cho vay nhanh 35.569.150 VELO và chuyển các Token VELO này sang hợp đồng soVELO
Vì là chuyển khoản trực tiếp (quyên góp) nên Token soVELO không được đúc. Do đó, trong hợp đồng soVELO, tổng tiền mặt tăng thêm 35.569.150 VELO và tổng nguồn cung của soVELO không thay đổi.
2. Kẻ tấn công tạo hợp đồng mới 0xa16388a6210545b27f669d5189648c1722300b8b và tiến hành tấn công vào hợp đồng mục tiêu trong hợp đồng mới. Quá trình tấn công như sau:
(1) Chuyển 2 soVELO sang hợp đồng mới
(1) Chuyển 2 soVELO sang hợp đồng mới
(2) Kê khai soWETH và soVELO làm tài sản đảm bảo
(3) Vay 265.842.857.910.985.546.929 WETH từ soWETH
Từ việc thực thi hàm mượn ở trên, dựa trên giá trị trả về của hàm getAccountSnapshot, chúng tôi nhận thấy:
Đối với hợp đồng soWETH, số dư hợp đồng mới là 0, số tiền cho vay là 0 và tỷ giá hối đoái (exchangeRate) là 208.504.036.856.714.856.032.085.073
Đối với hợp đồng soVELO, số dư hợp đồng mới là 2, tức là 2wei của soVELO được thế chấp, số tiền vay là 0 và tỷ giá hối đoái (tỷ giá hối đoái) là 17.735.851.964.756.377.265.143.988.000.000.000.000.000.000
tỷ giá hối đoái được tính như sau:
Với 1wei của soVELO được thế chấp, bạn có thể vay không quá 17.735.851.964.756.377.265.143.988 VELO và để vay 265.842.857.910.985.546.929 WETH, bạn cần thế chấp ít nhất 265.842.857.910.985.546.92 9 năm,
Giá của soWETH: soWETHPrice = 2.892.868.789.980.000.000.000,
Giá soVELO: soVELOPrice = 124.601.260.000.000.000
Số lượng WETH có thể được vay bởi soVELO với 1wei thế chấp như sau:
1 * tỷ giá hối đoái * soVELOPrice / soWETHPrice = 763.916.258.364.900.996.923
Khoảng 763 WETH. Chỉ 1wei thế chấp soVELO là đủ để hỗ trợ khoản vay này.
Để vay 265.842.857.910.985.546.929 WETH (khoảng 265 WETH) và chuyển nó thành tài sản thế chấp soVELO, số lượng soVELO tối thiểu cần thiết để thế chấp là:
265.842.857.910.985.546.929 * soWETHGiá / soVELOGiá / tỷ giá hối đoái = 0,348
Nghĩa là, 1wei tài sản thế chấp soVELO là đủ.
265.842.857.910.985.546.929 * soWETHGiá / soVELOGiá / tỷ giá hối đoái = 0,348
Nghĩa là, 1wei tài sản thế chấp soVELO là đủ.
Trên thực tế, chỉ có 1wei tài sản thế chấp soVELO được sử dụng khi đi vay.
(4) Mua lại tài sản cơ sở, cụ thể là 35.471.603.929.512.754.530.287.976 VELO
tỷ giá hối đoái = 17.735.851.964.756.377.265.143.988.000.000.000.000.000.000
Số lượng tài sản thế chấp soVELO cần thiết để mua lại 35.471.603.929.512.754.530.287.976 VELO là
35,471,603,929,512,754,530,287,976 * 1e18 / ExchangeRate = 1,99999436
Trong quá trình tính toán, do phép tính sử dụng phép cắt bớt thay vì làm tròn nên số tiền thế chấp yêu cầu được tính toán thực tế là 1wei của soVELO.
Tài sản thế chấp thực tế là 2wei của soVELO, trong đó 1wei được sử dụng cho khoản vay trên là 265WETH và 1wei còn lại được sử dụng để đổi 35M VELO
(5) Chuyển 265 WETH đã vay và 35M VELO đã mua lại vào hợp đồng tấn công
3. Lặp lại 3 lần (tổng cộng 4 lần) để tạo hợp đồng mới và lặp lại đòn tấn công.
4. Cuối cùng, hoàn trả khoản vay nhanh.
Hai lỗ hổng đã bị khai thác trong cuộc tấn công trên:
(1) Tấn công quyên góp: Chuyển trực tiếp (tặng) VELO Token sang hợp đồng soVELO, thay đổi ExchangeRate, cho phép kẻ tấn công cho vay khoảng 265 WETH với chỉ 1wei soVELO làm tài sản thế chấp.
(2) Vấn đề về độ chính xác của tính toán: Sử dụng mức độ mất độ chính xác trong quá trình tính toán và Tỷ giá hối đoái đã sửa đổi, 35 triệu VELO có thể được đổi khi chỉ thế chấp 1wei soVELO.
Để đố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) Trong quá trình thiết kế và phát triển dự án, phải duy trì tính toàn vẹn và chặt chẽ của logic, đặc biệt là các vấn đề về ký gửi, cầm cố, cập nhật các biến trạng thái và đánh đổi kết quả tính toán nhân chia trong quá trình thực hiện. Quá trình tính toán phải được xem xét càng nhiều tình huống càng tốt để logic hoàn chỉnh và không có sơ hở.
(2) Trước khi dự án đi vào hoạt động trực tuyến, việc kiểm tra hợp đồng thông minh cần được thực hiện bởi một công ty kiểm toán chuyên nghiệp bên thứ ba.
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 nhận dạng và ngăn chặn rủi ro, kiểm toán hợp đồng thông minh, KYT/AML, phân tích trên chuỗi, v.v. và đã tạo ra nền tảng chặn và nhận dạng rủi ro thông minh trên chuỗi ChainAegis, có thể chống lại Mối đe dọa liên tục nâng cao một cách hiệu quả (Nâng cao). Mối đe dọa dai dẳng) trong thế giới Web3, APT). 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, TinTinLand, v.v.
Trang web chính thức: https://www.sharkteam.org
Twitter: https://twitter.com/sharkteamorg
Điện tín: https://t.me/sharkteamorg
Bất hòa: https://discord.gg/jGH9xXCjDZ
Tất cả bình luận