เมื่อวันที่ 10 มิถุนายน 2024 UwU Lend ถูกโจมตี และโครงการนี้สูญเสียเงินไปประมาณ 19.3 ล้านดอลลาร์สหรัฐ

SharkTeam ดำเนินการวิเคราะห์ทางเทคนิคของเหตุการณ์นี้ทันทีและสรุปข้อควรระวังด้านความปลอดภัย เราหวังว่าโครงการต่อ ๆ ไปจะสามารถเรียนรู้จากสิ่งนี้และร่วมกันสร้างแนวป้องกันความปลอดภัยสำหรับอุตสาหกรรมบล็อกเชน
ตัวรุก: 0x841dDf093f5188989fA1524e7B893de64B421f47
ผู้โจมตีเปิดธุรกรรมการโจมตีทั้งหมด 3 รายการ:
ธุรกรรมการโจมตี 1:
0x242a0fb4fde9de0dc2fd42e8db743cbc197ffa2bf6a036ba0bba303df296408b
ธุรกรรมการโจมตี 2:
0xb3f067618ce54bc26a960b660cfc28f9ea0315e2e9a1a855ede1508eb4017376
ธุรกรรมการโจมตี 3:
0xca1bbf3b320662c89232006f1ec6624b56242850f07e0f1dadbe4f69ba0d6ac3
ใช้ธุรกรรมการโจมตี 1 เป็นตัวอย่างในการวิเคราะห์:
สัญญาการโจมตี: 0x21c58d8f816578b1193aef4683e8c64405a4312e
สัญญาเป้าหมาย: สัญญาซื้อคืน UwU Lend ได้แก่:
ดอลลาร์สหรัฐ: 0xf1293141fc6ab23b2a0143acc196e3429e0b67a6
uDAI: 0xb95bd0793bcc5524af358ffaae3e38c3903c7626
คุณUSDT: 0x24959f75d7bda1884f1ec9861f644821ce233c7d
กระบวนการโจมตีมีดังนี้:
1. โทเค็นยืมแฟลชหลายโทเค็นจากแพลตฟอร์มที่แตกต่างกัน รวมถึง WETH, WBTC, sUSDe, USDe, DAI, FRAX, USDC, GHO
ที่อยู่การรับโทเค็นคือ 0x4fea76b66db8b548842349dc01c85278da3925da
1. โทเค็นยืมแฟลชหลายโทเค็นจากแพลตฟอร์มที่แตกต่างกัน รวมถึง WETH, WBTC, sUSDe, USDe, DAI, FRAX, USDC, GHO
ที่อยู่การรับโทเค็นคือ 0x4fea76b66db8b548842349dc01c85278da3925da

โทเค็นและปริมาณของสินเชื่อแฟลชมีดังนี้:
สินเชื่อ Flash 159,053.16 WETH และ 14,800 WBTC จาก AaveV3
สินเชื่อ Flash 40,000 WETH จาก AaveV2
สินเชื่อ Flash 91,075.70 WETH และ 4,979.79 WBTC จาก Spark
สินเชื่อแฟลช 301,738,880.01 sUSDe, 236,934,023.17 USDe และ 100,786,052.15 DAI จาก Morpho
สินเชื่อแฟลช 60,000,000 FRAX และ 15,000,000 USDC จาก Uniswap V3: FRAX-USDC
สินเชื่อ Flash 4,627,557.47 GHO และ 38,413.34 WETH จาก Balancer
สินเชื่อ Flash 500,000,000 DAI จาก Maker
รวมประมาณ 328,542.2 WETH, 19779.79 WBTC, 600786052.15 DAI, 301,738,880.01 sUSDe, 236,934,023.17 USDe, 4,627,557.47 GHO, 60,000,000 FRAX, 00 ดอลลาร์สหรัฐ
2. โอน Flash Loan Token ไปที่สัญญา 0xf19d66e82ffe8e203b30df9e81359f8a201517ad (ตัวย่อ 0xf19d) เพื่อเตรียมพร้อมสำหรับการโจมตี

