เมื่อวันที่ 30 มกราคม 2024 MIM_SPELL ประสบกับการโจมตีแบบ flash Loan เนื่องจากช่องโหว่ในการคำนวณที่แม่นยำ โครงการจึงสูญเสียเงินจำนวน 6.5 ล้านเหรียญสหรัฐ

SharkTeam ดำเนินการวิเคราะห์ทางเทคนิคของเหตุการณ์นี้ทันทีและสรุปข้อควรระวังด้านความปลอดภัย เราหวังว่าโครงการต่อ ๆ ไปจะสามารถเรียนรู้จากสิ่งนี้และร่วมกันสร้างแนวป้องกันความปลอดภัยสำหรับอุตสาหกรรมบล็อคเชน
ที่อยู่ของผู้โจมตี:
0x87F585809Ce79aE39A5fa0C7C96d0d159eb678C9
สัญญาโจมตี:
0xe1091d17473b049cccd65c54f71677da85b77a45
0x13AF445F81B0DEcA5dCb2Be6A4C691F545c95912
0xe59b54a9e37ab69f6e9312a9b3f72539ee184e5a
สัญญาที่ถูกโจมตี:
0x7259e152103756e1616A77Ae982353c3751A6a90
ธุรกรรมการโจมตี:
0x26a83db7e28838dd9fee6fb7314ae58dcc6aee9a20bf224c386ff5e80f7e4cf2
0xdb4616b89ad82062787a4e924d520639791302476484b9a6eca5126f79b6d877
กระบวนการโจมตี:
1. ผู้โจมตี (0x87F58580) ยืมโทเค็น MIM จำนวน 300,000 เหรียญผ่านการกู้ยืมแบบแฟลช

2. ต่อจากนั้น โทเค็น MIM จำนวน 240,000 เหรียญจะถูกส่งไปยังสัญญาที่ถูกโจมตี (0x7259e1520) เพื่อดำเนินการชำระคืนเงินกู้ของผู้ใช้ในขั้นตอนต่อไป
2. ต่อจากนั้น โทเค็น MIM จำนวน 240,000 เหรียญจะถูกส่งไปยังสัญญาที่ถูกโจมตี (0x7259e1520) เพื่อดำเนินการชำระคืนเงินกู้ของผู้ใช้ในขั้นตอนต่อไป

3. ผู้โจมตี (0x87F58580) เรียกฟังก์ชัน repayForAll เพื่อชำระคืนเงินกู้ของผู้ใช้รายอื่น จากนั้นเรียกฟังก์ชัน repay เพื่อชำระคืนเงินกู้ของผู้ใช้รายอื่น เพื่อลดตัวแปรยืดหยุ่นให้เป็น 0


4. หลังจากที่ตัวแปรยืดหยุ่นลดลงเหลือ 0 ผู้โจมตี (0x87F58580) จะสร้างสัญญาการโจมตีใหม่ (0xe59b54a9) และเรียกใช้ฟังก์ชันยืมและชำระคืนอย่างต่อเนื่องจนกระทั่งยืดหยุ่น = 0 และฐาน = 120080183810681886665215049728


5. จากนั้นผู้โจมตี (0x87F58580) เรียกฟังก์ชันยืมและฟังก์ชันถอนของสัญญา DegenBox เพื่อให้ยืมโทเค็น MIM 5,000,047 รายการ
5. จากนั้นผู้โจมตี (0x87F58580) เรียกฟังก์ชันยืมและฟังก์ชันถอนของสัญญา DegenBox เพื่อให้ยืมโทเค็น MIM 5,000,047 รายการ

6. ผู้โจมตี (0x87F58580) ส่งคืนฟังก์ชัน flash Loan และแลกเปลี่ยนโทเค็น MIM 4,400,000 เหรียญเป็น 1,807 ETH กำไรจากธุรกรรมนี้อยู่ที่ประมาณ 450W

สาระสำคัญของการโจมตีคือมีปัญหาความแม่นยำในการคำนวณตัวแปรสินเชื่อซึ่งทำให้ตัวแปรสำคัญยืดหยุ่นและค่าฐานถูกจัดการและสัดส่วนไม่สมดุลส่งผลให้เกิดปัญหาในการคำนวณหลักประกันและจำนวนเงินกู้และ ท้ายที่สุดแล้ว การให้ยืมโทเค็น MIM มากเกินไป
ฟังก์ชันยืมและฟังก์ชันชำระคืนในสัญญาที่ถูกโจมตี (0x7259e1520) ทั้งสองใช้วิธีปัดเศษขึ้นเมื่อคำนวณตัวแปรยืดหยุ่นและฐาน





ผู้โจมตี (0x87F58580) ตั้งค่าตัวแปรยืดหยุ่นและตัวแปรฐานเป็น 0 และ 97 ตามลำดับก่อนโดยชำระคืนเงินกู้ของผู้ใช้รายอื่น

จากนั้นฟังก์ชันยืมและฟังก์ชันชำระคืนจะถูกเรียกอย่างต่อเนื่อง และจำนวนพารามิเตอร์จะเป็น 1 ทั้งคู่ เมื่อฟังก์ชันยืมถูกเรียกเป็นครั้งแรก เนื่องจาก elastic=0 ตรรกะข้างต้นหากจะดำเนินการและส่งกลับไปยังฟังก์ชันเพิ่ม ผลลัพธ์ที่ได้คือยางยืด = 1, ฐาน = 98
จากนั้นผู้โจมตี (0x87F58580) จะเรียกใช้ฟังก์ชันยืมและส่งผ่านใน 1 เนื่องจาก elastic=1 ลอจิก else จะถูกดำเนินการและค่าส่งคืนที่คำนวณได้คือ 98 ด้วยวิธีนี้ เมื่อกลับไปยังฟังก์ชันเพิ่ม elastic=2 และ ตัวแปรฐานคือ 196
แต่ในเวลานี้ผู้โจมตี (0x87F58580) เรียกใช้ฟังก์ชันการชำระคืนและส่งผ่านใน 1 เนื่องจาก elastic=2 ตรรกะ else จะถูกดำเนินการ ตัวแปร elastic ที่คำนวณได้เดิมคือ 1*2/98 =0 แต่เนื่องจากขั้นตอนต่อไปนี้ ของการปัดเศษขึ้นส่งผลให้ค่าส่งคืนที่คำนวณได้เป็น 1 ดังนั้นเมื่อส่งคืนฟังก์ชันย่อย ตัวแปรยืดหยุ่นจะเปลี่ยนกลับเป็น 1 และตัวแปรฐานคือ 195
จะเห็นได้ว่าหลังจากวงจรการยืม-ชำระคืน ตัวแปร elastic ยังคงไม่เปลี่ยนแปลงและตัวแปรพื้นฐานเกือบสองเท่า การใช้ประโยชน์จากช่องโหว่นี้ แฮกเกอร์มักจะวนซ้ำฟังก์ชันการยืม-ชำระคืน และในที่สุดก็เรียกการชำระคืนอีกครั้ง ในที่สุดก็ทำให้ elastic=0 ฐาน = 120080183810681886665215049728

เมื่ออัตราส่วนระหว่างตัวแปรยืดหยุ่นและตัวแปรฐานไม่สมดุลอย่างมาก ผู้โจมตี (0x87F58580) สามารถให้ยืมโทเค็น MIM จำนวนมากได้โดยการเพิ่มหลักประกันเล็กน้อยเพื่อผ่านข้อจำกัดในตัวดัดแปลงตัวทำละลาย

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