คำเตือนความเสี่ยง: ระวังความเสี่ยงจากการระดมทุนที่ผิดกฎหมายในนาม 'สกุลเงินเสมือน' 'บล็อกเชน' — จากห้าหน่วยงานรวมถึงคณะกรรมการกำกับดูแลการธนาคารและการประกันภัย
ข่าวสาร
ค้นพบ
ค้นหา
เข้าสู่ระบบ
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt
BTC
ETH
HTX
SOL
BNB
ดูตลาด
SharkTeam: การวิเคราะห์เหตุการณ์การโจมตี Sonne Finance
SharkTeam
特邀专栏作者
2024-05-20 05:12
บทความนี้มีประมาณ 1260 คำ การอ่านทั้งหมดใช้เวลาประมาณ 2 นาที
การตีความทางเทคนิคของการโจมตี Sonne Finance

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

SharkTeam ดำเนินการวิเคราะห์ทางเทคนิคของเหตุการณ์นี้ทันทีและสรุปข้อควรระวังด้านความปลอดภัย เราหวังว่าโครงการต่อ ๆ ไปจะสามารถเรียนรู้จากสิ่งนี้และร่วมกันสร้างแนวป้องกันความปลอดภัยสำหรับอุตสาหกรรมบล็อกเชน

1. การวิเคราะห์ธุรกรรมการโจมตี

ตัวรุก: 0xae4a7cde7c99fb98b0d5fa414aa40f0300531f43

สัญญาการโจมตี: 0x02fa2625825917e9b1f8346a465de1bbc150c5b9

สัญญาเป้าหมาย: 0xe3b81318b1b6776f0877c3770afddff97b9f5fe5

ธุรกรรมการโจมตี: 0x9312ae377d7ebdf3c7c3a86f80514878deb5df51aad38b6191d55db53e42b7f0

กระบวนการโจมตีมีดังนี้:

1. ยืมแฟลช 35, 569, 150 VELO และโอนโทเค็น VELO เหล่านี้ไปยังสัญญา soVELO

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

2. ผู้โจมตีสร้างสัญญาใหม่ 0xa16388a6210545b27f669d5189648c1722300b8b และเริ่มการโจมตีสัญญาเป้าหมายในสัญญาใหม่ กระบวนการโจมตีมีดังนี้:

(1) โอน 2 soVELO ไปยังสัญญาใหม่

(2) ประกาศ soWETH และ soVELO เป็นหลักประกัน

(3) ยืมจากเลขที่ 265, 842, 857, 910, 985, 546, 929 WETH

จากกระบวนการดำเนินการของฟังก์ชันยืมข้างต้น ตามค่าที่ส่งคืนของฟังก์ชัน getAccountSnapshot เราพบว่า:

สำหรับสัญญา soWETH ยอดคงเหลือของสัญญาใหม่คือ 0 จำนวนเงินกู้คือ 0 และอัตราแลกเปลี่ยน (exchangeRate) คือ 208, 504, 036, 856, 714, 856, 032, 085, 073

สำหรับสัญญา soVELO ยอดคงเหลือของสัญญาใหม่คือ 2 นั่นคือ 2 wei ของ soVELO ถูกจำนอง จำนวนเงินกู้คือ 0 และอัตราแลกเปลี่ยน (exchangeRate) คือ 17, 735, 851, 964, 756, 377, 265, 143, 988, 000, 000 , 000, 000, 000, 000

exchangeRate คำนวณดังนี้:

เมื่อจำนอง soVELO 1 wei คุณสามารถยืมได้ไม่เกิน 17, 735, 851, 964, 756, 377, 265, 143, 988 VELO และยืม 265, 842, 857, 910, 985, 546, 929 WETH, คุณต้องจำนองอย่างน้อย 265 , 842, 857, 910, 985, 546, 929 ดังนั้น

ราคาของ soWETH: ราคาของ soWETH = 2, 892, 868, 789, 980, 000, 000, 000,

ราคาของ soVELO: ราคา soVELO = 124, 601, 260, 000, 000, 000

