เมื่อไม่กี่วันที่ผ่านมา LayerZero ซึ่งเป็นโปรโตคอลพื้นฐานของสะพานข้ามเชนของ Stargate ได้อัปเดตสัญญาการตรวจสอบธุรกรรมเริ่มต้นตามการวิเคราะห์ของทีมรักษาความปลอดภัย Cobo blockchain การอัปเดตนี้ได้แก้ไขช่องโหว่ร้ายแรงในเวอร์ชันก่อนหน้าซึ่งอาจ ทำให้ cross-chain ทั้งหมดที่สร้างขึ้นบน LayerZero ถึง The asset ของโครงการได้รับผลกระทบ
Stargate Financeเป็นโครงการสะพานข้ามโซ่ที่สะดุดตาที่สุดในช่วงไม่กี่วันที่ผ่านมา ณ เวลาที่เผยแพร่ TVL มีมูลค่าเกิน 3.5 พันล้านดอลลาร์สหรัฐ
ชั้นล่างสุดของสะพานข้ามโซ่ของ Stargate ใช้ LayerZero เพื่อให้เกิดการส่งข้อความข้ามสายโซ่ หลักการพื้นฐานเบื้องหลังการส่งข้อความข้ามสายของ LayerZero คือ:
ออราเคิลจะส่งบล็อกแฮชและบล็อกใบเสร็จรูทบนเชนต้นทางไปยังเชนเป้าหมาย
Relayer จะส่งใบเสร็จรับเงินของธุรกรรมบนห่วงโซ่ต้นทางและความสัมพันธ์ของเส้นทางระหว่างใบเสร็จรับเงินและบล็อกใบเสร็จรูทไปยังเชนเป้าหมาย ในเวลานี้ สัญญาการตรวจสอบธุรกรรมบนเชนเป้าหมายจะขึ้นอยู่กับความสัมพันธ์การพึ่งพาของ Ethereum MPT [ 1] ตรวจสอบความสัมพันธ์ที่สอดคล้องกันระหว่างใบเสร็จรับเงินที่ส่งและใบเสร็จรับเงินรากที่ส่งโดย Oracle
หากการยืนยันผ่าน ใบเสร็จจะถือว่าเป็นใบเสร็จตามกฎหมายและส่งต่อไปยังโปรโตคอลชั้นบน เรียกการดำเนินการสินทรัพย์ข้ามสายตามมา
LayerZero อัปเดตสัญญาการตรวจสอบสำหรับการใช้ข้ามเครือข่ายในวันที่ 28 มีนาคมโดยไม่มีการประกาศ [2] ทีมรักษาความปลอดภัยของ Cobo พบว่าการอัปเดตนี้เป็นการแก้ไขช่องโหว่ด้านความปลอดภัยที่สำคัญก่อนหน้านี้ โดยการเปรียบเทียบรหัสของสัญญาการตรวจสอบต้นฉบับ (MPTValidator) และสัญญาการตรวจสอบใหม่ (MPTValidatorV2) [3]
รหัสหลักของแพตช์มีดังนี้:
เมื่อรหัสช่องโหว่เดิมทำการตรวจสอบ MPT จะได้รับ hashRoot ที่ใช้สำหรับการคำนวณในชั้นถัดไปผ่านตัวชี้ที่ส่งเข้ามาจากภายนอก ที่นี่ ความแข็งแกร่งภายใต้คำสั่งเพิ่ม mload และแอสเซมบลีอื่น ๆ ถูกใช้เพื่อรับ hashRoot จาก ProofBytes เนื่องจากไม่มีการจำกัดความยาวของพอยน์เตอร์ภายในความยาวของ ProofBytes ผู้โจมตีสามารถผ่านพอยน์เตอร์ที่อยู่นอกขอบเขตเพื่อสร้าง สัญญาจะอ่านข้อมูลอื่นที่ไม่ใช่ ProofBytes เป็น hashRoot ชั้นถัดไป ด้วยวิธีนี้มีความเป็นไปได้ที่จะปลอม hashRoot ซึ่งนำไปสู่ความจริงที่ว่าใบเสร็จธุรกรรมปลอมสามารถผ่านการตรวจสอบ MPT ผลลัพธ์สุดท้ายคือ ภายใต้สมมติฐานว่า Oracle ได้รับความไว้วางใจอย่างสมบูรณ์ Relayer ยังคงสามารถโจมตีโปรโตคอลข้ามสายโซ่เพียงฝ่ายเดียวได้โดยการปลอมแปลงข้อมูลใบเสร็จ ซึ่งทำลายข้อสันนิษฐานด้านความปลอดภัยของ LayerZero ก่อนหน้านี้
Oracle ของโปรโตคอล LayerZero ปัจจุบันเป็นสัญญาที่คล้ายกับหลายลายเซ็น หลังจาก 2 ใน 3 ผู้ดูแลระบบส่งข้อมูลเดียวกัน อย่างไรก็ตาม Relayer ถูกควบคุมโดย EOA ที่มีลายเซ็นเดียว และ Relayer ใดๆ ก็สามารถส่งข้อมูลการโจมตีเพื่อให้กระบวนการโจมตีทั้งหมดเสร็จสมบูรณ์ได้
รหัสที่แพตช์ใช้เส้นทางขาเข้าและใช้ฟังก์ชัน safeGetItemByIndex เพื่อรับ hashRoot ของเลเยอร์ถัดไปของ MPT เพื่อให้มั่นใจว่า hashRoot อยู่ใน ProofBytes ปัจจุบัน เพื่อให้การตรวจสอบ MPT สามารถดำเนินการได้อย่างถูกต้อง
รหัสที่เปิดเผยช่องโหว่ในครั้งนี้คือรหัสของส่วนการตรวจสอบธุรกรรม MPT หลักของโปรโตคอล LayerZero และเป็นรากฐานที่สำคัญของการทำงานปกติของโปรโตคอล LayerZero และ Upper-layer ทั้งหมด (เช่น Stargate) แม้ว่าทีมโครงการ LayerZero ได้แก้ไขช่องโหว่ที่เห็นได้ชัดในปัจจุบันแล้ว แต่ก็ไม่สามารถตัดความเป็นไปได้ของช่องโหว่อื่นๆ ที่ถูกโจมตีได้ นอกจากนี้ สัญญาหลักส่วนใหญ่ของโครงการ LayerZero ในปัจจุบันถูกควบคุมโดย EOA และไม่มีกลไกหลายลายเซ็นหรือกลไกล็อคเวลา หากคีย์ส่วนตัวของ EOA ที่มีสิทธิพิเศษเหล่านี้รั่วไหล ทรัพย์สินของโปรโตคอลชั้นบนทั้งหมดอาจได้รับผลกระทบด้วย
ที่นี่ ทีมรักษาความปลอดภัย Cobo blockchain เตือนนักลงทุนให้ใส่ใจกับความเสี่ยงของโครงการใหม่ และในขณะเดียวกันก็เรียกร้องให้ฝ่ายโครงการ LayerZero ทำการตรวจสอบเชิงลึกของรหัสสัญญาและโอนสิทธิ์ที่ควบคุมโดย EOA ปัจจุบันไปยัง หลายลายเซ็นหรือสัญญาแบบล็อกเวลาให้เร็วที่สุด ลดความเสี่ยง การโจมตี
Reference:
https://eth.wiki/fundamentals/patricia-tree
https://etherscan.io/tx/0xf4f0495bfed37d4d95b3342ead0962433c7973f240b9b0739faa91e6ccac9d40
https://www.diffchecker.com/RJdDTCx7