เมื่อวันที่ 15 พฤษภาคม 2024 Sonne Finance ถูกโจมตี และโครงการนี้สูญเสียเงินไปกว่า 20 ล้านดอลลาร์สหรัฐ

SharkTeam ดำเนินการวิเคราะห์ทางเทคนิคของเหตุการณ์นี้ทันทีและสรุปข้อควรระวังด้านความปลอดภัย เราหวังว่าโครงการต่อ ๆ ไปจะสามารถเรียนรู้จากสิ่งนี้และร่วมกันสร้างแนวป้องกันความปลอดภัยสำหรับอุตสาหกรรมบล็อกเชน
ตัวรุก: 0xae4a7cde7c99fb98b0d5fa414aa40f0300531f43
สัญญาการโจมตี: 0x02fa2625825917e9b1f8346a465de1bbc150c5b9
สัญญาเป้าหมาย: 0xe3b81318b1b6776f0877c3770afddff97b9f5fe5
ธุรกรรมการโจมตี: 0x9312ae377d7ebdf3c7c3a86f80514878deb5df51aad38b6191d55db53e42b7f0
กระบวนการโจมตีมีดังนี้:
1. สินเชื่อ Flash 35,569,150 VELO และโอนโทเค็น VELO เหล่านี้ไปยังสัญญา soVELO

เนื่องจากเป็นการโอนเงินโดยตรง (การบริจาค) ดังนั้นโทเค็น soVELO จึงไม่ถูกสร้างขึ้น ดังนั้น ในสัญญา soVELO TotalCash เพิ่มขึ้น 35,569,150 VELO และ TotalSupply ของ soVELO ยังคงไม่เปลี่ยนแปลง
2. ผู้โจมตีสร้างสัญญาใหม่ 0xa16388a6210545b27f669d5189648c1722300b8b และเริ่มการโจมตีสัญญาเป้าหมายในสัญญาใหม่ กระบวนการโจมตีมีดังนี้:

(1) โอน 2 soVELO ไปยังสัญญาใหม่
(1) โอน 2 soVELO ไปยังสัญญาใหม่
(2) ประกาศ soWETH และ soVELO เป็นหลักประกัน
(3) ยืม 265,842,857,910,985,546,929 WETH จาก soWETH

จากการดำเนินการของฟังก์ชันยืมข้างต้น ตามค่าที่ส่งคืนของฟังก์ชัน getAccountSnapshot เราพบว่า:
สำหรับสัญญา soWETH ยอดคงเหลือสัญญาใหม่คือ 0 จำนวนเงินกู้คือ 0 และอัตราแลกเปลี่ยน (exchangeRate) คือ 208,504,036,856,714,856,032,085,073
สำหรับสัญญา soVELO ยอดสัญญาใหม่คือ 2 นั่นคือ 2wei ของ soVELO ถูกจำนอง จำนวนเงินกู้คือ 0 และอัตราแลกเปลี่ยน (อัตราแลกเปลี่ยน) คือ 17,735,851,964,756,377,265,143,988,000,000,000,000,000,000
exchangeRate คำนวณดังนี้:

ด้วยการจำนอง 1wei ของ soVELO คุณสามารถยืมได้ไม่เกิน 17,735,851,964,756,377,265,143,988 VELO และหากต้องการยืม 265,842,857,910,985,546,929 WETH คุณจะต้องจำนองอย่างน้อย 265,842,857,910,985,546,92 9 ดังนั้น
ราคาของ soWETH: ราคาของ soWETH = 2,892,868,789,980,000,000,000,
ราคาของ soVELO: ราคาของ soVELO = 124,601,260,000,000,000
จำนวน WETH ที่ soVELO สามารถยืมได้โดยที่ 1wei ให้คำมั่นไว้จะเป็นดังนี้:
1 * อัตราการแลกเปลี่ยน * soVELOราคา / ดังนั้นWETHราคา = 763,916,258,364,900,996,923
ประมาณ 763 WTH การจำนอง soVELO เพียง 1wei เท่านั้นก็เพียงพอที่จะสนับสนุนเงินกู้นี้
หากต้องการยืม 265,842,857,910,985,546,929 WETH (ประมาณ 265 WETH) และแปลงเป็นหลักประกัน soVELO จำนวนเงินขั้นต่ำของ soVELO ที่ต้องเป็นหลักประกันคือ:
265,842,857,910,985,546,929 * ดังนั้นWETHราคา / soVELOราคา / อัตราการแลกเปลี่ยน = 0.348
นั่นคือ 1wei ของหลักประกัน soVELO ก็เพียงพอแล้ว
265,842,857,910,985,546,929 * ดังนั้นWETHราคา / soVELOราคา / อัตราการแลกเปลี่ยน = 0.348
นั่นคือ 1wei ของหลักประกัน soVELO ก็เพียงพอแล้ว
ในความเป็นจริง มีการใช้หลักประกัน soVELO เพียง 1wei เท่านั้นในการยืม
(4) ไถ่ถอนทรัพย์สินอ้างอิง ได้แก่ 35,471,603,929,512,754,530,287,976 VELO

