CertiK: คำอธิบายโดยละเอียดเกี่ยวกับการสูญเสีย 52 ล้านดอลลาร์ของ Vyper

金色财经_

มีรายงานช่องโหว่ใน Vyper เวอร์ชัน 0.2.15, 0.2.16 และ 0.3.0 ทำให้กลุ่มจำนวนมากบน Curve เสี่ยงต่อการถูกโจมตีซ้ำ ช่องโหว่นี้ทำให้ผู้โจมตีสามารถเรียกใช้ฟังก์ชันเพิ่มสภาพคล่องในระหว่างกระบวนการกำจัดสภาพคล่อง

มีมูลค่ารวม 69.3 ล้านดอลลาร์ที่ได้รับผลกระทบ โดยในจำนวนนี้ถูกแฮ็กเกอร์หมวกขาวกู้คืนมาได้ 16.7 ล้านดอลลาร์ นอกจากนี้ยังหมายความว่าเงิน 52 ล้านดอลลาร์ถูกขโมยไปจากเหตุการณ์นี้ ทำให้เป็นการโจมตีการกลับเข้าประเทศครั้งใหญ่ที่สุดในปี 2566

exsGmBiwYOSh5Seu3C6zysCmJcCD64sdWTvG5w0M.jpeg

การวิเคราะห์เหตุการณ์ไวเปอร์

สรุปกิจกรรม

เมื่อวันที่ 30 กรกฎาคม 2023 เวอร์ชัน 0.2.15, 0.2.16 และ 0.3.0 ของคอมไพเลอร์ Vyper ซึ่งเป็นภาษาการเขียนโปรแกรมเชิงสัญญาที่ออกแบบมาสำหรับ Ethereum Virtual Machine (EVM) ได้รับการประกาศว่ามีช่องโหว่ความล้มเหลวในการล็อกการกลับเข้าที่ใหม่ โครงการ DeFi หลายโครงการได้รับผลกระทบจากข้อผิดพลาด โดยขาดทุนรวม 52 ล้านดอลลาร์

CertiK ได้ระบุที่อยู่หกแห่งที่เกี่ยวข้องกับเหตุการณ์นี้ อันแรก (0x172) ไม่สามารถใช้ประโยชน์จากช่องโหว่ในบล็อก 17806056 ผู้โจมตีรายเดิมได้ถอน 0.1 ETH จาก Tornado Cash และดำเนินการสร้างสัญญาการโจมตี อย่างไรก็ตาม กระเป๋าเงินชั้นนำ (0x6Ec21) จ่ายค่าธรรมเนียมน้ำมันมากกว่าและดำเนินการธุรกรรมก่อน มีรายได้ประมาณ 6,100 WETH ($11.4 ล้าน)

YLsgfOUBbfcQ6Pgy77tT2prtmsSHe2U4s7HpuCV3.png

ช่องโหว่ของความล้มเหลวในการทำธุรกรรมล่วงหน้าโดยหุ่นยนต์ MEV ที่มา: Etherscan Etherscan

การละเมิดนำไปสู่การสูญเสียเพิ่มเติม: EOA 0xDCe5d ได้รับสินทรัพย์มูลค่าประมาณ 21 ล้านดอลลาร์ รายละเอียดของกระเป๋าเงินที่เกี่ยวข้องมีดังนี้:

BQybD6x7JDeb56tNYa5gp3antJdgtukOJp5C71Gw.png

มีทั้งหมด 6 โครงการที่ได้รับผลกระทบ โดยถูกขโมยไปประมาณ 69.3 ล้านดอลลาร์ ซึ่งถูกส่งคืน 16.7 ล้านดอลลาร์ รวมมูลค่าความเสียหายทั้งหมดประมาณ 52 ล้านดอลลาร์

ไวเปอร์คืออะไร

Vyper เป็นภาษาการเขียนโปรแกรมแบบ pythonic ที่เน้นสัญญาสำหรับ Ethereum Virtual Machine (EVM) Vyper อยู่ในรุ่นเบต้าตั้งแต่ปี 2560 แต่รุ่นแรกที่ไม่ใช่รุ่นเบต้าคือรุ่น 0.2.1 ในเดือนกรกฎาคม 2563

Solidity ซึ่งเป็นภาษาที่โดดเด่นในระบบนิเวศของ Ethereum มีมายาวนานกว่า Vyper มาก สมาชิกในชุมชนจำนวนมากจึงได้สร้างเครื่องมือที่ทำงานด้วย Solidity โดยเฉพาะ ตามข้อมูลจาก DeFiLlama มูลค่าการล็อกทั้งหมด (TVL) ประมาณ 70 พันล้านเหรียญสหรัฐในโปรโตคอล DeFi สัญญาอัจฉริยะของ Vyper คิดเป็น 2.17 พันล้านเหรียญสหรัฐ ในขณะที่ Solidity คิดเป็นส่วนใหญ่สูงถึง 67.49 พันล้านเหรียญสหรัฐ

KjMot1urT10BOZJi8lgltDDN62IMhxVncPFncjoP.png

616cb7f4-e84a-479f-bd50-73e2adaec534 ค่าล็อกทั้งหมดตามแหล่งที่มาของภาษา: DeFiLlama

