เขียนโดย แดเนียล วอน แฟงจ์
เรียบเรียงโดย: angelilu, Foresight News
เมื่อวานนี้ Daniel Von Fange นักวิจัยอิสระได้ตีพิมพ์ บทความ บนแพลตฟอร์ม X โดยเปิดเผยว่า Curve มีความเสี่ยงต่อการถูกบิดเบือนจาก Oracle และความเสี่ยงนี้ตรวจพบได้ยากในระหว่างการโจมตี การจัดการของ Oracle อาจทำให้ Oracle รายงานข้อมูลที่ผิดพลาดเกี่ยวกับเหตุการณ์ภายนอกหรือโลกแห่งความเป็นจริง ส่งผลให้โปรโตคอลที่เชื่อมต่อกับ Oracle เสี่ยงต่อการถูกจัดการ Daniel Von Fange กล่าวว่าทีมที่เกี่ยวข้องที่อาจได้รับผลกระทบได้รับแจ้งแล้ว
Michael Egorov ผู้ก่อตั้ง Curve ตอบสนองต่อปัญหาในชุมชนโดยกล่าวว่า "ความเสี่ยงนี้อาจเกิดขึ้นในพูลเวอร์ชันเก่า พูลเวอร์ชันเก่าไม่ได้ใช้ใน crvusd และไม่แนะนำให้ใช้ oracles" Daniel ยังยืนยันคำพูดของเขาด้วย ความเสี่ยงในการเปิดเผยข้อมูลของ Von Fange นั้นเป็นเรื่องจริง
อย่างไรก็ตาม ผู้ร่วมให้ข้อมูลของ Curve ไม่ พอใจ กับวิธีที่นักวิจัยอิสระเปิดเผยข้อมูลนี้ต่อสาธารณะโดยไม่มีการสนทนา และออกคำชี้แจงโดยกล่าวว่าช่องโหว่ที่เปิดเผยโดย Daniel Von Fange ได้ถูกพูดคุยเป็นการส่วนตัวมาก่อน แต่เขาเชื่อว่าผู้โจมตีต้องการปรับปรุงความแม่นยำ ค่าใช้จ่ายในการเพิ่มค่าธรรมเนียมก๊าซอยู่ในระดับสูงและการตรวจสอบภายนอกยังจัดว่ามีผลกระทบต่ำอีกด้วย และช่องโหว่ที่เปิดเผยโดยนักวิจัยนั้นเกี่ยวข้องกับอัลกอริธึม cryptoswap รุ่นเก่าของ Curve ซึ่งใช้ราคา Last_price แต่การใช้งาน cryptoswap-ng ที่ใหม่กว่านั้นใช้ราคาสถานะ AMM ซึ่งสามารถแก้ไขปัญหาดังกล่าวได้ นอกจากนี้ yAuditDAO ยังพบข้อผิดพลาดของ Oracle บางอย่าง ซึ่งกำลังได้รับการแก้ไข ไม่มีใครใช้ Oracle เหล่านี้ และ LP (ผู้ให้บริการสภาพคล่อง) ในกลุ่มการซื้อขาย Stablecoin เหล่านี้จะไม่ได้รับผลกระทบ
อย่างไรก็ตาม บางทีมได้เริ่มปรับโปรโตคอลเพื่อเพิ่มความปลอดภัยตามความเสี่ยงที่เปิดเผยแล้ว นักพัฒนา Yearn Finance @storming0x ยังตอบสนองต่อความเสี่ยงที่เปิดเผยโดย Daniel Von Fange โดยกล่าวว่า "สัญญาของ Yearn จะไม่ได้รับผลกระทบ ยกเว้นสัญญาหนึ่งฉบับที่ใช้กลไกความซ้ำซ้อนของ Chainlink เพื่อบรรเทาเส้นทางการโจมตีที่อาจเกิดขึ้น Yearn Development ทีมงานจึงตัดสินใจ ปรับใช้เวอร์ชันใหม่อีกครั้ง”
ต่อไปนี้เป็นข้อความฉบับเต็มของการเปิดเผยของ Daniel Von Fange เกี่ยวกับความเสี่ยงของการปั่นราคาใน Curve oracle:
ในช่วงสองสัปดาห์ที่ผ่านมา ฉันได้เจาะลึกถึงการคาดการณ์ราคาของ Curve และค้นพบพฤติกรรมที่ผิดปกติอย่างมาก
คำพยากรณ์เหล่านี้ไม่ทำงานอย่างที่คุณคิด ง่ายต่อการจัดการมากกว่าที่คาดไว้ และอาจผิดพลาดได้ภายใต้สถานการณ์ปกติ
ภาพรวมโดยย่อ: ในพูลส่วนใหญ่ ผู้โจมตีสามารถจัดการราคา Oracle ของ Curve ให้สูงกว่าราคาปกติถึง 10x ถึง 500x ได้ในบล็อกเดียว และการยักย้ายสามารถซ่อนไว้ได้ เพื่อว่าเมื่อคุณดูที่สระน้ำ จะไม่มีสัญญาณว่ากำลังถูกจัดการ
มี Curve Pool มากมาย และไม่มีใครสามารถนับจำนวนฐานโค้ดในกลุ่มต่างๆ ได้อย่างแม่นยำ
สิ่งที่ฉันเขียนอาจนำไปใช้กับบางกลุ่มหรือไม่ก็ได้ พูลที่แตกต่างกันมีช่องโหว่ที่แตกต่างกัน บางทีสระบางแห่งอาจไม่มีรูเลย
ทีมงาน Curve ทำหน้าที่ได้อย่างยอดเยี่ยมในการรับรายงานและพูดคุยกัน และภายในไม่กี่นาทีก็ยืนยันว่า CrvUSD ไม่ได้รับผลกระทบจากปัญหาเหล่านี้
ฉันยังตรวจสอบสัญญาประมาณ 100 สัญญาบน mainnet ที่ใช้ Curve price oracles และแจ้งให้ทีมที่เกี่ยวข้องทราบตามความเหมาะสม
ปัญหาสำคัญของช่องโหว่นี้คือ Last_price อาจถูกคำนวณผิดเมื่อราคาไม่ใกล้กับ 1:1 หรือค่าธรรมเนียมการจัดการสูง
ประการแรก ค่าธรรมเนียมจะไม่รวมอยู่ในการคำนวณ Last_price ซึ่งทำให้ใช้ตัวเลขที่แตกต่างจากธุรกรรมจริงหรือยอดคงเหลือพูล
ออราเคิลราคา EMA ขับเคลื่อนด้วย Last_price เมื่อ Last_price ไม่ถูกต้อง ออราเคิลราคาจะเริ่มเคลื่อนที่ไปสู่ราคาเป้าหมายที่ไม่ถูกต้อง
ในการซื้อขายปกติ ผมเคยเห็นราคาตำแหน่ง price oracles ที่เบี่ยงเบนมากกว่าหนึ่งเปอร์เซ็นต์จากราคาจริงปัจจุบันในกลุ่ม สถานการณ์กรณีที่เลวร้ายที่สุดอาจแย่ลง (ราคาปกติในแผนภูมิ)
ข้อผิดพลาดการดริฟท์นี้อาจสูงหรือต่ำกว่าราคาจริง ทั้งนี้ขึ้นอยู่กับพูล
ปัญหาใหญ่ที่สุดคือในระหว่างการบิดเบือน ข้อผิดพลาด Last_price อาจเป็นลำดับความสำคัญที่สูงกว่าราคาที่ถูกบิดเบือนจริง ทำให้โอกาสที่ Pool Oracle จะถูกจัดการอย่างมีประสิทธิภาพสูงขึ้นอย่างมาก
แม้แต่ธุรกรรมเล็กๆ น้อยๆ ก็สามารถแก้ไขความเบี่ยงเบนของราคาสุดท้าย/ราคา Oracle ได้ ซึ่งนำไปสู่สถานการณ์ที่ไร้สาระ
แม้แต่ธุรกรรมเล็กๆ น้อยๆ ก็สามารถแก้ไขความเบี่ยงเบนของราคาสุดท้าย/ราคา Oracle ได้ ซึ่งนำไปสู่สถานการณ์ที่ไร้สาระ
เนื่องจากผลกระทบที่ทับซ้อนกันของความผันผวนของราคาจำนวนมากและข้อผิดพลาดในการคำนวณราคาล่าสุด ผู้โจมตีสามารถจัดการ oracle ราคา EMA ในบล็อกถัดไปโดยไม่ต้องเสียค่าใช้จ่ายจำนวนมากเพื่อรักษาราคาให้สูงในหลายสิบบล็อกเพื่อต่อสู้กับผู้เก็งกำไร
ตามทฤษฎีแล้ว ผู้โจมตีสามารถควบคุมการขุดสองบล็อกติดต่อกัน ซึ่งจำเป็นเพื่อให้ปฏิบัติการนี้สำเร็จ ผู้โจมตีจะต้องมีเงินทุนเพียงพอในการโจมตีด้านราคา แต่ผู้โจมตีในอดีตจำนวนมากมีเงินหลายสิบล้านดอลลาร์อยู่ในมือ
เพื่อไม่ให้เกิดปัญหานี้ เรามาพูดถึงกลยุทธ์ทั่วไปในการป้องกันการควบคุมราคาของ Curve และประสิทธิผลของกลยุทธ์เหล่านั้น
Curve v1 Pool มีตัวเลขสี่ตัวที่สามารถใช้เพื่อตรวจจับการบิดเบือน ราคาจริง ราคา oracle ราคาล่าสุด และราคา EMA น่าเสียดายที่การซื้อขายครั้งเดียวเพื่อควบคุมราคา price_oracle สามารถรีเซ็ตสิ่งเหล่านี้ทั้งหมดให้เป็นตัวเลขเดียวกันได้หลังจากการปั่นหนึ่งครั้ง
price_scale ของพูล Curve v2 นั้นยากต่อการจัดการมากกว่า price oracle การเปลี่ยนแปลงช้ากว่าและต้องใช้ค่าธรรมเนียมการทำธุรกรรมตามจริงจึงจะย้ายได้ หากออราเคิลราคาที่รวดเร็วนี้ตรงกับ price_scale ที่ช้า แสดงว่าสถานการณ์มีเสถียรภาพใช่ไหม
เลขที่! ปัญหาการโจมตีหลักคือการจัดตัวเลขสามตัว ราคาจริง oracle ที่เร็ว และสเกลที่ช้า ราคาจริงนั้นควบคุมได้ง่ายเพราะสามารถจัดการได้ทันที ปัญหาจึงกลายเป็นการออกแบบจุดตัดระหว่างอีกสองจุด
ผู้โจมตีทำให้ราคาสูงขึ้นชั่วครู่ จากนั้นกลับสู่ภาวะปกติในบล็อกถัดไป และรอสองสามบล็อกเพื่อโจมตีจนกว่า oracle ราคาที่ลดลงจะพบกับ price_scale ที่เพิ่มขึ้น ราคาจริงจะต้องรักษาให้สูงเพื่อให้บล็อกเพียงพอที่จะสร้างความสับสนให้กับ Oracle และ price_scale จะตามมา
ออราเคิลหลายแห่งใช้ cap ซึ่งจำกัดราคาที่ใช้จากราคาออราเคิล Curve ไว้ที่ค่าสูงสุด 1:1 นี่เป็นสิ่งที่ดีและตัดทอนคุณค่าที่สูงอย่างโง่เขลาออกไป อย่างไรก็ตาม โปรดทราบว่าหากเนื้อหาถูกยกเลิกการตรึงจริงๆ ผู้โจมตีสามารถซื้อเนื้อหาในราคาที่ต่ำ จากนั้นจัดการให้ดูเหมือนถูกตรึงอีกครั้ง
บางครั้งโปรโตคอลจะตั้งค่าขั้นต่ำ และหากการตอบสนองของ Curve price oracle ต่ำกว่าเปอร์เซ็นต์ที่กำหนด ก็จะถูกละเว้น แต่ถ้าคุณเพิกเฉยต่อราคาเมื่อสินทรัพย์แยกออกจากกัน คุณจะเอาชนะจุดประสงค์ทั้งหมดของการมี price oracle ได้
กลยุทธ์ทั่วไปอีกประการหนึ่งคือการผสมผสานราคาของระบบ AMM อื่น ส่วนใหญ่ขึ้นอยู่กับคุณภาพและลักษณะการจัดการของพูลอื่นๆ หากมีสภาพคล่องน้อยลงและจัดการได้ง่ายกว่า แสดงว่าเป็นการเอาชนะจุดประสงค์
แย่ + แย่ = แย่
กลยุทธ์ทั่วไปอีกประการหนึ่งคือการผสมผสานราคาของระบบ AMM อื่น ส่วนใหญ่ขึ้นอยู่กับคุณภาพและลักษณะการจัดการของพูลอื่นๆ หากมีสภาพคล่องน้อยลงและจัดการได้ง่ายกว่า แสดงว่าเป็นการเอาชนะจุดประสงค์
แย่ + แย่ = แย่
Curve Pool ใหม่สำหรับคู่การซื้อขาย Stablecoin/Stablecoin ภายในจะจำกัด Last_price ไว้ที่ 2 เท่าของมูลค่า 1:1 วิธีนี้จะป้องกันการโจมตีแบบบล็อกเนื่องจาก Last_price ไม่สามารถผลักไปยังค่าที่สูงจนน่าตกใจได้ ซึ่งจะทำให้ EMA ทำงานหนักเกินไป
แต่จะผิดหากทรัพย์สินที่ไม่ถูกต้องถูกแยกออกจากกันตามกฎหมาย
หากคุณต้องการใช้ Curve Pools เพื่อกำหนดราคาสินทรัพย์หลักประกัน คุณไม่ควรทำอย่างนั้น
พูลที่ใหม่กว่ามักจะมีต้นทุนการโจมตีที่สูงกว่า นี่อาจเป็นตัวเลือกหากกลุ่มที่มีการจัดการมีผลกระทบเล็กน้อยต่อตลาด (อาจเพียงเพื่อปกป้องการกระจายรายได้) และหากการโจมตีต่อการจำลองพูลมีค่าใช้จ่ายสูง
สุดท้ายนี้ ผู้เขียนแนะนำให้ทั้งคู่ทำการจำลองการโจมตีตามจริงใน Pool ที่ใช้ แทนที่จะคาดการณ์พฤติกรรมของ Price Oracle ตามสมมติฐานหรือทฤษฎี ควรทำการทดสอบการจำลองโดยละเอียดกับ Pool ที่ใช้จริง ด้วยการจำลองการโจมตีด้วยการยักย้าย คุณจะเข้าใจได้ดียิ่งขึ้นว่าพูลจะทำงานอย่างไรในสถานการณ์ต่างๆ
แผนภูมิต่อไปนี้เป็นแผนภูมิการเพิ่มขึ้นของการใช้งาน Curve oracle ในช่วง 90 วันที่ผ่านมา:
Curve Pool บางแห่งมีออราเคิลราคาที่ทำงานได้ดี และฉันไม่สามารถทำให้พวกเขามีพฤติกรรมแปลก ๆ ได้ และพวกมันก็ทำในสิ่งที่ฉันคาดหวังจาก EMA ที่มีประสิทธิภาพดีอย่างแน่นอน แต่ยังต้องตรวจสอบ...
ความคิดเห็นทั้งหมด