3. ควบคุมราคา sUSDe (ลดราคา) โดยการแลกเปลี่ยนโทเค็น

(1)USDecrvUSD.แลกเปลี่ยน

แลกเปลี่ยน 8,676,504.84 USDe เป็น 8,730,453.49 crvUSD จำนวน USDe ใน USDecrvUSD จะเพิ่มขึ้นและราคาลดลง จำนวน crvUSD จะลดลงและราคาก็เพิ่มขึ้น
(2) USDeDAI. แลกเปลี่ยน

แลกเปลี่ยน 46,452,158.05 USDe เป็น 14,389,460.59 DAI จำนวน USDe ใน USDeDAI เพิ่มขึ้น ราคาลดลง จำนวน DAI ลดลง และราคาเพิ่มขึ้น
(3)FRAXUSDe.แลกเปลี่ยน
แลกเปลี่ยน 14,477,791.69 USDe เป็น 46,309,490.86 FRAX จำนวน USDe ใน USDeDAI เพิ่มขึ้นและราคาลดลง จำนวน FRAX ลดลงและราคาเพิ่มขึ้น
(4)GHOUSDe.แลกเปลี่ยน

แปลง 4,925,427.20 USDe เป็น 4,825,479.07 GHO จำนวน USDe ใน USDeDAI เพิ่มขึ้น ราคาลดลง จำนวน GHO ลดลง และราคาเพิ่มขึ้น
(5) USDeUSDC. แลกเปลี่ยน

แปลง 14,886,912.83 USDe เป็น 14,711,447.94 USDC จำนวน USDe ใน USDeDAI จะเพิ่มขึ้นและราคาจะลดลง จำนวน USDC จะลดลงและราคาจะเพิ่มขึ้น
หลังจากการแลกเปลี่ยนข้างต้น ราคาของ USDe ใน 5 กองทุนรวมก็ลดลง ในที่สุดราคาของ sUSDe ก็ดิ่งลง
4. สร้างสถานะการให้กู้ยืมอย่างต่อเนื่อง นั่นคือ ฝากสินทรัพย์อื่น ๆ (WETH, WBTC และ DAI) ลงในสัญญา LendingPool จากนั้นยืม sUSDe เนื่องจากราคาของ sUSDe ลดลง จำนวนเงินกู้ sUSDe จึงมากกว่าก่อนที่ราคาจะดิ่งลงมาก
4. สร้างสถานะการให้กู้ยืมอย่างต่อเนื่อง นั่นคือ ฝากสินทรัพย์อื่น ๆ (WETH, WBTC และ DAI) ลงในสัญญา LendingPool จากนั้นยืม sUSDe เนื่องจากราคาของ sUSDe ลดลง จำนวนเงินกู้ sUSDe จึงมากกว่าก่อนที่ราคาจะดิ่งลงมาก

5. เช่นเดียวกับขั้นตอนที่ 3 การดำเนินการย้อนกลับจะทำให้ราคาของ sUSDe เพิ่มขึ้น

เมื่อดึง sUSDe ขึ้น มูลค่าของสถานะที่ยืมในขั้นตอนที่ 4 จะเกินมูลค่าหลักประกันและถึงมาตรฐานสำหรับการชำระบัญชี
6. ชำระบัญชีสินเชื่อเป็นชุดและรับรางวัลการชำระบัญชี uWETH

7. ชำระคืนเงินกู้และถอนสินทรัพย์อ้างอิง WETH, WBTC, DAI และ sUSDe

8. ฝาก sUSDe เข้าสู่ LendingPool อีกครั้ง ในเวลานี้ ราคาของ sUSDe เพิ่มขึ้น เพื่อให้สามารถกู้ยืมสินทรัพย์อื่น ๆ ได้มากขึ้น รวมถึง DAI และ USDT

9. แลกเปลี่ยนโทเค็นและชำระคืนเงินกู้แฟลช กำไรสุดท้ายคือ 1,946.89 ETH
9. แลกเปลี่ยนโทเค็นและชำระคืนเงินกู้แฟลช กำไรสุดท้ายคือ 1,946.89 ETH


