เมื่อเร็ว ๆ นี้ Curve โปรโตคอลสกุลเงินที่มีความเสถียรสูงถูกโจมตีโดยการกลับเข้ามาใหม่ ทำให้เกิดการสูญเสียอย่างร้ายแรง ต่อไปนี้คือการวิเคราะห์ความปลอดภัยของ MetaTrust Labs และคำแนะนำด้านความปลอดภัยสำหรับการโจมตีนี้
รีวิวเหตุการณ์
ตาม Twitter อย่างเป็นทางการของ Curve Finance เมื่อวันที่ 31 กรกฎาคม 2023 พูลที่เสถียร (alETH/msETH/pETH) บางส่วนที่เขียนโดยใช้ Vyper เวอร์ชัน 0.2.15 อาจถูกโจมตีซ้ำ Curve Finance ระบุว่าการโจมตีเกิดจากการล็อกการกลับเข้าใช้ที่ผิดพลาดใน Vyper เวอร์ชัน 0.2.15 และได้รับผลกระทบเฉพาะกลุ่มที่ใช้ ETH บริสุทธิ์ ขณะนี้เคิร์ฟกำลังประเมินความเสียหาย ส่วนสระอื่นๆ ปลอดภัย
จากการวิเคราะห์ของ MetaTrust Labs ช่องโหว่ดังกล่าวถูกนำมาใช้ระหว่างเดือนสิงหาคมถึงตุลาคม 2021 สาเหตุหลักมาจากคอมไพเลอร์เวอร์ชัน 0.2.15/0.2.16/0.3.0 ของ Vyper สาเหตุของช่องโหว่คือตรรกะการกลับเข้าใช้ใหม่ใน bytecode ที่สร้างขึ้นไม่ควรมีผลเนื่องจากข้อผิดพลาดในคอมไพเลอร์
จากสถิติของเครือข่ายดังกล่าว เหตุการณ์การแฮ็คกลุ่มเหรียญ Stablecoin ของ Curve Finance ทำให้เกิดความสูญเสียสะสม 52 ล้านดอลลาร์สหรัฐในกลุ่ม Alchemix, JPEG'd, CRV/ETH เป็นต้น โทเค็น CRV ของ Curve Finance ก็ได้รับผลกระทบอย่างหนักเช่นกัน โดยลดลงมากกว่า 15% ในวันนั้น
วิเคราะห์สาเหตุ
สาเหตุที่ Curve Finance ถูกโจมตีในครั้งนี้คือเมื่อ Curve ใช้ภาษา Vyper ในการเขียนสัญญาอัจฉริยะ จะใช้ Vyper เวอร์ชัน 0.2.15 มีช่องโหว่ในเวอร์ชันนี้ที่เรียกว่า reentrancy locks ทำงานผิดพลาด (reentrancy lock failure) การโจมตีซ้ำเพื่อก่อให้เกิดความสูญเสีย ช่องโหว่ของ Curve Finance ในครั้งนี้เป็นช่องโหว่เฉพาะภาษา
ช่องโหว่เฉพาะภาษาหมายถึงช่องโหว่ที่เกิดจากข้อบกพร่องหรือความเข้ากันไม่ได้ในภาษาโปรแกรมหรือคอมไพเลอร์บางภาษา ช่องโหว่ดังกล่าวมักจะค้นหาและป้องกันได้ยาก เนื่องจากไม่ได้เกิดจากความประมาทเลินเล่อของนักพัฒนาหรือข้อผิดพลาดทางตรรกะ แต่เกิดจากปัญหาของแพลตฟอร์มเทคโนโลยีพื้นฐาน ช่องโหว่ประเภทนี้มีแนวโน้มที่จะส่งผลกระทบต่อหลายโครงการหรือหลายสัญญา เนื่องจากช่องโหว่เหล่านี้ใช้ภาษาหรือคอมไพเลอร์เดียวกัน
Vyper เป็นภาษาโปรแกรมสัญญาอัจฉริยะที่ใช้ Python ออกแบบมาเพื่อความปลอดภัยและความสามารถในการอ่านที่มากขึ้น Vyper อ้างว่าเป็นภาษาที่ "ปลอดภัยไว้ก่อน" และไม่สนับสนุนคุณสมบัติบางอย่างที่อาจทำให้เกิดความเสี่ยงด้านความปลอดภัย เช่น คลาส การสืบทอด ตัวดัดแปลง ชุดประกอบแบบอินไลน์ เป็นต้น อย่างไรก็ตาม Vyper ยังไม่สมบูรณ์แบบ และยังมีจุดบกพร่องหรือช่องโหว่ที่อาจส่งผลต่อความปลอดภัยของสัญญา ตัวอย่างเช่น นอกเหนือจากความล้มเหลวในการล็อกผู้กลับเข้าที่ใหม่ซึ่งพบโดย Curve Finance ในครั้งนี้ Vyper ยังประสบปัญหาต่างๆ เช่น อาร์เรย์อยู่นอกขอบเขต จำนวนเต็มล้น และข้อผิดพลาดในการเข้าถึงที่เก็บข้อมูล
มาตรการรักษาความปลอดภัย
สำหรับการโจมตีการกลับคืนสู่สภาพเดิมของ Curve Finance ในครั้งนี้ ได้มีการดำเนินการหรือเสนอมาตรการตอบโต้บางอย่าง ต่อไปนี้เป็นมาตรการตอบโต้ด้านความปลอดภัยที่คุณสามารถทำได้:
- การถอนสภาพคล่อง: สำหรับกลุ่มที่ได้รับผลกระทบ ผู้ใช้สามารถเลือกที่จะถอนสภาพคล่องเพื่อหลีกเลี่ยงการสูญเสียเพิ่มเติม Curve Finance ได้จัดเตรียมปุ่มสำหรับถอนสภาพคล่องบนเว็บไซต์อย่างเป็นทางการซึ่งสะดวกสำหรับผู้ใช้ในการดำเนินการ
- อัปเกรดคอมไพเลอร์: สำหรับสัญญาที่ใช้คอมไพเลอร์ Vyper 0.2.15/0.2.16/0.3.0 ขอแนะนำให้อัปเกรดเป็นเวอร์ชัน Vyper 0.3.1 ล่าสุด ซึ่งได้แก้ไขปัญหาการล็อกการกลับเข้าที่ล้มเหลวแล้ว ในขณะเดียวกัน ขอแนะนำให้ใช้เครื่องมือหรือวิธีการอื่นๆ ในการตรวจสอบความปลอดภัยของสัญญา เช่น การตรวจสอบอย่างเป็นทางการ การตรวจสอบโค้ด เป็นต้น
- ระมัดระวัง: สำหรับสัญญาที่เขียนด้วยภาษา Vyper หรือภาษาอื่นๆ ขอแนะนำให้ระมัดระวัง ให้ความสนใจกับการอัปเดตภาษาหรือคอมไพเลอร์และการแก้ไขข้อบกพร่อง และใช้มาตรการที่จำเป็นในเวลาที่เหมาะสมเพื่อปกป้องทรัพย์สินของคุณ ในเวลาเดียวกัน ขอแนะนำด้วยว่าเมื่อใช้ภาษาใหม่หรือเทคโนโลยีใหม่ ให้ประเมินวุฒิภาวะและความเสถียรอย่างรอบคอบ และหลีกเลี่ยงการไล่ตามความใหม่หรือประสิทธิภาพอย่างสุ่มสี่สุ่มห้า
สรุป
สรุป
เหตุการณ์การกลับเข้าระบบของ Curve Finance เป็นเหตุการณ์ด้านความปลอดภัยที่โชคร้ายและเป็นบทเรียนที่กระตุ้นความคิด ในสาขาการเงินแบบกระจายอำนาจ (DeFi) การรักษาความปลอดภัยเป็นสิ่งสำคัญที่สุดเสมอ ฝ่ายโครงการควรปรับปรุงการรับรู้และความสามารถด้านความปลอดภัยอย่างต่อเนื่อง รายละเอียดใดๆ อาจกลายเป็นความก้าวหน้าสำหรับผู้โจมตีเพื่อใช้ประโยชน์
ตามเรามา
ทวิตเตอร์: @ MetaTrustLabs
เว็บไซต์: metatrust.io
ความคิดเห็นทั้งหมด