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

ความเสี่ยงของเจ้าของและการกู้คืนบัญชีอัจฉริยะ

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

อัปเดต

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

คำตอบโดยตรง

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

การกู้คืนลดโอกาสที่คีย์หนึ่งสูญหายแล้วทำให้บัญชีใช้ไม่ได้ แต่เพิ่มพื้นผิวการยึดบัญชี ตรวจสอบทุกเส้นทางที่อนุญาตการดำเนินงาน เปลี่ยน validator หรือเจ้าของ ติดตั้งโมดูล อัปเกรดโค้ด หรือยกเลิกและปิดการกู้คืน ป้าย “เจ้าของ” และ “ผู้พิทักษ์” ในอินเทอร์เฟซไม่ใช่หลักฐานสิทธิ์จริงในสัญญา

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

วิธีการทำงาน

  1. ระบุบัญชีและโค้ด ตรวจสอบ chain ID และที่อยู่บัญชี แล้วหา implementation, proxy หรือ beacon, factory และเวอร์ชัน สำหรับ proxy ERC-1967 ให้อ่านสล็อต implementation, beacon และผู้ดูแล แทนการเชื่อป้ายในอินเทอร์เฟซ
  2. แจกแจงเส้นทางอนุญาต อ่านเจ้าของและเกณฑ์, validator ERC-4337, validator, executor, hook และ fallback handler ERC-7579, โมดูลและ guard แบบ Safe, session key, สัญญากู้คืน และผู้ดูแลฉุกเฉินหรืออัปเกรด executor หรือโมดูล Safe อาจทำงานได้โดยไม่ผ่านเกณฑ์เจ้าของปกติ
  3. ถอดสถานะการกู้คืน ระบุว่าใครเสนอเจ้าของใหม่ การอนุมัติของผู้พิทักษ์นับและหมดอายุอย่างไร ระยะหน่วงเริ่มเมื่อใด ใครยกเลิก ใครปิดกระบวนการ และเกิดอะไรเมื่อแทนที่หรือเริ่มกู้คืนซ้ำ อย่าคิดว่าสัญญา “การกู้คืนทางสังคม” ทุกแบบใช้ลำดับเดียวกัน
  4. ทดสอบความเป็นอิสระและความพร้อมใช้ ที่อยู่ต่างกันไม่เป็นอิสระหากอุปกรณ์ บุคคล บัญชีคลาวด์ คลังรหัสผ่าน ผู้รับฝาก หรือผู้ดูแลเดียวกันควบคุมทั้งหมด ยืนยันว่าเมื่อเกิดความขัดข้องที่คาดไว้หนึ่งจุดยังถึงเกณฑ์ได้ โดยไม่ให้โดเมนเดียวมีอำนาจยึดบัญชี
  5. ทบทวนสิทธิ์กำหนดค่า ระบุว่าใครเพิ่มหรือลบผู้พิทักษ์ validator, executor, hook, โมดูล หรือ fallback handler เปลี่ยนเกณฑ์หรือระยะหน่วง ระงับการยกเลิก หรืออัปเกรดโค้ดบัญชีและการกู้คืน timelock มีประโยชน์เมื่อบทบาทอื่นข้ามระยะหน่วงและเส้นทางยกเลิกไม่ได้เท่านั้น
  6. เฝ้าติดตามและตรวจสอบ สมัครรับหรือสอบถามการเปลี่ยนแปลงการกู้คืน เจ้าของ โมดูล เกณฑ์ implementation และผู้ดูแลจากแหล่งอิสระ หลังดำเนินการ ให้ถอดรหัสธุรกรรมและตรวจ receipt, event, storage และชุดเจ้าของสุดท้ายบนเชนที่ถูกต้อง การแจ้งว่าสำเร็จในอินเทอร์เฟซยังไม่เพียงพอ

ตัวอย่าง

สมมติว่าบัญชีมีเจ้าของ O และผู้พิทักษ์สามคน G1, G2 และ G3 ผู้พิทักษ์ใด ๆ 2-of-3 คนเสนอเจ้าของใหม่ N ได้ จากนั้นเริ่มระยะหน่วง 24-hour; O ยกเลิกได้ระหว่างนั้น และเมื่อครบกำหนดใครก็ปิดกระบวนการได้ โมดูลกู้คืนเรียกฟังก์ชันเปลี่ยนเจ้าของได้โดยไม่ต้องให้ O อนุมัติธุรกรรมสุดท้าย

