

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.
1. Phân tích giao dịch tấn công
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 một hợp đồng mới 0xa16388a6210545b27f669d5189648c1722300b8b và thực hiện một cuộc tấn công vào hợp đồng mục tiêu trong hợp đồng mới như sau:
(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 từ soWETH 265, 842, 857, 910, 985, 546, 929 WETH
Từ quá trình thực thi hàm mượn trên, dựa vào giá trị trả về của hàm getAccountSnapshot, chúng ta 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 (Tỷ giá hối đoái) 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à 2 wei của soVELO được thế chấp, số tiền cho 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 1 wei 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, 929 soWETH,
Giá soWETH: soWETHPrice = 2, 892, 868, 789, 980, 000, 000, 000,
Giá soVELO: soVELOGiá = 124,601,260,000,000,000
Số lượng WETH có thể được soVELO vay với khoản thế chấp là 1 wei như sau:
1 * tỷ giá hối đoái * soVELOPrice / soWETHPrice = 763, 916, 258, 364, 900, 996, 923
Khoảng 763 WETH. Chỉ 1 wei tài sản thế chấp soVELO là đủ để hỗ trợ khoản vay này.
Khoản vay 265, 842, 857, 910, 985, 546, 929 WETH (khoảng 265 WETH) được chuyể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á trao đổi = 0,348
Nghĩa là, 1 wei tài sản thế chấp soVELO là đủ.
Trên thực tế, 2 wei tài sản thế chấp soVELO chỉ được sử dụng để vay 1 wei
(4) Mua lại tài sản cơ sở 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 đảm bảo 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 * 1 e 18 / ExchangeRate = 1.99999436
Khi tính toán, do phép tính sử dụng phươ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à VVELO bằng 1 wei.
Tài sản thế chấp thực tế là 2 wei soVELO, trong đó 1 wei được sử dụng cho khoản vay trên là 265 WETH và 1 wei còn lại được sử dụng để mua lại 35 M VELO
(5) Chuyển 265 WETH đã vay và 35 M VELO được 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.
2. Phân tích lỗ hổng
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 chỉ với 1 wei soVELO làm tài sản thế chấp
(2) Vấn đề về độ chính xác của tính toán: Do 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 M VELO có thể được đổi chỉ với 1 wei soVELO được thế chấp
3. Khuyến nghị về an toàn
Để đố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.
Về chúng tôi
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
