Cointime

Download App
iOS & Android

SharkTeam: การวิเคราะห์เหตุการณ์การโจมตี Sonne Finance

เมื่อวันที่ 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

ความคิดเห็น

ความคิดเห็นทั้งหมด

Recommended for you