ป้ายดูเหมือนเป็นการกู้คืนแบบกระจาย แต่ G1 กับ G2 เป็นแอปที่สำรองในบัญชีคลาวด์เดียวกัน เมื่อข้อมูลบัญชีนั้นรั่ว ผู้โจมตีคนเดียวได้เกณฑ์จริง 2-of-3 เขาเสนอ N; หากการเฝ้าติดตามหรือยกเลิกล้มเหลวภายใน 24 hours การปิดกระบวนการจะโอนสิทธิ์ แม้คีย์ส่วนตัวของ O ไม่เคยถูกขโมย

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

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

  • ผู้พิทักษ์ที่เชื่อมโยงกัน: ใช้อุปกรณ์ ข้อมูลรับรอง บุคคล หรือผู้รับฝากที่เป็นอิสระจริง ทดสอบขั้นตอนโดยไม่รวบรวม seed phrase ไว้ด้วยกัน
  • โมดูลหรือ executor มีอำนาจมากเกินไป: ตรวจโค้ดที่ติดตั้งและขอบเขตที่เรียกได้ ลบโมดูลที่ไม่ใช้ผ่านเส้นทางที่บันทึกไว้และยืนยันบนเชน
  • เกณฑ์อ่อนแอ: ประเมินทั้งการต้านการยึดและความพร้อมใช้ เกณฑ์สูงในนามไม่ช่วยเมื่อผู้ลงนามใช้โดเมนเดียวกัน และเกณฑ์ที่ไปไม่ถึงจะล็อกบัญชี
  • ไม่มีระยะหน่วงหรือข้ามได้: ตรวจระยะหน่วงบนเชน event ที่เริ่ม ใครลดเวลาได้ และทุกเส้นทางที่เปลี่ยนเจ้าของทันที
  • การยกเลิกใช้ไม่ได้: ซ้อมการตรวจพบและยกเลิก เก็บ gas ดั้งเดิมและเส้นทางส่งอิสระเมื่อจำเป็น และตรวจว่าต้องใช้เจ้าของเดิม องค์ประชุม หรือบทบาทอื่น
  • การยึดผ่านอัปเกรด: เฝ้าดู implementation, beacon และผู้ดูแล ผู้ดูแลที่อัปเกรดได้โดยไม่หน่วงถือว่าสามารถเปลี่ยนกฎกู้คืนทั้งหมด
  • อินเทอร์เฟซอันตรายหรือล้าสมัย: ตรวจเชน บัญชี โมดูล เจ้าของที่เสนอ เกณฑ์ ระยะหน่วง และ calldata อย่างอิสระ ห้ามเปิดเผย seed phrase หรือคีย์ส่วนตัวแก่บริการ “กู้คืน”
  • การเสร็จสิ้นปลอม: หลังยกเลิกหรือปิดกระบวนการ ให้ยืนยัน receipt และ storage สุดท้าย ตรวจว่าเจ้าของและโมดูลที่ต้องการทำงาน และข้อเสนอที่ไม่ต้องการเรียกไม่ได้

หากพบการกู้คืนที่ไม่ได้รับอนุญาต ให้หยุดลงนามคำขอที่ไม่เกี่ยวข้องและเก็บ ID ข้อเสนอ, hash ธุรกรรม, calldata, บล็อก, ที่อยู่โมดูล และสถานะปัจจุบัน จากอุปกรณ์ปลอดภัย ให้ตรวจคำเตือนผ่าน RPC อิสระ ใช้เส้นทางยกเลิกตามเอกสารถ้ายังใช้ได้ และเฝ้าดูการปิดกระบวนการ อัปเกรด เปลี่ยนโมดูล และโอนสินทรัพย์ หากอาจเสียการควบคุมแล้ว ให้ทำตามแผนเหตุการณ์ที่เขียนไว้และใช้เฉพาะผู้ติดต่อที่ยืนยันตัวตน การโอนแบบฉุกละหุกอาจถูก front-running หรือเปิดเผยปลายทาง

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

  • “มีเพียงเจ้าของที่ย้ายสินทรัพย์ได้” validator, executor, โมดูล, สัญญากู้คืน หรือโค้ดที่อัปเกรดอาจมีเส้นทางเพิ่มเติม
  • “ผู้พิทักษ์สามคนคือสามฝ่ายอิสระ” สัญญานับการอนุมัติที่ถูกต้องจากที่อยู่ แต่ตรวจไม่พบอุปกรณ์ ข้อมูลสำรอง หรือผู้ดูแลที่ใช้ร่วมกัน
  • “ระยะหน่วง 24-hour รับประกันเวลาตอบสนอง” ต้องมีการเฝ้าดู สิทธิ์ยกเลิกที่ใช้ได้ gas และการรวมธุรกรรม และเส้นทางสิทธิ์พิเศษอื่นอาจข้ามระยะหน่วง
  • “ลบผู้พิทักษ์แล้วสิทธิ์เข้าถึงจบลง” ยืนยันการตั้งค่าสุดท้ายบนเชน และตรวจบทบาท โมดูล session key และการกู้คืนค้างอยู่ที่เชื่อมโยงกับฝ่ายนั้น
  • “ฝ่ายสนับสนุนกู้คืนบัญชีอัจฉริยะใดก็ได้” เฉพาะสิทธิ์ที่เข้ารหัสหรือกำหนดไว้ล่วงหน้าบนเชนเท่านั้นที่เปลี่ยนบัญชีแบบดูแลเองได้ หากไม่มีเจ้าของหรือเส้นทางกู้คืนที่ถูกต้อง อาจเสียการเข้าถึงถาวร

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

แหล่งที่มา

การนำทาง

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