Pickle Finance ถูกโจมตีและสูญเสียเกือบ 20 ล้านดอลลาร์สหรัฐใน DAI DeFi อยู่ที่ไหนโดยไม่มีการตรวจสอบอย่างเ
สัปดาห์นี้ "นักวิทยาศาสตร์" (แฮ็กเกอร์ที่ใช้ความแข็งแกร่งทางเทคนิคและเกณฑ์ความรู้เพื่อเชี่ยวชาญในการขนของ DeFi) กำลังยุ่งมาก
ข้อความ
ชื่อเรื่องรอง
สกุลเงินเข้ารหัสขึ้นอีกครั้ง CCTV DeFi กลายเป็นเครื่องกดเงินสดสำหรับ "นักวิทยาศาสตร์"?จากข้อมูลของ CCTV จากมุมมองของผลตอบแทนจากการลงทุน cryptocurrency เป็นผลิตภัณฑ์การลงทุน "อันดับหนึ่ง" ที่แท้จริงในปีนี้ ดัชนี Bloomberg Galaxy Crypto เพิ่มขึ้นประมาณ 65% แซงหน้าราคาทองคำและอัตราผลตอบแทนในตลาดตราสารทุน พันธบัตร และสินค้าโภคภัณฑ์ทั่วโลกที่พุ่งขึ้นมากกว่า 20% เหตุผลสำคัญสำหรับการเพิ่มขึ้นสูงคือราคา Ethereum ที่พุ่งสูงขึ้น 169.40%
CCTV อธิบายว่า: "การเพิ่มขึ้นของราคา Ethereum เกิดจากการใช้เครื่องมือทางการเงินแบบกระจายอำนาจ (DeFi) ที่เพิ่มขึ้น และมาตรการกระตุ้นเศรษฐกิจครั้งใหญ่ที่ประเทศต่างๆ นำมาใช้หลังการแพร่ระบาด ดังนั้นนักลงทุนจึงเลือก Bitcoin, Ethereum และสกุลเงินดิจิทัลอื่นๆ สำหรับ การลงทุน รักษามูลค่า"
ในอีกด้านหนึ่ง ตลาด cryptocurrency มักส่งข่าวดี ในทางกลับกัน โครงการ DeFi มักถูกโจมตีเนื่องจากไม่ได้รับการตรวจสอบอย่างเข้มงวด
เกิดอะไรขึ้น?
เกิดอะไรขึ้น?
จากการติดตามและวิเคราะห์ PeckShield พบว่าผู้โจมตีสอบถามยอดสินทรัพย์ 19.72 ล้านดอลลาร์สหรัฐผ่านฟังก์ชัน StrategyCmpdDaiV2.getSuppliedUnleveraged()
จากนั้น ผู้โจมตีจะแยก DAI ทั้งหมดใน StrategyCmpdDaiV2 ไปยัง Pickle Jar โดยใช้ประโยชน์จากช่องโหว่การตรวจสอบอินพุต: ช่องโหว่นี้อยู่ในฟังก์ชัน ControllerV4.swapExactJarForJar() ซึ่งมี Jars ปลอมที่กำหนดไว้ล่วงหน้าสองรายการ ในกรณีที่ Jar ที่ระบุไม่ได้รับการตรวจสอบ ขั้นตอนนี้จะแยก DAI ที่ฝากไว้ทั้งหมดไปยัง Pickle Jar สำหรับการปรับใช้ในรอบถัดไป
ถัดไป ผู้โจมตีเรียกฟังก์ชัน Earn() เพื่อปรับใช้ DAI ที่แยกออกมาใน StrategyCmpdDaiV2 ในการจัดการบัฟเฟอร์ภายใน แฮ็กเกอร์เรียกฟังก์ชัน earn() สามครั้ง สร้าง cDAI ทั้งหมด 950,818,864.8211968 ใน StrategyCmpdDaiV2
เรียกใช้ฟังก์ชัน earn() เป็นครั้งแรกเพื่อฝาก 19.76 ล้าน DAI และ mint 903,390,845.43581639 cDAI
เรียกใช้ฟังก์ชัน earn() เป็นครั้งที่สองเพื่อฝาก 988,000 DAI และเหรียญกษาปณ์ 45,169,542.27179081 cDAI
ข้อความ
เรียกใช้ฟังก์ชัน earn() เป็นครั้งที่สามเพื่อฝาก 49,000 DAI และมิ้นต์ 2,258,477.11358954 cDAI
จากนั้น ผู้โจมตีจะเรียกใช้ฟังก์ชัน ControllerV4.swapExactJarForJar() เพื่อดึงข้อมูล cDAI ทั้งหมดใน StrategyCmpdDaiV2 โดยใช้การเรียกใช้โค้ดโดยอำเภอใจ ในขั้นตอนนี้ ฟังก์ชัน _execute() มีพารามิเตอร์สองตัว: _target และ _data _target อ้างถึงที่อยู่เป้าหมาย ที่ คือส่วนที่แสดงเป็นสีส้มในรูป _target เป็นที่อยู่สีขาว ผู้โจมตีไม่สามารถควบคุมที่อยู่นี้ได้ตามอำเภอใจ ที่นี่พวกเขาใช้ CurveProxyLogic ซึ่งเป็นสัญญาสีขาว (สามารถผ่าน 262 บรรทัดของได้รับการอนุมัติJarConverter[_targets[i] กล่าวคือ สิ่งที่สามารถ ควบคุมอย่างสมบูรณ์คือพารามิเตอร์ _data ซึ่งเป็นส่วนที่แสดงเป็นสีม่วงในรูป _data มีฟังก์ชัน add_liquidity() ที่ฟังก์ชัน _execute() สามารถเรียกได้และพารามิเตอร์ทั้งหมดจะถูกส่งผ่านไปยัง
ณ จุดนี้ เรากลับไปที่ Curve, CurveFunctionSig, CurvePoolSize, CurveUnderlyingIndex ซึ่งอยู่ภายใต้กล่องสีส้ม โดยที่ Curve คือที่อยู่ ซึ่งหมายความว่าฟังก์ชัน Curve.call() ในบรรทัดสุดท้ายของกล่องสีส้มสามารถดำเนินการตามสัญญาใดๆ ได้ ดังนั้น ผู้โจมตีจึงตั้งค่าเส้นโค้งเป็น StrategyCmpdDaiV2 และ curveFunctionSig บ่งชี้ว่านอกเหนือจากสัญญาที่ระบุไว้แล้ว ยังสามารถระบุฟังก์ชันในการเรียกใช้สัญญา และผู้โจมตีเรียกฟังก์ชัน StrategyCmpdDaiV2.withdraw() ได้สำเร็จผ่านการดำเนินการนี้
สุดท้าย ให้ดำเนินการกลับไปที่ฟังก์ชัน ControllerV4.swapExactJarForJar() และ cDAI ที่แตกออกมาจะถูกฝากไว้ใน _toJar ที่เป็นอันตราย ในฟังก์ชัน _toJar.deposit() cDAI ทั้งหมด 950,818,864.8211968 ทั้งหมดจะถูกโอนไปยังที่อยู่ของแฮ็กเกอร์ทันที
ชื่อเรื่องรอง
DeFi จะไปได้ไกลแค่ไหนหากไม่มีการตรวจสอบอย่างเข้มงวด?
เพื่อตอบสนองต่อการโจมตี Pickle Finance (แตงกวาดอง) บริษัทตรวจสอบบัญชี Haechi ทวีตว่าได้ทำการตรวจสอบรหัสในเดือนตุลาคมปีนี้ แต่ช่องโหว่ที่ผู้โจมตีใช้ประโยชน์นั้นเกิดขึ้นในสัญญาอัจฉริยะที่สร้างขึ้นใหม่ ไม่ใช่ในสัญญาอัจฉริยะ ภายใต้การตรวจสอบความปลอดภัย รหัสที่เกี่ยวข้องกับการโจมตีช่องโหว่นี้มีอยู่ใน swapExactJarForJar ใน controller-v4.sol ไม่ใช่ใน controller-v3.sol ที่ตรวจสอบก่อนหน้านี้ และสัญญาอัจฉริยะไม่มี swapExactJarForJar
ในเรื่องนี้ บุคคลที่เกี่ยวข้องซึ่งรับผิดชอบ PeckShield กล่าวว่า: "หลังจากที่โครงการ DeFi บางโครงการได้ทำการตรวจสอบความปลอดภัยของสัญญาอัจฉริยะเป็นครั้งแรก พวกเขาอาจละเว้นการตรวจสอบสัญญาอัจฉริยะที่เพิ่มเข้ามาใหม่เพื่อเปิดตัว mainnet อย่างรวดเร็ว ความสนใจ แต่ก็เหมือนกับ การโจมตีครั้งนี้จบลงด้วยการสูญเสียเล็กน้อย DeFi ต้องแน่ใจว่าโค้ดนั้นได้รับการตรวจสอบและวิจัยอย่างถี่ถ้วนก่อนที่จะออนไลน์เพื่อป้องกันความเสี่ยงต่างๆ ที่อาจเกิดขึ้น”


