การเตือนเกี่ยวกับโค้ดที่อันตรายจาก Charles Hoskinson
Charles Hoskinson ผู้ก่อตั้ง Cardano ได้ออกมาเตือนเกี่ยวกับ “โค้ดที่อันตรายอย่างจริงจัง” ขณะที่เขาแชร์การวิเคราะห์ที่ตำหนิฟีเจอร์การมอบหมาย EIP-7702 ของ Ethereum ว่าช่วยให้ผู้โจมตีสามารถทำให้กระเป๋าเงินร้อนของ Binance ว่างเปล่าได้อย่างรวดเร็ว
“ระวังไว้ มีโค้ดที่อันตรายอย่างจริงจังอยู่ที่นั่น”
ในโพสต์ของเขาบน X, Hoskinson เขียนถึงการวิเคราะห์ที่เผยแพร่โดย CyberSatoshi ซึ่งอธิบายถึง bytecode ที่ถูกสร้างขึ้นใหม่สำหรับ Binance EIP-7702 sweeper ที่ถูกกล่าวหา โดยอ้างว่าข้อตกลงนี้ถูกปรับให้เข้ากับการดำเนินงานของการแลกเปลี่ยน
ข้อกังวลด้านความปลอดภัย
Hoskinson ไม่ได้ระบุข้อบกพร่องเฉพาะในโปรโตคอลหรืออธิบายว่าข้อใดในวิเคราะห์ที่เขาเห็นด้วย บัญชีของ CyberSatoshi วางคำถามด้านความปลอดภัยสองข้อเคียงข้างกัน หนึ่งเกี่ยวกับวิธีที่ผู้โจมตีได้รับอนุญาตให้ทำงานสำหรับกระเป๋าเงิน อีกข้อหนึ่งเกี่ยวกับสิ่งที่ฟีเจอร์การมอบหมายของ Ethereum อนุญาตให้ผู้โจมตีทำหลังจากได้รับอนุญาตนั้น
ตามการวิเคราะห์ของ CyberSatoshi ข้อตกลงที่ถูกสร้างขึ้นใหม่ทิ้ง ETH ไว้ 1 หน่วยในกระเป๋าเงินเมื่อทำการเก็บยอดคงเหลือของมัน ผู้โพสต์อ้างว่านี่ป้องกันไม่ให้คิวกระเป๋าเงินร้อนอัตโนมัติของ Binance ล้มเหลวเนื่องจากแก๊สไม่เพียงพอและทำให้เกิดการเตือน
การวิเคราะห์ของ CyberSatoshi
การวิเคราะห์ได้อธิบายถึงลูปการประมวลผลโทเคนที่ตรวจสอบยอดคงเหลือผ่านการเรียกที่ระดับต่ำและดำเนินต่อไปเมื่อการดำเนินการแต่ละครั้งล้มเหลว CyberSatoshi กล่าวว่า สิ่งนี้ทำให้ sweeper สามารถประมวลผลสินทรัพย์ต่อไปได้แม้ว่าจะไม่สามารถโอนโทเคนที่ถูกขึ้นบัญชีดำหรือไม่ตอบสนองได้
ฟังก์ชันการดำเนินการที่กำหนดเองถูกกล่าวหาว่าอนุญาตให้กระเป๋าเงินที่ถูกบุกรุกเรียกใช้คลังภายนอกที่ถือเงิน 823 ล้านดอลลาร์ ใน USDC ในคำอธิบายของผู้โพสต์ คลังนี้รับรู้ Binance 14 ว่าเป็นผู้ควบคุมของมัน ทำให้การเรียกที่ทำผ่านกระเป๋าเงินนั้นสามารถเข้าถึงเงินทุนที่อยู่นอกยอดคงเหลือทันทีของมัน
การมอบหมายและความเสี่ยง
CyberSatoshi ได้จัดประเภทข้อตกลงนี้ว่าเป็นการสร้างขึ้นโดยเฉพาะสำหรับสถาปัตยกรรมของ Binance ข้อเรียกร้องเกี่ยวกับผลกระทบของมันต่อการแจ้งเตือนภายในและระบบการคลังยังคงเป็นคำอธิบายของผู้โพสต์เกี่ยวกับวิธีการทำงานของการดำเนินการ
สเปคของ EIP-7702 ของ Ethereum อธิบายประเภทการทำธุรกรรมที่อนุญาตให้บัญชีที่เป็นเจ้าของภายนอกมอบหมายการดำเนินการให้กับโค้ดที่ถูกติดตั้งที่ที่อยู่อื่น บัญชีที่เป็นเจ้าของภายนอกมักทำงานผ่านลายเซ็นจากกุญแจส่วนตัวของมัน การมอบหมายช่วยให้มันสามารถดำเนินการตรรกะของสัญญาอัจฉริยะในบริบทของบัญชีของมันเอง
สนับสนุนฟีเจอร์เช่นการรวมหลายการดำเนินการเป็นธุรกรรมเดียวและอนุญาตให้บัญชีอื่นจ่ายค่าธรรมเนียมการทำธุรกรรม การอนุญาตแต่ละครั้งจะระบุโซ่ ที่อยู่ของผู้มอบหมาย และ nonce พร้อมกับลายเซ็นทางคณิตศาสตร์
ข้อกำหนดและการโจมตี
โปรโตคอลจะกู้คืนบัญชีที่อนุญาตจากลายเซ็นนั้นและตรวจสอบ nonce ของมันก่อนที่จะใช้การมอบหมาย CyberSatoshi ยอมรับความต้องการนี้ โดยกล่าวว่าการโจมตีที่ถูกกล่าวหาต้องการกุญแจส่วนตัวดิบหรือการเข้าถึงการลงนามที่ไม่มีข้อจำกัดต่อโครงสร้างพื้นฐานด้านความปลอดภัยของ Binance 14
สเปคไม่ได้กำหนดว่าข้อมูลรับรองการลงนามของ Binance ได้รับมาอย่างไร ข้อกำหนดลายเซ็นของมันกำหนดว่าการมอบหมายไม่สามารถถูกกำหนดให้กับบัญชีเหยื่อโดยไม่มีการอนุญาตที่ถูกต้อง
CyberSatoshi อ้างว่าผู้โจมตีได้ส่งการอนุญาตที่ลงนามล่วงหน้า 50 รายการที่ครอบคลุม nonce ที่ต่อเนื่องเพื่อจับ Binance 14 ขณะที่จำนวนธุรกรรมของมันกำลังเปลี่ยนแปลง
การประมวลผลการอนุญาต
สเปคจะประมวลผลการอนุญาตตามลำดับ เมื่อการอนุญาตล้มเหลวในการตรวจสอบ การประมวลผลจะดำเนินต่อไปด้วยรายการถัดไป รายการที่ถูกต้องจะตั้งค่าการมอบหมายและเพิ่ม nonce ของบัญชีที่อนุญาต
การอนุญาตที่ต่อเนื่องสำหรับบัญชีเดียวกันจึงสามารถกลายเป็นถูกต้องได้เมื่อ nonce นั้นเพิ่มขึ้น เมื่อมีหลายรายการที่ถูกต้องอยู่ การมอบหมายที่ถูกต้องล่าสุดจะกำหนดที่อยู่โค้ดที่ใช้
นี่มีความเฉพาะเจาะจงมากกว่าการรวมกลุ่มที่มีเพียงการอนุญาตเดียวที่สามารถมีผลบังคับใช้ กฎอนุญาตให้มีการเข้าร่วมหลายรายการที่ต่อเนื่องกันประสบความสำเร็จ ขึ้นอยู่กับ nonce เริ่มต้นของบัญชีและลายเซ็นที่จัดเตรียมไว้
ข้อสรุป
CyberSatoshi อ้างว่าการมอบหมายได้บีบการโอนสินทรัพย์ให้เป็นการดำเนินการเดียว ลดเวลาที่มีให้สำหรับการแทรกแซง ข้อเรียกร้องแยกต่างหากที่การป้องกันการแลกเปลี่ยนจะหยุดการโจรกรรมหลังจากสามธุรกรรมเป็นการประเมินทางเลือกของผู้โพสต์
ผู้เขียน EIP เตือนอย่างชัดเจนว่าโค้ดที่ได้รับอนุญาตมีการเข้าถึงบัญชีอย่างไม่มีข้อจำกัดและต้องได้รับการตรวจสอบอย่างใกล้ชิดโดยกระเป๋าเงิน ส่วนความปลอดภัยของมันมีการระบุการป้องกันที่สัญญามอบหมายต้องการ รวมถึงการป้องกันการเล่นซ้ำและลายเซ็นที่ครอบคลุมมูลค่าการทำธุรกรรม แก๊ส จุดหมายปลายทาง และข้อมูลการเรียก
การมอบหมายที่ดำเนินการไม่ดีสามารถทำให้ผู้โจมตีมีการควบคุมเกือบทั้งหมดเหนือบัญชีที่ลงนาม การมอบหมายยังคงอยู่หลังจากธุรกรรมที่ติดตั้งมัน สเปคยังระบุว่าความล้มเหลวในการดำเนินการจะไม่ย้อนกลับตัวบ่งชี้การมอบหมายที่ได้ถูกประมวลผลแล้ว
เพื่อที่จะลบการมอบหมาย โปรโตคอลอนุญาตให้มีการอนุญาตที่ถูกต้องชี้ไปที่ที่อยู่ศูนย์ ซึ่งจะล้างโค้ดการมอบหมายของบัญชีออก