SharkTeam: Phân tích Sự cố tấn công tài chính Sonne
SharkTeam
2024-05-20 05:12
本文约1260字,阅读全文需要约5分钟
Giải thích kỹ thuật về cuộc tấn công vào Sonne Finance.

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

SharkTeam
作者文库