Sui 链 DeFi 借贷协议 Scallop 遭黑客攻击,旧版合约漏洞导致 150,000 SUI 被盗

SUI-1.46%
LTC-1.15%

ข้อตกลงเงินกู้ยืม DeFi บนเครือข่าย Sui ชื่อ Scallop ได้เผยแพร่ประกาศเหตุการณ์ความปลอดภัยบนบัญชี X อย่างเป็นทางการ ( @Scallop_io ) เพื่อยืนยันว่ามีการถูกโจมตีแล้ว Scallop ระบุว่า ทีมงานพบคอนทรา็กต์ด้านข้าง (side contract) ที่เกี่ยวข้องกับพูลรางวัล sSUI spool ถูกนำไปใช้ในทางที่ผิด ส่งผลให้ SUI สูญเสียประมาณ 150,000 เหรียญ Scallop ย้ำว่า คอนทรา็กต์ที่ได้รับผลกระทบถูกแช่แข็งแล้ว คอนทรา็กต์หลักยังคงปลอดภัย มีเพียงพูลรางวัล sSUI เท่านั้นที่ได้รับผลกระทบ

ในการอัปเดตครั้งต่อมา Scallop อธิบายเพิ่มเติมว่า:「คอนทรา็กต์หลักถูกปลดแช่แข็งแล้ว การทำงานทั้งหมดกลับมาเป็นปกติ ปัญหานี้ไม่เกี่ยวข้องกับคอร์โปรโตคอล มีเพียงคอนทรา็กต์รางวัลที่ถูกยกเลิกการใช้งานแล้วเท่านั้น เงินฝากของผู้ใช้งานไม่ได้รับผลกระทบ เงินทั้งหมดปลอดภัยแน่นอน ฟังก์ชันการฝากและถอนกลับมาใช้งานได้ตามปกติ」ทีมงานให้คำมั่นว่าจะเปิดเผยรายละเอียดเพิ่มเติม และติดตามตรวจสอบพร้อมเสริมความปลอดภัยของโปรโตคอลอย่างต่อเนื่อง

อดีตสมาชิกแกนหลักของ NEAR Vadim: ปัญหาอยู่ที่แพ็กเกจเวอร์ชันเก่าที่เกิดขึ้นเมื่อ 17 เดือนก่อน

สำหรับเหตุการณ์นี้ อดีตนักพัฒนาแกนหลักของ NEAR Vadim ( @zacodil ) ได้เผยแพร่บทวิเคราะห์เชิงเทคนิคอย่างลึกซึ้งบน X ซึ่งเปิดเผยรายละเอียดของช่องโหว่ Vadim ชี้ว่า ผู้โจมรู้ทราบอย่างชัดเจนว่าต้องเรียกใช้แพ็กเกจที่ถูกยกเลิกการใช้งานตัวใด 「ไม่ใช่โค้ดที่กำลังรันอยู่ และไม่ใช่เส้นทาง SDK แต่เป็น V2 เวอร์ชันเก่าจากเดือนพฤศจิกายน 2023 ที่ไม่ได้ถูกใช้งานมาหลายเดือน นี่อาจเป็นการ reverse engineering อย่างลึกซึ้ง หรือมีคนรู้ล่วงหน้าอยู่แล้วว่าต้องไปหาจุดไหน ช่องโหว่นี้แฝงตัวมาแล้ว 17 เดือน

Vadim อธิบายว่า spool จะติดตาม index ที่เพิ่มขึ้นตามการจัดสรรรางวัล แต่ละบัญชีผู้ใช้ตอนทำการ stake เดิมทีควรบันทึก last_index ณ ขณะนั้น เพื่อให้สูตรการคำนวณแต้มที่ได้รับคือ:ปริมาณที่ stake × (current_index − last_index) ผู้ใช้จะได้รางวัลตั้งแต่ช่วงเวลาที่เข้าร่วมเท่านั้น

