กลับไปที่บล็อก
ความปลอดภัย

บทเรียนจากเหตุแฮ็ก Bybit: UX การลงนามคือจุดอ่อนที่สุดของมัลติซิก

กุญแจผู้ลงนามมัลติซิกสามดอกอนุมัติธุรกรรมบนหน้าจอที่แสดงการโอนอันปลอดภัย ในขณะที่ payload ที่ลงนามจริงเบี่ยงเบนเงินไปตามเส้นทางที่ซ่อนอยู่

เมื่อวันที่ 21 กุมภาพันธ์ ETH และโทเคน staked-ETH มูลค่าราว 1.5 พันล้านดอลลาร์ไหลออกจากกระเป๋าเย็นแห่งหนึ่งของ Bybit ในธุรกรรมที่ได้รับอนุมัติเพียงรายการเดียว — นับเป็นการโจรกรรมคริปโตครั้งใหญ่ที่สุดเท่าที่เคยมีการบันทึกไว้ กระเป๋าใบนั้นเป็นมัลติซิก ผู้ลงนามที่จำเป็นทุกคนต่างลงนามครบถ้วน และเท่าที่การสอบสวนใด ๆ เปิดเผยออกมา ไม่มี private key ดอกใดถูกขโมยไปเลย หากคุณจะจดจำบทเรียนจากเหตุแฮ็ก Bybit ไว้เพียงข้อเดียว ขอให้เป็นข้อนี้: การเข้ารหัสยังคงมั่นคง แต่เงินก็ยังไหลออกไปอยู่ดี

นี่ไม่ใช่ข้อโต้แย้งที่ต่อต้านมัลติซิก เราเองก็สร้างกระเป๋ามัลติซิก และยังคงถือว่าการลงนามแบบ M-of-N คือวิธีถือครองเงินก้อนใหญ่ที่ตรวจสอบได้อย่างเป็นอิสระมากที่สุด แต่นี่คือข้อโต้แย้งเกี่ยวกับตำแหน่งที่พื้นผิวการโจมตีตัวจริงตั้งอยู่ มัลติซิกกระจายการเก็บรักษากุญแจ แต่ตัวมันเองไม่ได้กระจายการตรวจสอบไปด้วย ทุกลายเซ็นมีความน่าเชื่อถือเท่ากับความเข้าใจของผู้ลงนามที่มีต่อ payload ตรงหน้าเป๊ะ ๆ — และในวันที่ 21 กุมภาพันธ์ ความเข้าใจนั้นถูกผู้โจมตีปั้นแต่งขึ้นมา

สิ่งที่เรารู้ เมื่อผ่านไปสองสัปดาห์

ณ เวลาที่เขียนบทความนี้ ภาพที่ประกอบขึ้นจากคำแถลงของ Bybit การเปิดเผยหลังเหตุการณ์ของ Safe และการระบุตัวผู้กระทำผิดต่อสาธารณะของ FBI นั้นสอดคล้องต้องกัน ทีมของ Bybit ตั้งใจจะทำการโอนตามปกติจากมัลติซิกกระเป๋าเย็นบน Ethereum ไปยังกระเป๋าอุ่น (warm wallet) โดยใช้อินเทอร์เฟซเว็บ Safe{Wallet} ที่พวกเขาเคยใช้มาแล้วหลายครั้ง ผู้ลงนามแต่ละคนเห็นธุรกรรมที่ดูชอบธรรม: อินเทอร์เฟซที่คุ้นเคย ขั้นตอนที่คาดหมายได้ ไม่มีอะไรที่จะมาขัดจังหวะความเคยชินที่ทำจนเป็นอัตโนมัติ

แต่สิ่งที่องค์ประชุมผู้ลงนามอนุมัติจริง ๆ กลับเป็นอีกเรื่องหนึ่ง ธุรกรรมนั้นแอบเปลี่ยนตรรกะสมาร์ตคอนแทรกต์ของกระเป๋าเสียเอง โดยสลับไปใช้เวอร์ชันที่ผู้โจมตีควบคุมอยู่ เมื่อลายเซ็นของจริงลงบนเชนแล้ว vault ก็ทำงานตามตรรกะใหม่ของมัน และ ETH กับโทเคน staked-ETH ราว 400,000 เหรียญ — มูลค่าประมาณ 1.5 พันล้านดอลลาร์ในขณะนั้น — ก็ถูกโอนออกไป การสอบสวนของ Safe สืบสาวการเจาะระบบย้อนไปถึงเครื่องของนักพัฒนา โดยมีโค้ดที่เป็นอันตรายถูกส่งผ่านฟรอนต์เอนด์และเล็งไปที่ผู้ลงนามของ Bybit โดยเฉพาะ ส่วนอินเทอร์เฟซก็ทำงานเป็นปกติสำหรับคนอื่นทุกคน ปลายเดือนกุมภาพันธ์ FBI ระบุต่อสาธารณะว่าปฏิบัติการนี้เป็นฝีมือของกลุ่ม Lazarus Group แห่งเกาหลีเหนือ ซึ่งถูกติดตามภายใต้ชื่อ TraderTraitor

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