ณ วันที่ 10 พฤษภาคม 2023 การครอบงำของ Vyper ได้ลดลงจากระดับสูงสุด 30% ในเดือนสิงหาคม 2020 เป็น 6.27% แม้ว่าการครอบงำ TVL ของ Vyper จะต่ำกว่า Solidity อย่างมาก แต่เหตุการณ์นี้ก็ยังส่งผลให้มียอดเข้าชม 62 ล้านดอลลาร์

8G03pLGwavL4LcDkdTQS5EVlIywScZBcpTb4Fzeb.png

b89a9653-a2d4-4e89-9042-24e06ed1590a (1) การปกครองของภาษาโปรแกรมต่างๆ ใน TVL ที่มา: DeFiLlama

รุ่นคอมไพเลอร์

เวอร์ชันคอมไพเลอร์หมายถึงเวอร์ชันเฉพาะของคอมไพเลอร์ภาษาโปรแกรมที่แปลงซอร์สโค้ดที่มนุษย์อ่านได้ให้เป็นโค้ดที่เครื่องอ่านได้

เวอร์ชันของคอมไพเลอร์ได้รับการอัปเดตเป็นประจำเพื่อแนะนำคุณสมบัติ แก้ไขจุดบกพร่อง และเพิ่มความปลอดภัย ปัจจุบัน Vyper Language ไม่มีโปรแกรมรางวัลข้อบกพร่องของแฮ็กเกอร์

เวอร์ชัน 0.2.15 - 0.3.0

ดังที่กล่าวไว้ข้างต้น พบช่องโหว่ใน Vyper เวอร์ชัน 0.2.15, 0.2.16 และ 0.3.0 ซึ่งนำไปสู่การกลับเข้าโจมตีโครงการ DeFi หลายโครงการ

การใช้ประโยชน์จาก Vyper เวอร์ชันแรกสุด 0.2.15 เปิดตัวเมื่อวันที่ 23 กรกฎาคม 2021 เมื่อเวอร์ชัน 0.3.1 เปิดตัวในเดือนธันวาคมของปีเดียวกัน ช่องโหว่ก่อนหน้านี้ก็หายไป

เส้นเวลา

เหตุการณ์นี้เริ่มขึ้นครั้งแรกเมื่อเวลา 21:10 น. ตามเวลาปักกิ่งของวันที่ 30 กรกฎาคม การทำธุรกรรมของผู้โจมตีสำหรับ JPEG’d pool บน Curve ล้มเหลวเนื่องจากการทำธุรกรรมล่วงหน้า

สกรีนช็อต 2023-07-31 เวลา 21.08.31 น.

เมื่อเวลา 22:00 น. ของวันที่ 30 กรกฎาคม ตามเวลาปักกิ่ง JPEG ได้ยืนยันว่ากลุ่ม pETH-ETH Curve นั้นถูกใช้งานโดยประสงค์ร้าย

2g2jUlVcktQTJmqFFZUPSVONMA6O9Jbp7HcbQEKd.png

Vyper ได้ประกาศในภายหลังว่าเวอร์ชัน 0.2.15, 0.2.16 และ 0.3.0 รวมการล็อคการกลับเข้าที่ใหม่ Metronome และ Alchemix ก็ได้รับผลกระทบเช่นกันหลังจากที่ Vyper ทวีต

mRZI1JtH7Qv7Mvk09k7ex0chKgffsFir98ebzqtD.png

ประกาศ DAO เครื่องเมตรอนอม:

FTzOyIh9Z8Opc6soNd4zLzAcKQGuLxWY2QEefPPV.png

F9Dh7bMfVanq8deivVbWwhF24E3gbbIpThEq0t5l.png

8MYwVijoFiaJPL32YVTK6AOQHeHsZvZXyxIfmF9h.png

ในช่วงเช้ามืดของวันที่สองตามเวลาปักกิ่ง Curve Finance ประกาศใน Discord ว่าเงินทุนที่เหลืออยู่ไม่ได้รับผลกระทบจาก Vyper Bug และปลอดภัย

PsdIMHoBSb8vtyuFjjlO4ZsCrmKfIC6IY6I40DkB.png

aLVrLdFyKeWEz7Jd1sqydWD4dTUWmpGw8Oj7PY0W.png

Curve Finance ประกาศบน Twitter ว่ากลุ่มใน Arbitrum อาจถูกบุกรุก แต่ไม่มีการแสวงหาประโยชน์ที่เป็นประโยชน์สำหรับผู้ไม่หวังดีในการดำเนินการ ซึ่งหมายความว่ากลุ่มดังกล่าวไม่น่าจะถูกบุกรุก นอกจากนี้ CertiK ยังตรวจไม่พบการโจมตีอื่นใดที่ใช้ประโยชน์จากช่องโหว่ Vyper

iqFUjHgxsKZF0Hw4cIndWFLBVQBC8VyjPCrNnDNk.png

ขั้นตอนการโจมตี

ต่อไปนี้คือตัวอย่างข้อตกลงที่กำหนดเป้าหมายเป็น JPEG:

ผู้โจมตี: 0x6ec21d1868743a44318c3c259a6d4953f9978538

สัญญาการโจมตี: 0x466b85b49ec0c5c1eb402d5ea3c4b88864ea0f04#code

1 ผู้โจมตีขอยืมเงิน 80,000 WETH (ประมาณ 149,371,300 ดอลลาร์) จาก Balancer: Vault

2 จากนั้น ผู้โจมตีจะแลกเปลี่ยน WETH เป็น ETH เรียก pETH-ETH-f.add_liquidity() และเพิ่ม 40,000 ETH (ประมาณ 74,685,650 ดอลลาร์) ไปยังกลุ่ม pETH-ETH-f ในทางกลับกัน ผู้โจมตีได้รับ 32,431 pETH (pETH-ETH-f)

3 ผู้โจมตีเรียก remove_liquidity() เพื่อลบสภาพคล่องที่เพิ่มในขั้นตอนที่ 2 3,740 pETH และ 34,316 ETH ถูกโอนไปยังสัญญาการโจมตี และฟังก์ชั่น fallbak() ของสัญญาการโจมตีถูกเปิดใช้งาน ทำให้สามารถควบคุมผู้โจมตีได้ ในฟังก์ชั่น fallback() ผู้โจมตีได้เพิ่มสภาพคล่องอีก 40,000 ETH ให้กับกลุ่ม pETH-ETH-f และได้รับ 82,182 pETH

4 ผู้โจมตีเรียกการลบ_liquidity() อีกครั้ง นำออก 10,272pETH และรับ 47,506 ETH และ 1,184pETH จากนั้นผู้โจมตีได้แลกเปลี่ยน 4,924 pETH เป็น 4,285 ETH ในกลุ่ม pETH-ETH-f

โดยรวมแล้ว ผู้โจมตีได้รับ 34,316 ETH จากขั้นตอนที่ 3, 47,506 และ 4,285 ETH จากขั้นตอนที่ 4 รวมเป็น 86,107 ETH หลังจากชำระคืนเงินกู้แฟลช 80,000 ETH แล้ว ผู้โจมตีก็เหลือ 6,107 ETH (ประมาณ $11,395,506)

ช่องโหว่

ช่องโหว่นี้ทำให้ผู้โจมตีสามารถเรียกใช้ฟังก์ชันเพิ่มสภาพคล่องในระหว่างกระบวนการกำจัดสภาพคล่อง แม้ว่าฟังก์ชันเหล่านี้ควรได้รับการปกป้องโดย @nonreentrant(‘lock’) การทดสอบฟังก์ชัน add_liquidty() และ remove_liquidity() พิสูจน์ว่าไม่ได้ป้องกันการโจมตี reentrancy

HIhD33yKE94EHwUa7xkQhAzQRF4nscaJOwAPTOmK.png

Vyper_contract สำหรับ Curve.fi Factory Pool แหล่งข้อมูล: Etherscan

Vyper เวอร์ชัน v0.2.15, v0.2.16 และ v0.3.0 มีช่องโหว่ในการป้องกันความล้มเหลวในการกลับเข้าระบบตามการใช้ประโยชน์จาก JPEG’d, Metronome และ Alchemix

Mr3KDb2SKoLhF770OEWBAtdTuOYZ88tchEodweuv.png

สารละลาย

โครงการที่ใช้เวอร์ชัน Vyper ที่มีช่องโหว่ควรติดต่อ Vyper เพื่อขอความช่วยเหลือในการบรรเทาผลกระทบ โครงการควรพยายามอัปเกรดเป็นเวอร์ชันล่าสุดของ Vyper ที่ไม่มีช่องโหว่นี้

##สรุป

การโจมตี Vyper เป็นช่องโหว่การกลับเข้ามาใหม่ที่ใหญ่ที่สุดที่ CertiK ตรวจพบในปี 2566 ในแง่ของความสูญเสียทางการเงิน การโจมตีครั้งนี้คิดเป็น 78.6% ของเหตุการณ์ดังกล่าว

ช่องโหว่การกลับเข้าใหม่ที่ใหญ่ที่สุด 2 รายการในปีนี้ ทั้งคู่ใช้ประโยชน์จากสัญญาที่เขียนด้วย Vyper แม้ว่าช่องโหว่จะไม่เหมือนกันก็ตาม

ปัจจุบัน ความสูญเสียเนื่องจากการโจมตีแบบกลับเข้ามาใหม่ในทุกเครือข่ายในปี 2566 มีมูลค่าเกิน 66 ล้านดอลลาร์ ซึ่งมากกว่าปี 2020 ทั้งหมดประมาณ 4 ล้านดอลลาร์ และน้อยกว่าปี 2021 เพียง 1 ล้านดอลลาร์ โดยเฉพาะอย่างยิ่ง ยอดรวมในปี 2023 ยังแสดงถึงการสูญเสียที่เพิ่มขึ้น 259.45% เนื่องจากการโจมตีแบบกำหนดเป้าหมายซ้ำในปี 2022

ดูต้นฉบับ
news.article.disclaimer
แสดงความคิดเห็น
0/400
ไม่มีความคิดเห็น