แต่ในแพ็กเกจ V2 ที่ถูกยกเลิกการใช้งาน เมื่อมีการสร้าง spool_account ใหม่ last_index ไม่ได้ถูก initialize ยังคงเป็น 0 ดังนั้นเมื่อ update_points ทำงาน ผลลัพธ์จะกลายเป็น:คะแนน = ปริมาณที่ stake × (current_index − 0) = ปริมาณที่ stake × ดัชนีประวัติทั้งหมด ผู้ใช้งานถูกบันทึกให้ได้รับรางวัลสะสมทั้งหมดนับตั้งแต่ spool ถูกสร้างขึ้นเมื่อเดือนสิงหาคม 2023

Vadim ให้ข้อมูลเฉพาะเจาะจง:ดัชนีของ spool เพิ่มขึ้นเป็น 1.19 พันล้าน ในช่วง 20 เดือน ผู้โจมตี stake sSUI 136,000 เหรียญ ได้รับการบันทึกแต้มทันที 162 ล้านล้านแต้ม (162 兆点數) เนื่องจากพูลรางวัลใช้สัดส่วนการแลก 1:1 (ตัวเศษและตัวส่วนเท่ากับ 1) แต้ม 162 ล้านล้านจะถูกแปลงเป็นมูลค่ารางวัล 162,000 เหรียญ SUI ทันที แต่ในพูลรางวัลมีเพียง SUI 150,000 เหรียญ ดังนั้นจึงถูกดึงออกจนหมด

เหตุการณ์ความปลอดภัยบนเชนทั้งหมดในเดือนเมษายนเกิดขึ้นกับระบบรอบข้าง

Vadim อธิบายว่า โดยปกติผู้ใช้งานทั่วไปใช้ SDK เพื่อเรียกใช้แพ็กเกจใหม่ ซึ่งแพ็กเกจใหม่นี้ได้แก้ปัญหาการซิงก์ last_index แล้ว สาเหตุที่แพ็กเกจ V2 เก่ายังหลงเหลืออยู่บนเชน คือ Sui packages มีความไม่เปลี่ยนรูป (immutable) — เมื่อเผยแพร่แล้ว แต่ละเวอร์ชันเก่าจะถูกเรียกใช้งานได้ตลอดไป วัตถุที่ใช้ร่วมกันของ Spool และ RewardsPool รับคำเรียกจากทุกเวอร์ชัน ผู้โจมตีจึงข้าม SDK ตรงเข้าไปยังเส้นทางโค้ดของเวอร์ชันเก่า

Vadim จัดประเภทสิ่งนี้ว่าเป็น「ช่องโหว่ประเภทแพ็กเกจที่ล้าสมัยบน Sui」 เขาระบุว่าการแก้ไขที่ถูกต้องจำเป็นต้องเพิ่มฟิลด์เวอร์ชันลงในวัตถุที่ใช้ร่วมกัน และเพิ่ม assert!(version == CURRENT_VERSION) ไว้ในทุกฟังก์ชัน หากไม่มีระบบนี้ แต่ละเวอร์ชันของแพ็กเกจที่เคยเผยแพร่ในอดีตก็จะยังคงเป็นช่องทางโจมตีที่เปิดรับการเข้าถึงอย่างแท้จริงไปตลอดกาล

Vadim ยังชี้ให้เห็นว่า เหตุการณ์การโจมตีส่วนใหญ่ในเดือนนี้ไม่ได้เกิดขึ้นในโค้ดของคอร์โปรโตคอล แต่เกิดในระบบรอบข้าง:

KelpDAO:โครงสร้างพื้นฐานด้าน RPC

Litecoin:ชั้นความเป็นส่วนตัว MWEB

Aethir:การควบคุมการเข้าถึงของตัวเชื่อมต่อรอบข้าง

Scallop:แพ็กเกจเวอร์ชันเก่าที่ถูกลืม

บทความนี้รายงานว่า Scallop ข้อตกลงเงินกู้ยืม DeFi บน Sui ถูกแฮ็ก โดยช่องโหว่ในคอนทรา็กต์เวอร์ชันเก่าทำให้ SUI 150,000 ถูกขโมย บทความนี้เผยแพร่ครั้งแรกบน ABMedia ข่าวเกี่ยวกับเชน

news.article.disclaimer
แสดงความคิดเห็น
0/400
ไม่มีความคิดเห็น