โดย: ทีมรักษาความปลอดภัย Doris@SlowMist
พื้นหลัง
เมื่อวันที่ 10 มิถุนายน 2024 ตามการตรวจสอบโดยระบบตรวจสอบความปลอดภัยของ SlowMist MistEye UwU Lend ซึ่งเป็นแพลตฟอร์มที่ให้บริการยืมสินทรัพย์ดิจิทัลบนห่วงโซ่ EVM ถูกโจมตี ส่งผลให้เกิดการสูญเสียประมาณ 19.3 ล้านดอลลาร์สหรัฐ ทีมรักษาความปลอดภัย SlowMist ได้วิเคราะห์เหตุการณ์และแชร์ผลดังนี้
https://x.com/SlowMist_Team/status/1800181916857155761
ข้อมูลที่เกี่ยวข้อง
ที่อยู่ของผู้โจมตี:
0x841ddf093f5188989fa1524e7b893de64b421f47
ที่อยู่สัญญาที่มีช่องโหว่:
ธุรกรรมการโจมตี 0x9bc6333081266e55d88942e277fc809b485698b9: 0xca1bbf3b320662c89232006f1ec6624b56242850f07e0f1dadbe4f69ba0d6ac3
0xb3f067618ce54bc26a960b660cfc28f9ea0315e2e9a1a855ede1508eb4017376
0x242a0fb4fde9de0dc2fd42e8db743cbc197ffa2bf6a036ba0bba303df296408b
โจมตีแกนกลาง
จุดหลักของการโจมตีนี้คือผู้โจมตีสามารถจัดการราคา oracle ได้โดยตรงโดยทำการแลกเปลี่ยนจำนวนมากใน CurveFinance Pool ซึ่งส่งผลกระทบต่อราคาของโทเค็น sUSDE และใช้ราคาที่ถูกดัดแปลงเพื่ออพยพสินทรัพย์อื่น ๆ ใน Pool
กระบวนการโจมตี
1. สินเชื่อ Flash ยืมสินทรัพย์และลดราคาของ USDE: ผู้โจมตีจะยืมสินทรัพย์จำนวนมากผ่านแฟลชสินเชื่อก่อน และแลกเปลี่ยนโทเค็น USDE บางส่วนที่ยืมไปเป็นโทเค็นอื่น ๆ ในกลุ่ม Curve ที่อาจส่งผลต่อราคาของ sUSDE
2. สร้างสถานะการให้ยืมจำนวนมาก: ภายใต้ราคา sUSDE ในปัจจุบันที่ดิ่งลง ให้ยืมโทเค็น sUSDE จำนวนมากโดยการฝากโทเค็นอ้างอิงอื่น ๆ
3. จัดการ oracle อีกครั้งเพื่อเพิ่มราคาของ sUSDE: ด้วยการดำเนินการแลกเปลี่ยนย้อนกลับในกลุ่ม Curve ก่อนหน้า ราคาของ sUSDE จึงเพิ่มขึ้นอย่างรวดเร็ว
4. การชำระบัญชีตำแหน่งหนี้สินขนาดใหญ่: เนื่องจากราคาของ sUSDE เพิ่มขึ้นอย่างรวดเร็ว ผู้โจมตีสามารถชำระบัญชีตำแหน่งที่ยืมมาก่อนหน้านี้ในปริมาณมากเพื่อรับ uWETH
5. ฝาก sUSDE ที่เหลือและให้ยืมโทเค็นอ้างอิงอื่น ๆ ในสัญญา: ผู้โจมตีฝาก sUSDE ที่มีราคาสูงในปัจจุบันอีกครั้งเพื่อให้ยืมโทเค็นสินทรัพย์อ้างอิงเพิ่มเติมเพื่อหากำไร
ไม่ใช่เรื่องยากที่จะเห็นว่าผู้โจมตีส่วนใหญ่บิดเบือนราคาของ sUSDE ซ้ำ ๆ ยืมจำนวนมากเมื่อราคาต่ำ และชำระบัญชีและจำนองใหม่เพื่อทำกำไรเมื่อราคาสูง เราติดตามผลสัญญาของ oracle sUSDePriceProviderBUniCatch ที่คำนวณราคาของ sUSDE:
ไม่ใช่เรื่องยากที่จะเห็นว่าผู้โจมตีส่วนใหญ่บิดเบือนราคาของ sUSDE ซ้ำ ๆ ยืมจำนวนมากเมื่อราคาต่ำ และชำระบัญชีและจำนองใหม่เพื่อทำกำไรเมื่อราคาสูง เราติดตามผลสัญญาของ oracle sUSDePriceProviderBUniCatch ที่คำนวณราคาของ sUSDE:
จะเห็นได้ว่าราคาของ sUSDE นั้นถูกกำหนดโดยการรับราคาที่แตกต่างกันของโทเค็น 11 USDE จากพูล USDE และพูล UNI V3 บน CurveFinance จากนั้นจึงเรียงลำดับและคำนวณค่ามัธยฐานตามราคาเหล่านี้
ในตรรกะการคำนวณที่นี่ ราคา 5 USDE จะได้รับโดยตรงโดยใช้ฟังก์ชัน get_p เพื่อรับราคาสปอตแบบเรียลไทม์ของ Curve Pool ซึ่งช่วยให้ผู้โจมตีส่งผลกระทบโดยตรงต่อราคากลางโดยการแลกเปลี่ยนจำนวนมากภายในธุรกรรมเดียว ผลการคำนวณจำนวน
การวิเคราะห์ MistTrack
จากการวิเคราะห์ของเครื่องมือติดตามออนไลน์ MistTrack ผู้โจมตี 0x841ddf093f5188989fa1524e7b893de64b421f47 สร้างรายได้ประมาณ 19.3 ล้านเหรียญสหรัฐจากการโจมตีครั้งนี้ รวมถึงสกุลเงิน ETH, crvUSD, bLUSD และ USDC ต่อมาโทเค็น ERC-20 ได้ถูกแลกเปลี่ยนเป็น ETH
จากการติดตามค่าธรรมเนียมการจัดการของที่อยู่ของผู้โจมตี พบว่าเงินทุนเริ่มต้นในที่อยู่นั้นมาจาก 0.98 ETH ที่โอนจาก Tornado Cash ต่อมาที่อยู่ก็ได้รับ 5 เงินจาก Tornado Cash
เมื่อขยายแผนผังธุรกรรม พบว่าผู้โจมตีโอน 1,292.98 ETH ไปยังที่อยู่ 0x48d7c1dd4214b41eda3301bca434348f8d1c5eb6 ยอดคงเหลือปัจจุบันของที่อยู่คือ 1,282.98 ETH; ผู้โจมตีโอน 4,000 ETH ที่เหลือไปยังที่อยู่ 0x050c7e9c62bf991 841827f377 45ddadb563feb70 ยอดคงเหลือปัจจุบันของที่อยู่นี้คือ 4,010 ผลประโยชน์ทับซ้อน
MistTrack ได้บล็อกที่อยู่ที่เกี่ยวข้องและจะติดตามการโอนเงินที่ถูกขโมยต่อไป
สรุป
แกนหลักของการโจมตีนี้คือผู้โจมตีใช้ข้อบกพร่องด้านความเข้ากันได้ของ price oracle เพื่อรับราคาทันทีโดยตรง และราคาเฉลี่ยที่คำนวณได้เพื่อควบคุมราคาของ sUSDE ดังนั้นจึงดำเนินการให้กู้ยืมและชำระบัญชีภายใต้อิทธิพลของความแตกต่างของราคาที่รุนแรงเพื่อให้ได้มา ผลกำไรที่ไม่คาดคิด ทีมรักษาความปลอดภัย SlowMist แนะนำให้ทีมงานโครงการปรับปรุงความสามารถในการป้องกันการบิดเบือนของ price oracle และออกแบบกลไกการป้อนราคาของ oracle ที่ปลอดภัยยิ่งขึ้น เพื่อหลีกเลี่ยงเหตุการณ์ที่คล้ายคลึงกันไม่ให้เกิดขึ้นอีก
ความคิดเห็นทั้งหมด