ข้ามไปยังเนื้อหา

การโจมตีระบบกำกับดูแล

การโจมตีระบบกำกับดูแลอาศัยอำนาจลงคะแนนหรือดำเนินการที่มากพอ เพื่อผ่านการเปลี่ยนแปลงที่เป็นอันตรายตามช่องทางที่โปรโตคอลอนุญาต

อัปเดต

จัดทำขึ้นเพื่อการศึกษาเท่านั้น ไม่ใช่คำแนะนำการลงทุน การลงทุนอาจทำให้สูญเสียเงินลงทุนได้

คำตอบโดยตรง

การโจมตีระบบกำกับดูแลเกิดขึ้นเมื่อผู้โจมตีได้อำนาจลงคะแนน เสนอ ยกเลิก หรือดำเนินการมากพอที่จะทำให้โปรโตคอลทำสิ่งที่เป็นอันตรายผ่านช่องทางกำกับดูแลที่ได้รับอนุญาต การเรียกใช้เหล่านั้นอาจผ่านการตรวจสอบของสัญญาอัจฉริยะทุกข้อ จุดบกพร่องคือระบบทำให้การควบคุมมีต้นทุนต่ำ รวดเร็ว หรือขาดความรับผิดชอบเมื่อเทียบกับมูลค่าที่อยู่ภายใต้การควบคุมนั้น

อำนาจลงคะแนนอาจมาจากโทเค็นของตนเอง คะแนนที่ได้รับมอบหมาย โทเค็นที่ยืมมา ผู้ลงคะแนนที่ถูกติดสินบน กุญแจที่ถูกเจาะ หรือบทบาทพิเศษใน Governor และไทม์ล็อก จุดตรวจสอบย้อนหลังช่วยป้องกันไม่ให้ยอดเดียวกันลงคะแนนซ้ำหลังโอน และป้องกันการยืมที่เกิดหลังสแนปช็อตได้ แต่ไม่ป้องกันคะแนนที่ได้มาก่อนสแนปช็อต การกระจุกตัวของการมอบอำนาจ กฎองค์ประชุมที่อ่อนแอ หรือผู้ดำเนินการที่ถูกเจาะ

ญัตติที่ไม่เป็นที่นิยมไม่ใช่การโจมตีทุกกรณี เพราะระบบกำกับดูแลมีไว้เปลี่ยนกฎ ประเด็นด้านความปลอดภัยคือมีผู้ใดได้อำนาจชั่วคราวหรือเกินสัดส่วน ปกปิดหรือบิดเบือนผลที่ดำเนินการได้ หรือข้ามขอบเขตอำนาจที่ประกาศต่อสาธารณะหรือไม่ ต้องตรวจคำสั่งจริง เส้นทางที่ถูกที่สุดสู่อำนาจชี้ขาด เวลาที่ใช้ตอบสนอง และมูลค่าหรืออำนาจสูงสุดที่เข้าถึงได้หลังดำเนินการ