อัตราการแลกเปลี่ยน = 17,735,851,964,756,377,265,143,988,000,000,000,000,000,000
จำนวนหลักประกัน soVELO ที่ต้องใช้ในการไถ่ถอน 35,471,603,929,512,754,530,287,976 VELO คือ
35,471,603,929,512,754,530,287,976 * 1e18 / อัตราการแลกเปลี่ยน = 1.99999436
ในระหว่างการคำนวณ เนื่องจากการคำนวณใช้การตัดทอนแทนการปัดเศษ หลักประกันที่จำเป็นที่คำนวณได้จริงคือ 1wei ของ soVELO
หลักประกันที่แท้จริงคือ 2wei ของ soVELO โดยที่ 1wei ใช้สำหรับเงินกู้ข้างต้นจำนวน 265WETH และส่วนที่เหลืออีก 1wei ใช้เพื่อแลก 35M VELO
(5) โอน 265 WETH ที่ยืมมาและ VELO 35M ที่แลกแล้วไปยังสัญญาการโจมตี
3. ทำซ้ำ 3 ครั้ง (รวมทั้งหมด 4 ครั้ง) เพื่อสร้างสัญญาใหม่และโจมตีซ้ำ
4. สุดท้าย ชำระคืนเงินกู้แฟลช

มีช่องโหว่สองช่องโหว่ระหว่างการโจมตีข้างต้น:
(1) การโจมตีด้วยการบริจาค: โอน (บริจาค) โทเค็น VELO โดยตรงไปยังสัญญา soVELO โดยเปลี่ยนอัตราการแลกเปลี่ยน ทำให้ผู้โจมตีสามารถให้ยืมประมาณ 265 WETH โดยมีเพียง 1wei soVELO เป็นหลักประกัน
(2) ปัญหาความแม่นยำในการคำนวณ: การใช้การสูญเสียความแม่นยำในระหว่างกระบวนการคำนวณและอัตราแลกเปลี่ยนที่แก้ไข ทำให้สามารถแลก 35M VELO ได้เมื่อมีการจำนองเพียง 1wei soVELO
เพื่อตอบสนองต่อการโจมตีนี้ เราควรปฏิบัติตามข้อควรระวังต่อไปนี้ในระหว่างกระบวนการพัฒนา:
(1) ในระหว่างกระบวนการออกแบบและพัฒนาของโครงการ ต้องรักษาความสมบูรณ์และความเข้มงวดของตรรกะ โดยเฉพาะอย่างยิ่งประเด็นเรื่องการฝาก การจำนำ การอัปเดตตัวแปรสถานะ และการแลกเปลี่ยนผลการคำนวณการคูณและการหารในระหว่าง กระบวนการคำนวณ ต้องพิจารณาสถานการณ์ให้ได้มากที่สุดเพื่อให้ตรรกะสมบูรณ์และไม่มีช่องโหว่
(2) ก่อนที่โปรเจ็กต์จะออนไลน์ การตรวจสอบสัญญาอัจฉริยะจะต้องดำเนินการโดยบริษัทตรวจสอบมืออาชีพบุคคลที่สาม
วิสัยทัศน์ของ SharkTeam คือการรักษาความปลอดภัยให้กับโลกของ Web3 ทีมงานประกอบด้วยผู้เชี่ยวชาญด้านความปลอดภัยที่มีประสบการณ์และนักวิจัยอาวุโสจากทั่วโลก ซึ่งมีความเชี่ยวชาญในทฤษฎีพื้นฐานของบล็อคเชนและสัญญาอัจฉริยะ โดยให้บริการต่างๆ เช่น การระบุและการบล็อกความเสี่ยง การตรวจสอบสัญญาอัจฉริยะ KYT/AML การวิเคราะห์ออนไลน์ ฯลฯ และได้สร้างแพลตฟอร์มการระบุความเสี่ยงและการบล็อกอัจฉริยะแบบออนไลน์ ChainAegis ซึ่งสามารถต่อสู้กับภัยคุกคามขั้นสูงแบบต่อเนื่อง (ขั้นสูง) ได้อย่างมีประสิทธิภาพ ภัยคุกคามถาวร) ในโลก Web3 , APT) ได้สร้างความสัมพันธ์ความร่วมมือระยะยาวกับผู้เล่นหลักในด้านต่างๆ ของระบบนิเวศ Web3 เช่น Polkadot, Moonbeam, polygon, Sui, OKX, imToken, Collab.Land, TinTinLand เป็นต้น
เว็บไซต์อย่างเป็นทางการ: https://www.sharkteam.org
ทวิตเตอร์: https://twitter.com/sharkteamorg
โทรเลข: https://t.me/sharkteamorg
ดิสคอร์ด: https://discord.gg/jGH9xXCjDZ
ความคิดเห็นทั้งหมด