จากการวิเคราะห์ข้างต้น พบว่ามีสินเชื่อแฟลชจำนวนมากและมีการปรับเปลี่ยนราคาของ sUSDe หลายครั้งตลอดกระบวนการโจมตี เมื่อมีการจำนอง sUSDe จะส่งผลกระทบต่อจำนวนสินทรัพย์ที่ยืม มันจะส่งผลกระทบต่ออัตราการกู้ยืมและค่าสัมประสิทธิ์การชำระบัญชี ( ปัจจัยด้านสุขภาพ)
ผู้โจมตีใช้ประโยชน์จากสิ่งนี้เพื่อลดราคาของ sUSDe ผ่านการกู้ยืมแบบแฟลช จำนองทรัพย์สินอื่น ๆ ให้ยืม sUSDe จำนวนมาก จากนั้นเพิ่มราคาของ sUSDe เลิกกิจการสินทรัพย์จำนองเพื่อทำกำไร และจำนอง sUSDe ที่เหลือเพื่อให้ยืม ออกจากทรัพย์สินอื่น ๆ ในที่สุดก็ชำระคืนเงินกู้แฟลชและการโจมตีก็เสร็จสิ้น
จากขั้นตอนที่ 3 ข้างต้น เราพบว่าผู้โจมตีควบคุมราคาของ sUSDe โดยการควบคุมราคาของ USDe ในกลุ่มการซื้อขายทั้งห้าของ Curve Finance: USDe/rvUSD, USDe/AI, FRAX/SDe, GHO/SDe และ USDe/SDC ฟังก์ชั่นการอ่านราคามีดังนี้:


ในบรรดาราคา sUSDe นั้นคำนวณจากราคา 11 รายการ โดย 10 รายการแรกอ่านจาก CurveFinance และรายการสุดท้ายมาจาก UniswapV3
ราคาที่อ่านจาก CurveFinance นั้นมาจากกลุ่มการซื้อขายห้ากลุ่ม: USDe/rvUSD, USDe/AI, FRAX/SDe, GHO/SDe และ USD/SDC ซึ่งเป็นกลุ่มการซื้อขายห้ากลุ่มที่ถูกจัดการโดยผู้โจมตีในธุรกรรมการโจมตี
ราคาที่อ่านจาก CurveFinance นั้นมาจากกลุ่มการซื้อขายห้ากลุ่ม: USDe/rvUSD, USDe/AI, FRAX/SDe, GHO/SDe และ USD/SDC ซึ่งเป็นกลุ่มการซื้อขายห้ากลุ่มที่ถูกจัดการโดยผู้โจมตีในธุรกรรมการโจมตี


ราคาที่ส่งคืนจะคำนวณจากราคาที่อ่านโดย uwuOracle, price_oracle(0) และ get_p(0) ในสัญญากลุ่มการซื้อขาย CurveFinance
(1) ราคาคือราคาที่ Chainlink ระบุไว้และไม่สามารถเปลี่ยนแปลงได้

(2) พารามิเตอร์กลุ่มการซื้อขาย


ผู้โจมตีควบคุมค่าที่ส่งคืนของ get_p(0) โดยจัดการจำนวนโทเค็นในกลุ่มการซื้อขาย ดังนั้นจึงควบคุมราคา
เพื่อตอบสนองต่อการโจมตีนี้ ควรปฏิบัติตามข้อควรระวังต่อไปนี้ในระหว่างกระบวนการพัฒนา:
(1) เพื่อแก้ไขช่องโหว่ของการปั่นราคา สามารถใช้ออราเคิลราคาแบบออฟไลน์เพื่อหลีกเลี่ยงการปั่นราคาได้
(2) ก่อนที่โปรเจ็กต์จะออนไลน์ การตรวจสอบสัญญาอัจฉริยะจะต้องดำเนินการโดยบริษัทตรวจสอบมืออาชีพบุคคลที่สาม
(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
ความคิดเห็นทั้งหมด