จำนวน WETH ที่ soVELO สามารถยืมได้โดยมี 1 wei ให้คำมั่นไว้ดังนี้:

1 * อัตราการแลกเปลี่ยน * soVELOราคา / ดังนั้นราคา = 763, 916, 258, 364, 900, 996, 923

ประมาณ 763 วธ. หลักประกัน soVELO เพียง 1 wei ก็เพียงพอที่จะรองรับเงินกู้นี้

การกู้ยืม 265, 842, 857, 910, 985, 546, 929 WETH (ประมาณ 265 WETH) จะถูกแปลงเป็นหลักประกัน soVELO จำนวนเงินขั้นต่ำที่ต้องเป็นหลักประกันคือ:

265, 842, 857, 910, 985, 546, 929 * ดังนั้นWETHราคา / soVELOราคา / อัตราการแลกเปลี่ยน = 0.348

นั่นคือ 1 wei ของหลักประกัน soVELO ก็เพียงพอแล้ว

ในความเป็นจริง 2 wei ของหลักประกัน soVELO ถูกใช้สำหรับการยืมเพียง 1 wei เท่านั้น

(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 * 1 e 18 / อัตราการแลกเปลี่ยน = 1.99999436

เมื่อคำนวณ เนื่องจากการคำนวณใช้การตัดทอนแทนการปัดเศษ หลักประกันที่จำเป็นที่คำนวณได้จริงคือ soVELO เท่ากับ 1 wei

หลักประกันที่แท้จริงคือ 2 wei ของ soVELO โดย 1 wei ใช้สำหรับเงินกู้ข้างต้นจำนวน 265 WETH และอีก 1 wei ที่เหลือใช้สำหรับไถ่ถอน 35 M VELO

(5) โอน 265 WETH ที่ยืมมาและ VELO 35 M ที่แลกแล้วไปยังสัญญาโจมตี

3. ทำซ้ำ 3 ครั้ง (รวมทั้งหมด 4 ครั้ง) เพื่อสร้างสัญญาใหม่และโจมตีซ้ำ

4. สุดท้าย ชำระคืนเงินกู้แฟลช

2. การวิเคราะห์ช่องโหว่

มีช่องโหว่สองช่องโหว่ในการโจมตีข้างต้น:

(1) การโจมตีด้วยการบริจาค: โอนโดยตรง (บริจาค) โทเค็น VELO ไปยังสัญญา soVELO โดยเปลี่ยนอัตราการแลกเปลี่ยน ทำให้ผู้โจมตีสามารถให้ยืมประมาณ 265 WETH โดยมีเพียง 1 wei soVELO เป็นหลักประกัน

(2) ปัญหาความแม่นยำในการคำนวณ: การใช้การสูญเสียความแม่นยำในระหว่างขั้นตอนการคำนวณและอัตราแลกเปลี่ยนที่แก้ไข ทำให้สามารถแลก 35 M VELO ได้โดยจำนอง 1 wei soVELO เท่านั้น

3. คำแนะนำด้านความปลอดภัย

เพื่อตอบสนองต่อการโจมตีนี้ เราควรปฏิบัติตามข้อควรระวังต่อไปนี้ในระหว่างกระบวนการพัฒนา:

(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

ความปลอดภัย
สัญญาที่ชาญฉลาด
ยินดีต้อนรับเข้าร่วมชุมชนทางการของ Odaily
กลุ่มสมาชิก
https://t.me/Odaily_News
กลุ่มสนทนา
https://t.me/Odaily_CryptoPunk
บัญชีทางการ
https://twitter.com/OdailyChina
กลุ่มสนทนา
https://t.me/Odaily_CryptoPunk
สรุปโดย AI
กลับไปด้านบน
การตีความทางเทคนิคของการโจมตี Sonne Finance
ดาวน์โหลดแอพ Odaily พลาเน็ตเดลี่
ให้คนบางกลุ่มเข้าใจ Web3.0 ก่อน
IOS
Android