กลไกการทำงาน

  1. ทำแผนที่อำนาจจากสินทรัพย์ที่ใช้ลงคะแนน ผ่านการมอบอำนาจและจุดตรวจสอบ ไปยัง Governor ไทม์ล็อก ผู้ดูแลพร็อกซี คลัง บทบาทฉุกเฉิน และสัญญาเป้าหมาย หน้าจอระบบกำกับดูแลไม่ใช่แผนผังสิทธิ์
  2. ระบุเครือข่าย ที่อยู่สัญญา รุ่นการทำงาน โหมดนาฬิกา สแนปช็อต เกณฑ์เสนอญัตติ วิธีคำนวณองค์ประชุม กฎนับคะแนน ระยะหน่วงและช่วงลงคะแนน ระยะรอคิว วันหมดอายุ สิทธิ์ยกเลิก และบทบาทดำเนินการให้แน่นอน
  3. สร้างอำนาจลงคะแนน ณ สแนปช็อตที่ถูกต้องขึ้นใหม่ด้วยการอ่านย้อนหลัง เช่น getPastVotes รวมที่อยู่ซึ่งบุคคลเดียวกันควบคุมหรือประสานงาน และแยกยอดโทเค็นออกจากน้ำหนักคะแนนที่ได้รับมอบหมาย
  4. ถอดรหัสทุกการดำเนินการ ได้แก่ targets values calldatas และ descriptionHash ตรวจพร็อกซีและตัวเลือกฟังก์ชัน ตรวจคำสั่งแบบชุด และเปรียบเทียบเพย์โหลดที่ทำงานได้กับคำอธิบายที่คนอ่าน
  5. จำลองการสร้างญัตติ การลงคะแนน การเข้าคิว และการดำเนินการบนฟอร์ก เปรียบเทียบยอดคงเหลือ ความเป็นเจ้าของ บทบาท วงเงินอนุญาต ตัวดำเนินการ การตั้งค่าออราเคิล พารามิเตอร์หลักประกัน และฟังก์ชันที่เพิ่งเข้าถึงได้ก่อนและหลังดำเนินการ
  6. ประเมินเส้นทางควบคุมที่ถูกที่สุดจากการซื้อสปอต ตลาดกู้ยืม สภาพคล่องแบบแฟลช เงินกู้นอกตลาด การมอบอำนาจ แรงจูงใจลงคะแนน การป้องกันความเสี่ยงด้วยอนุพันธ์ การเจาะกุญแจ และการยึดบทบาทพิเศษ รวมค่าธรรมเนียม สลิปเพจ หลักประกัน ขาดทุนเมื่อปิดสถานะ และเวลาที่ต้องผูกเงินทุน
  7. ทดสอบเส้นทางตอบสนอง ยืนยันว่าใครยกเลิกหรือหยุดชั่วคราวได้ ต้องใช้หลักฐานใด ทำได้ทันระยะหน่วงหรือไม่ ผู้ใช้รับประกาศทางการที่ใด และจะเริ่มระบบกำกับดูแลใหม่อย่างไรโดยไม่ทิ้งกุญแจฉุกเฉินที่ไร้ขีดจำกัด

Governor ของโทเค็นโดยทั่วไปผ่านสถานะเสนอ หน่วงเวลา สแนปช็อต ลงคะแนน ผ่านหรือไม่ผ่าน เข้าคิว ไทม์ล็อก และดำเนินการ กฎที่แน่นอนขึ้นอยู่กับการติดตั้ง จุดตรวจสอบแบบ ERC-5805 ทำให้สอบถามน้ำหนักคะแนนที่มอบหมายในอดีตได้ นาฬิกาอาจใช้หมายเลขบล็อกหรือเวลาประทับ ผู้ตรวจต้องใช้นาฬิกาและค่าที่ติดตั้งจริง ไม่ควรถือว่าระยะเวลาหรือยอดโทเค็นบนหน้าจอเป็นข้อมูลชี้ขาด

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

ตัวอย่างคำนวณ

  • การยึดอำนาจเมื่อมีส่วนร่วมน้อย โปรโตคอลมีโทเค็นทั้งหมด 100 million และหมุนเวียน 40 million ญัตติต้องมีผู้ร่วมลงคะแนน 2 million คะแนน เห็นชอบมากกว่าคัดค้าน และมีไทม์ล็อก 6-hour ผู้หนึ่งซื้อ 1.2 million คะแนนและได้รับมอบหมาย 1 million คะแนน มีคะแนนคัดค้าน 0.8 million ดังนั้นคะแนนเห็นชอบ 2.2 million จึงผ่านคำสั่งที่โอน 15 million USDC จากคลังได้ ผู้นั้นควบคุมอุปทานรวม 2.2 / 100 = 2.2% และอุปทานหมุนเวียน 2.2 / 40 = 5.5% แต่ครองคะแนนที่ลงจริง 2.2 / 3.0 = 73.3% ตัวแปรชี้ขาดคือการมีส่วนร่วม การมอบอำนาจ องค์ประชุม อำนาจของเพย์โหลด และระยะหน่วง ไม่ใช่คำกล่าว 51%
  • ขอบเขตสแนปช็อต หากอ่านน้ำหนักคะแนนจากยอดปัจจุบันและดำเนินการได้ทันที ธุรกรรมเดียวอาจยืมโทเค็น ลงคะแนน ดำเนินการ และคืนเงินได้ การอ่านน้ำหนักย้อนหลังที่แก้ไขไม่ได้จากเวลาก่อนลงคะแนนปิดเส้นทางธุรกรรมเดียวนี้ แต่เงินทุนที่ยืมหรือรับมอบหมายก่อนสแนปช็อตยังใช้ได้ ระยะหน่วงของญัตติและช่วงสะสมคะแนนที่สังเกตได้จึงยังเป็นส่วนหนึ่งของการป้องกัน
  • Beanstalk เมื่อวันที่ 17 เมษายน 2022 Beanstalk Farms รายงานว่าผู้โจมตีใช้แฟลชโลนหาประโยชน์จากกลไกกำกับดูแลของโปรโตคอล และขโมยสินทรัพย์ผู้ใช้ที่ไม่ใช่ Beanstalk ประมาณ $77 million เหตุการณ์นี้ชี้ว่าสภาพคล่องแบบแฟลชเป็นแหล่งเงินทุน ส่วนจุดอ่อนชี้ขาดคือระบบกำกับดูแลยอมให้อำนาจทางเศรษฐกิจชั่วคราวเข้าถึงสิทธิ์ดำเนินการมูลค่าสูง