กุญแจยังคงมั่นคง — และนั่นคือประเด็นสำคัญที่สุด

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

ลายเซ็นคือความเห็นที่มีต่อ payload หนึ่ง ๆ หาก payload ที่คุณตรวจสอบไม่ใช่ payload ที่คุณลงนาม จำนวนผู้ลงนามก็ไม่มีความหมายใด ๆ ทั้งสิ้น

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

blind signing ในความหมายที่แม่นยำ

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

ธุรกรรมของ Bybit ฉวยใช้ช่องว่างนี้ตรง ๆ ฟิลด์เพียงฟิลด์เดียวที่อินเทอร์เฟซส่วนใหญ่ไม่ได้แสดงให้เห็นเด่นชัด — ประเภทของการดำเนินการ (operation type) — เปลี่ยนสิ่งที่ดูเหมือนการโอนธรรมดาให้กลายเป็น delegatecall ที่เดินสายตรรกะของกระเป๋าใหม่ทั้งหมด อุปกรณ์ลงนามแบบฮาร์ดแวร์ก็ไม่ได้ปิดช่องว่างนี้โดยอัตโนมัติเช่นกัน: อุปกรณ์ที่แสดงเพียงค่าแฮชที่อ่านไม่ออก เท่ากับกำลังขอให้มนุษย์ตรวจสอบสิ่งที่ไม่มีมนุษย์คนใดตีความได้ นั่นคือละครการตรวจสอบ และอาจกล่าวได้ว่าเลวร้ายยิ่งกว่าการไม่ทำอะไรเลย เพราะมันปั้นความมั่นใจขึ้นมาโดยไม่ได้เพิ่มการตรวจสอบใด ๆ

สองเส้นทางจากผู้ลงนามชุดเดียวกัน: หน้าจอแสดงการโอนที่ตรวจสอบแล้วไปยัง vault ในขณะที่ payload ที่ลงนามจริงเป็น delegatecall ที่มอบกระเป๋าให้แก่ผู้โจมตี
สิ่งที่ผู้ลงนามเห็นกับสิ่งที่องค์ประชุมลงนาม แยกทางกันที่ชั้นอินเทอร์เฟซ

ฟรอนต์เอนด์เดียว องค์ประชุมเดียว ความล้มเหลวเดียว

ผู้ลงนามของ Bybit ถือกุญแจอิสระ อยู่บนอุปกรณ์แยกกัน แต่พวกเขาทั้งหมดตรวจสอบธุรกรรมผ่านฟรอนต์เอนด์เว็บตัวเดียวกัน ดังนั้นอินเทอร์เฟซที่ถูกเจาะเพียงตัวเดียวจึงเข้าถึงองค์ประชุมทั้งหมดได้ในคราวเดียว ความเป็นอิสระของผู้ลงนามต้องอาศัยช่องทางการตรวจสอบที่เป็นอิสระ ไม่ใช่เพียงกุญแจที่เป็นอิสระเท่านั้น กระเป๋าแบบ 3-of-3 ที่ผู้ลงนามทุกคนไว้ใจหน้าจอเดียวกัน ในทางปฏิบัติแล้วก็ยุบตัวลงเหลือเป็น 1-of-1 — และ “1” ตัวนั้นก็คือใครก็ตามที่ควบคุมอินเทอร์เฟซ