ความเสี่ยงและการควบคุม

  • อำนาจที่แท้จริงกระจุกตัว วัดผู้รับมอบหมายและหน่วยงานที่ประสานกัน ไม่ใช่เพียงที่อยู่ผู้ถือ เปิดเผยสัดส่วนผู้รับมอบหมายรายใหญ่ การกระจายการมีส่วนร่วม และการพึ่งพามูลนิธิ ผู้รับฝาก ผู้ดูแลสภาพคล่อง และตัวแทน
  • กฎเสนอญัตติและองค์ประชุมอ่อนแอ เปรียบเทียบเกณฑ์กับอำนาจลงคะแนนที่ใช้งาน อุปทานที่ยืมได้ และความเสี่ยงของคลัง แยกข้อกำหนดสำหรับพารามิเตอร์ทั่วไปกับการอัปเกรดหรือโอนที่มีผลสูง
  • สแนปช็อตไม่ปลอดภัย ใช้จุดตรวจสอบย้อนหลังที่แก้ไขไม่ได้และนาฬิการ่วมกันระหว่างโทเค็นกับ Governor เว้นระยะหน่วงก่อนสแนปช็อตให้เห็นการสะสมหรือมอบอำนาจผิดปกติ
  • ลงคะแนนช้าหรือจู่โจม พิจารณาขยายเวลาขั้นต่ำเมื่อได้องค์ประชุมใกล้เส้นตาย และเฝ้าดูการเปลี่ยนแปลงการมอบอำนาจจำนวนมากตลอดวงจรญัตติ
  • เพย์โหลดไม่โปร่งใส เผยแพร่คำสั่งที่ถอดรหัสและผลจำลองอิสระ แยกการดำเนินการเสี่ยงที่ไม่เกี่ยวกัน เพื่อไม่ให้รายการปกติซ่อนการเปลี่ยนผู้ดูแลหรือการโอนคลัง
  • ระยะหน่วงดำเนินการไม่พอ ปรับไทม์ล็อกตามผลกระทบและเผยแพร่การดำเนินการในคิว ระยะหน่วงต้องรองรับการตรวจสอบ การเตือน การยกเลิกหรือหยุด และทางออกที่น่าเชื่อถือของผู้ใช้
  • บทบาทฉุกเฉินมีอำนาจเกินไป จำกัดผู้พิทักษ์ตามฟังก์ชัน มูลค่า ระยะเวลา และมาตรฐานตรวจสอบ เปิดเผยสมาชิก เกณฑ์ การหมุนเวียน หลักฐานที่ต้องใช้ และขั้นตอนถอดถอนกับเริ่มใหม่
  • เส้นทางอัปเกรดไม่ได้ตรวจ ติดตามผู้ดูแลพร็อกซี บีคอน ตัวเริ่มการทำงาน เส้นทางติดตั้งที่เปลี่ยนรูปได้ และสัญญาที่อัปเกรดได้หลังรับอำนาจ
  • ความเสี่ยงดำเนินการข้ามเครือข่าย ตรวจสอบ Governor และข้อความต้นทาง ป้องกันรีเพลย์ จำกัดฟังก์ชันเป้าหมาย เพิ่มระยะหน่วงในเครือข่ายปลายทางสำหรับคำสั่งสำคัญ และกำหนดพฤติกรรมเมื่อบริดจ์ล้มเหลวหรือหยุด
  • การเฝ้าระวังไม่พอ แจ้งเตือนการสร้างญัตติ การกระจุกคะแนน การเปลี่ยนองค์ประชุม การเข้าคิวและยกเลิก การเปลี่ยนสถานะที่ถอดรหัส การอัปเกรด การให้บทบาท วงเงินอนุญาต และเงินไหลออกจากคลัง
  • การตอบสนองเหตุขัดข้องล้มเหลว ฝึกญัตติอันตราย การสูญเสียผู้ลงนาม ส่วนหน้าถูกเจาะ บริดจ์ขัดข้อง และการหยุดผิดพลาด บันทึกว่าใครตัดสินใจ สื่อสาร ลงนาม ตรวจสอบ และกู้ระบบอย่างปลอดภัย
  • มูลค่าความเสี่ยงไร้ขีดจำกัด จำกัดการโอนคลังต่อครั้งและสะสม ขอบเขตอัปเกรด การสร้างโทเค็น การเปลี่ยนหลักประกัน และวงเงินอนุญาต การผ่านคะแนนไม่ควรมอบอำนาจไม่จำกัดโดยอัตโนมัติ

ผลการตรวจควรเป็นบัญชีการควบคุมที่ทำซ้ำได้ โดยบันทึกแต่ละการดำเนินการพิเศษ ผู้ควบคุม คะแนนหรือกุญแจที่ต้องใช้ เวลาดำเนินการเร็วที่สุด เส้นทางยกเลิก แหล่งติดตาม และมูลค่าสูงสุดที่เข้าถึงได้ คำนวณใหม่หลังอัปเกรด แจกโทเค็น เปลี่ยนการมอบอำนาจ ย้ายบริดจ์ หรือเมื่อสภาพคล่องและการมีส่วนร่วมเปลี่ยนอย่างมีนัยสำคัญ

ความเข้าใจผิดที่พบบ่อย

  • “ผู้โจมตีต้องมี 51% ของอุปทานรวม” ระบบส่วนใหญ่ขึ้นอยู่กับคะแนนที่มอบหมายหรือเข้าร่วม องค์ประชุม และกฎผ่านญัตติ ต้นทุนของอำนาจชี้ขาดอาจต่ำกว่าครึ่งหนึ่งของอุปทานมาก
  • “สแนปช็อตกำจัดการโจมตีระบบกำกับดูแล” สแนปช็อตป้องกันการใช้คะแนนซ้ำบางแบบหรือการยืมในนาทีสุดท้าย แต่ไม่ป้องกันการยืมล่วงหน้า การซื้อ การกระจุกตัวของการมอบอำนาจ สินบน หรือกุญแจพิเศษถูกเจาะ
  • “คะแนนบนเชนที่ผ่านพิสูจน์ความชอบธรรม” พิสูจน์เพียงว่าเงื่อนไขในโค้ดครบ ไม่ได้พิสูจน์ว่าคำอธิบายตรงกับเพย์โหลด หรือผลลัพธ์ปลอดภัย ยุติธรรม และอยู่ในคำมั่นสาธารณะ
  • “ไทม์ล็อกยิ่งนานยิ่งปลอดภัย” ระยะหน่วงมีประโยชน์เมื่อมีเวลาติดตาม วิเคราะห์ ยกเลิกหรือหยุด สื่อสาร และออกจากระบบภายในช่วงนั้น ระยะหน่วงมากเกินไปอาจขัดขวางการบำรุงรักษาเร่งด่วน
  • “เพิ่มสภาความปลอดภัยแล้วความเสี่ยงจะหมด” สภาอาจตอบสนองเร็วขึ้น แต่สร้างเส้นทางควบคุมอีกทาง อำนาจ ความรับผิดชอบ การถอดถอน และรูปแบบความล้มเหลวต้องอยู่ในแบบจำลองภัยคุกคามเดียวกัน

หัวข้อที่เกี่ยวข้อง

แหล่งข้อมูล

การนำทาง

ค้นหาในวิกิ...