บทเรียนนี้ไม่ขึ้นกับรูปแบบเฉพาะใด ๆ กระเป๋า MPC แทนที่สัญญาบนเชนด้วยชิ้นส่วนกุญแจแบบกระจาย — เราเปรียบเทียบข้อได้เปรียบเสียเปรียบไว้ใน MPC กับ MultiSig: เปรียบเทียบกันอย่างตรงไปตรงมา — แต่องค์ประชุม MPC ก็ไปสิ้นสุดที่จุดเดียวกันเป๊ะ: มนุษย์อนุมัติ payload ที่อินเทอร์เฟซบางตัวเรนเดอร์มาให้ และมันยังบอกอะไรบางอย่างเกี่ยวกับลำดับความสำคัญของวงการนี้ ที่พลังงานจำนวนมากถูกทุ่มไปกับภัยคุกคามอันไกลโพ้นและแปลกใหม่ — เมื่อเดือนธันวาคมเราได้พิจารณาว่า ควอนตัมคอมพิวเตอร์ยังห่างจากกุญแจของ Bitcoin อีกไกลแค่ไหน — ในขณะที่การโจรกรรมครั้งใหญ่ที่สุดในประวัติศาสตร์ของวงการกลับไม่ต้องใช้การเข้ารหัสใหม่ใด ๆ เลย มันต้องการเพียง JavaScript

บทเรียนจากเหตุแฮ็ก Bybit ที่นำไปใช้ได้จริง

ไม่มีข้อใดต่อไปนี้ที่ต้องใช้การเข้ารหัสใหม่หรือฮาร์ดแวร์ใหม่เลย ทั้งหมดคือวินัยในการปฏิบัติงาน — ซึ่งนี่เองคือเหตุผลที่มันมักถูกมองข้าม

  1. ถือว่าหน้าจอลงนามทุกจอไม่น่าเชื่อถือ อินเทอร์เฟซที่สร้างธุรกรรมของคุณจะกลายเป็นเป้าหมายทันทีที่ยอดเงินของคุณคุ้มค่าแก่ความพยายาม จงสมมติว่ามันสามารถโกหกคุณได้ในวันที่สำคัญที่สุดพอดี
  2. ตรวจสอบบนพื้นผิวที่สอง ซึ่งเป็นอิสระ ถอดรหัสธุรกรรมดิบ — ปลายทาง มูลค่า calldata ประเภทของการดำเนินการ — บนอุปกรณ์ที่ไม่มีอะไรร่วมกับเครื่องที่สร้างมันขึ้นมาเลย การทำให้สองหน้าจอโกหกเหมือนกันเป๊ะ เป็นการโจมตีที่ยากกว่าการให้หน้าจอเดียวโกหกตามลำพังมาก
  3. ปฏิเสธ payload ที่อ่านไม่ออก หากผู้ลงนามไม่สามารถเห็นทีละพารามิเตอร์ว่าธุรกรรมทำอะไร จำนวนลายเซ็นที่ถูกต้องสำหรับธุรกรรมนั้นคือศูนย์ “มันคงเป็นการโอนตามปกติแหละ” คือวิธีที่เงิน 1.5 พันล้านดอลลาร์ถูกโอนออกไป
  4. จำกัดรัศมีการระเบิด ไวต์ลิสต์ที่อยู่ วงเงินรายวันและรายเดือน และการแยกบทบาท เปลี่ยนการอนุมัติที่ผิดพลาดครั้งเดียวให้กลายเป็นความสูญเสียที่มีเพดานจำกัด แทนที่จะสูญเสียทั้งหมด ความสูญเสียของ Bybit นั้นหมดทั้ง vault เพราะไม่มีอะไรจำกัดสิ่งที่ธุรกรรมที่ได้รับอนุมัติเพียงรายการเดียวจะทำได้
  5. ชะลอกิจวัตรให้ช้าลง การโจมตีถูกแต่งตัวให้ดูเป็นการดำเนินการที่ธรรมดาที่สุดที่ทีมทำอยู่ เพราะการดำเนินการที่ธรรมดาได้รับการตรวจสอบน้อยที่สุด กิจวัตรไม่ใช่เหตุผลให้ผ่อนคลาย มันคือเครื่องแต่งกายที่ผู้โจมตีจะเลือกสวมใส่

เรื่องนี้หล่อหลอมการลงนามที่ Ownbit อย่างไร

ในบรรดาบทเรียนจากเหตุแฮ็ก Bybit ข้างต้น ข้อที่คงทนที่สุดคือข้อเชิงโครงสร้าง: การตรวจสอบขั้นสุดท้ายต้องอยู่ในที่ที่เครื่องซึ่งถูกเจาะเข้าไม่ถึง เวิร์กโฟลว์กระเป๋าเย็นของ Ownbit ถูกสร้างขึ้นรอบแนวคิดนี้ โทรศัพท์เครื่องสำรองกลายเป็นผู้ลงนามแบบแยกช่องอากาศ (air-gapped) ส่วนโทรศัพท์ที่ออนไลน์รัน Watch Wallet ที่ไม่ถือกุญแจใด ๆ ทำหน้าที่สร้างธุรกรรมที่ยังไม่ได้ลงนาม แล้วส่งต่อไปในรูปของ QR code โทรศัพท์ที่ออฟไลน์จะแสดงสิ่งที่มันถูกขอให้ลงนามจริง ๆ ก่อนที่จะมีลายเซ็นใดเกิดขึ้น จากนั้นจึงส่งลายเซ็นกลับมาด้วยวิธีเดียวกัน การกระโดดผ่าน QR ถูกทำให้แคบโดยเจตนา: ทุกธุรกรรมถูกบังคับให้ผ่านพื้นผิวที่สองซึ่งเป็นอิสระ และอุปกรณ์ที่ถือกุญแจไม่เคยโหลดหน้าเว็บที่อาจถูกวางยาไว้เลย

watch wallet ที่ออนไลน์สร้างธุรกรรมที่ยังไม่ได้ลงนาม แล้วส่งผ่าน QR code ข้ามช่องอากาศไปยังโทรศัพท์ที่ออฟไลน์ ซึ่งตรวจสอบแล้วส่งกลับมาเพียงลายเซ็นด้วย QR
มีเพียง QR code เท่านั้นที่ข้ามช่องอากาศ: ธุรกรรมที่ยังไม่ได้ลงนามเข้าไป ลายเซ็นออกมา

สำหรับทีมต่าง ๆ มัลติซิกสำหรับองค์กรนำบทเรียนเรื่องรัศมีการระเบิดมาใช้โดยตรง: ไวต์ลิสต์ที่อยู่เพื่อให้เงินไม่สามารถไปถึงปลายทางที่ไม่อยู่ในรายชื่อได้ ไม่ว่าใครจะเป็นผู้ลงนาม วงเงินการใช้จ่ายรายวันและรายเดือน บทบาท Owner, Signer และ Security Admin และปุ่มหยุดฉุกเฉิน การควบคุมเหล่านี้ไม่ได้ทำให้การหลอกลวงเป็นไปไม่ได้ — ไม่มีอะไรทำได้อย่างสมบูรณ์ — แต่มันจำกัดเพดานว่าการอนุมัติที่ถูกบิดเบือนหนึ่งครั้งจะทำให้เสียหายได้แค่ไหน

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

คำถามที่พบบ่อย

เหตุแฮ็ก Bybit เป็นความล้มเหลวของมัลติซิกหรือไม่?

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

blind signing ในคริปโตคืออะไร?

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

เหตุแฮ็ก Bybit ถูกขโมยไปเท่าไร?

ETH และโทเคน staked-ETH มูลค่าราว 1.5 พันล้านดอลลาร์ — ประมาณ 400,000 ETH — ทำให้เป็นการโจรกรรมคริปโตเคอเรนซีครั้งใหญ่ที่สุดเท่าที่มีการบันทึกไว้ ณ ต้นเดือนมีนาคม 2025 FBI ระบุว่าการโจมตีนี้เป็นฝีมือของกลุ่ม Lazarus Group แห่งเกาหลีเหนือ Bybit ยังคงมีความสามารถในการชำระหนี้และยังประมวลผลการถอนของลูกค้าต่อเนื่อง

ผู้ลงนามมัลติซิกจะป้องกันฟรอนต์เอนด์ที่ถูกเจาะได้อย่างไร?

ตรวจสอบทุกธุรกรรมบนอุปกรณ์ที่สองซึ่งไม่มีอะไรร่วมกับเครื่องที่สร้างมันขึ้นมา และปฏิเสธที่จะลงนาม payload ที่คุณถอดรหัสทีละพารามิเตอร์ไม่ได้ จากนั้นเพิ่มขีดจำกัดเชิงโครงสร้าง — ไวต์ลิสต์ที่อยู่ เพดานการใช้จ่าย การแยกบทบาท — เพื่อไม่ให้การอนุมัติที่ถูกหลอกเพียงครั้งเดียวสามารถดูดเงินออกจากกระเป๋าทั้งใบได้

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