Liquid Network 的 4,000 BTC 是如何凭空走出金库的?
- ประเด็นหลัก:ในเดือนกันยายน 2026 Liquid Network ถูกโจมตีโดยใช้ช่องโหว่จากข้อบกพร่องด้านแคชของซอฟต์แวร์โหนด ผู้โจมตีไม่จำเป็นต้องขโมยกุญแจส่วนตัวหรือเจาะระบบ multi-sig เพียงใช้ proof of range ที่ปลอมแปลงขึ้นก็สามารถสร้าง 4,000 L-BTC ขึ้นมาจากอากาศได้ภายใต้กระบวนการที่ถูกต้องตามกฎเกณฑ์ และถอน BTC จริงออกไปได้ประมาณ 320 ล้านดอลลาร์สหรัฐ เผยให้เห็นความเสี่ยงเชิงระบบของ "สินทรัพย์ห่อ" (wrapped assets) ทั้งในระดับการใช้งานซอฟต์แวร์และระดับปฏิบัติการ
- องค์ประกอบสำคัญ:
- ผู้โจมตีไม่ได้เจาะกุญแจส่วนตัวหรือ HSM ใด ๆ แต่ใช้ประโยชน์จากข้อบกพร่องของแคช proof of range ในโหนด Elements ที่ไม่ได้ผูกสินทรัพย์เข้ากับ output script โดยได้ฉีด proof 68 รายการที่เหมือนกันขึ้นบนเชนล่วงหน้า 14 ชั่วโมงเพื่อ "ป้อน" แคช และสุดท้ายก็ทำการถอนด้วยลายเซ็น multi-sig 11/15 ที่ถูกต้องตามกฎเกณฑ์
- แพตช์แก้ช่องโหว่ถูกส่งในวันที่ 3 สิงหาคม และรวมเข้าสาขาหลักในวันที่ 2 กันยายน แต่โหนดของสหพันธ์ยังคงรันเวอร์ชันเก่าที่เปิดตัวเมื่อวันที่ 13 เมษายน แพตช์ล่าช้าในสภาพแวดล้อมการผลิตถึงห้าเดือน และโค้ดเบสของโหนดสหพันธ์มีการ commit ครั้งสุดท้ายเมื่อเดือนเมษายน 2024 ซึ่งห่างจากเหตุการณ์กว่า 2 ปี
- เหตุการณ์นี้เผยให้เห็นการขาดความสามารถในการตรวจสอบเงินสำรอง:ธุรกรรมที่เป็นความลับซ่อนจำนวนเงิน ทำให้ภายนอกไม่สามารถเปรียบเทียบปริมาณ L-BTC ที่หมุนเวียนกับยอด BTC จริงในกระเป๋าสหพันธ์ได้แบบเรียลไทม์ ขณะที่บนเชนมี L-BTC หมุนเวียน 4,205 เหรียญ แต่เหลือ BTC จริงเพียง 197 เหรียญ อัตรารองรับต่ำกว่า 5%
- ผู้โจมตีอ้างว่าตนเป็นไวท์แฮต คืน BTC 3,400 เหรียญ (85%) เก็บไว้เอง 598.5 เหรียญ (ประมาณ 15%) และเรียกร้องค่าหัวช่องโหว่เพิ่มอีก 10% Blockstream ปฏิเสธการจ่ายค่าไถ่อย่างเปิดเผย และระบุชัดเจนว่านี่คือ "การโจรกรรม" ไม่ใช่การกระทำของไวท์แฮต
- หลังเหตุการณ์ อัตรารองรับ L-BTC ฟื้นตัวกลับมาที่ประมาณ 86% Blockstream สัญญาว่าจะค้ำประกันการตรึง 1:1 และจะไม่ให้ผู้ถือเหรียญต้องตัดมูลค่า ส่วน BTC 598.5 เหรียญที่เหลืออยู่ในขั้นตอนการสืบสวนบนเชนและการบังคับใช้กฎหมาย
- บทเรียนสำคัญ:ความปลอดภัยของสินทรัพย์ห่อขึ้นอยู่กับจุดที่อ่อนแอที่สุดในสามชั้น ได้แก่ เครดิตของผู้ออก ซอฟต์แวร์โหนด และช่องทางเข้า-ออกเงิน;multi-sig ป้องกันคนชั่ว ไม่ได้ป้องกันโค้ดชั่ว;"ไวท์แฮต" ควรยึดมาตรฐานการเปิดเผยก่อนแล้วจึงร่วมมือ
เมื่อวันที่ 6 กันยายน บิตคอยน์ประมาณ 4,000 BTC (คิดเป็นมูลค่าราว 320 ล้านดอลลาร์ ณ ราคาขณะนั้น) ได้ย้ายออกจากกระเป๋าเงินของ Liquid Network นี่คือเหตุการณ์โจรกรรมสินทรัพย์คริปโตที่มีมูลค่าสูงที่สุดในปี 2026 จนถึงปัจจุบัน
แต่สิ่งที่ชวนให้ขบคิดที่สุดในคดีนี้ไม่ใช่จำนวนเงิน
ไม่มีกุญแจส่วนตัวใดถูกขโมย ไม่มี HSM (ฮาร์ดแวร์โมดูลความปลอดภัย) เครื่องใดถูกเจาะ ไม่มีใครถูกฟิชชิ่ง และไม่มีคนใน สถาบันทั้ง 15 แห่งที่ดูแลคลังนี้ กุญแจของแต่ละแห่งยังคงอยู่ในตู้เซฟของตนเองอย่างสมบูรณ์ และทุกครั้งที่ลงนาม พวกเขาทำด้วยความสมัครใจ ตามกฎเกณฑ์ที่กำหนด
แต่เงินก็ยังไหลออกไป
เพื่อเข้าใจว่าสิ่งนี้เกิดขึ้นได้อย่างไร เราต้องใช้เวลาสักครู่ทำความเข้าใจก่อนว่าคลังนี้ถูกออกแบบมาอย่างไร
1. คลังบิตคอยน์ที่บริหารร่วมกันโดยสถาบัน 15 แห่ง
เครือข่ายหลักของบิตคอยน์มีปัญหาที่ทุกคนรู้ดี คือ ช้าและแพง ธุรกรรมหนึ่งรายการต้องรอเฉลี่ยสิบนาทีจึงจะเข้าสู่บล็อก และค่าธรรมเนียมยังผันผวนตามความยากของการขุด สำหรับตลาดแลกเปลี่ยนหรือทีมเทรดเชิงปริมาณที่ต้องการโอนเงินจำนวนมากและบ่อยครั้ง นี่ไม่เพียงพอ
Liquid Network คือทางออกหนึ่งที่ Blockstream นำเสนอ มันคือ "เชนข้าง" (sidechain) — คุณสามารถคิดว่ามันเป็นเลนด่วนที่อยู่ข้างเครือข่ายหลักของบิตคอยน์
วิธีการใช้งานนั้นเรียบง่าย คุณฝากบิตคอยน์จริงเข้าไปในคลังที่มีการบริหารร่วมกัน คลังจะออกใบรับฝากที่มีมูลค่าเท่ากันให้คุณ ใบรับฝากนี้เรียกว่า L-BTC ซึ่งสามารถหมุนเวียนบนเลนด่วนนี้ได้อย่างรวดเร็วในอัตราหนึ่งรายการต่อนาที เมื่อต้องการรับบิตคอยน์จริงคืน คุณนำใบรับฝากไปยกเลิก คลังจะนำเหรียญจริงที่มีมูลค่าเท่ากันคืนให้ การกระทำแรกเรียกว่า peg-in (การยึดเข้า) ส่วนหลังเรียกว่า peg-out (การยึดออก) ในทางทฤษฎี ปริมาณ L-BTC ที่หมุนเวียนบนเชนทั้งหมดจะเท่ากับจำนวนบิตคอยน์จริงที่อยู่ในคลังเสมอ — นี่คือสิ่งที่เรียกว่าการยึดติดแบบ 1:1
ประเด็นสำคัญอยู่ที่ว่าใครดูแลคลังนี้ คำตอบของ Liquid คือ ไม่มอบให้ใครคนใดคนหนึ่ง แต่ให้ "สหพันธ์" ที่ประกอบด้วยสถาบันที่รู้จัก 15 แห่ง ซึ่งรวมถึงตลาดแลกเปลี่ยนหลายแห่งและผู้ให้บริการโครงสร้างพื้นฐาน โหนดทั้ง 15 แห่งนี้ต่างถือกุญแจหนึ่งดอก เก็บไว้ในฮาร์ดแวร์โมดูลความปลอดภัย (HSM) เฉพาะของตนเอง การเปิดคลังแต่ละครั้งต้องมีกุญแจอย่างน้อย 11 ดอกจาก 15 ดอกลงนามพร้อมกัน นั่นคือการลงนามหลายฝ่ายแบบ 11/15
ในขณะเดียวกัน โหนดทั้ง 15 แห่งนี้ยังรับผิดชอบผลิตบล็อกสลับกันและตรวจสอบซึ่งกันและกัน กล่าวอีกนัยหนึ่ง พวกเขาทั้งเป็นผู้ดูแลคลัง และเป็นผู้บันทึกบัญชีของเชนนี้

เจตนาของการออกแบบนี้ชัดเจน การกระทำชั่วโดยจุดเดียวเป็นไปไม่ได้ คุณต้องโน้มน้าวสถาบันที่ไม่เกี่ยวข้องกัน 11 แห่งพร้อมกันจึงจะขโมยเงินได้ จากมุมมอง "การป้องกันคนชั่ว" มันทำได้ดีทีเดียว
2. บัญชีลับและ "การตรวจแบงก์โดยไม่เปิดซอง"
Liquid ยังมีคุณสมบัติพิเศษอีกอย่าง จำนวนเงินในธุรกรรมของมันเป็นความลับต่อสาธารณะ
บนเครือข่ายหลักของบิตคอยน์ ใครก็สามารถเห็นจำนวนเงินที่โอนในแต่ละธุรกรรมได้ สำหรับสถาบันแล้วนี่เป็นเรื่องที่อึดอัด — การปรับพอร์ตขนาดใหญ่ของคุณจะถูกคนทั้งโลกจับตาดู Liquid แก้ปัญหานี้ด้วยเทคโนโลยีที่เรียกว่า "ธุรกรรมลับ" (Confidential Transactions) โดยจำนวนเงินถูกเข้ารหัสซ่อนไว้ บนเชนเหลือเพียงคำมั่นทางคณิตศาสตร์เท่านั้น คนภายนอกไม่เห็นตัวเลขที่แท้จริง
แต่สิ่งนี้กลับนำมาซึ่งปัญหาใหม่ในทันที หากจำนวนเงินมองไม่เห็น โหนดจะรู้ได้อย่างไรว่าธุรกรรมนี้ไม่ได้โกง ตัวอย่างเช่น การเขียนจำนวนติดลบขึ้นมาจากอากาศ หรือการดันตัวเลขจนล้น
วิธีแก้เรียกว่า "การพิสูจน์ช่วง" (range proof) ยกตัวอย่างเช่น นำจำนวนเงินใส่ในซองทึบแสง พร้อมแนบหลักฐานทางคณิตศาสตร์ที่ทำให้ใครก็ตามมั่นใจได้โดยไม่ต้องเปิดซองว่าตัวเลขข้างในอยู่ในช่วงที่ถูกต้อง โหนดตรวจสอบหลักฐานเหล่านี้ทีละรายการ ยืนยันว่ารายรับรายจ่ายของแต่ละธุรกรรมลงตัว แต่ไม่เคยรู้ว่าจำนวนเงินที่แท้จริงคือเท่าไร
กลไกนี้เป็นวิทยาการเข้ารหัสลับที่เชื่อถือได้ ปัญหาอยู่ที่การปรับประสิทธิภาพของมัน
3. ช่องโหว่: เครื่องตรวจแบงก์ที่จำเก่งเกินไป แต่จำผิดจุด
การตรวจสอบ range proof ใช้พลังการคำนวณสูงมาก เพื่อไม่ให้โหนดถูกถ่วง Elements (ซอฟต์แวร์โหนดโอเพนซอร์สที่ Liquid ใช้ ซึ่งเป็นสาขาหนึ่งของโค้ดบิตคอยน์หลัก) จึงทำสิ่งที่วิศวกรทุกคนทำ นั่นคือ เพิ่มแคช
หลักฐานที่ตรวจแล้วครั้งหนึ่ง บันทึกผลลัพธ์ไว้ ครั้งต่อไปเจออันเดียวกันก็ปล่อยผ่านทันที ไม่คำนวณใหม่
ทีนี้ปัญหาก็มาถึง จะตัดสินได้อย่างไรว่า "ที่เจอคืออันเดียวกัน"
วิธีของ Elements คือใช้สองสิ่งประกอบกันเป็นคีย์ดัชนี ได้แก่ ไบต์ของหลักฐานเอง บวกกับคำมั่นจำนวนเงินที่ถูกเข้ารหัส
พลาดอะไรไป พลาดว่าสินทรัพย์นี้เป็นประเภทใด และเงินนี้จะจ่ายให้ใคร (สคริปต์เอาต์พุต)
เปรียบเทียบกับเคาน์เตอร์เก็บเงิน บนเคาน์เตอร์มีเครื่องตรวจแบงก์อยู่เครื่องหนึ่ง ธนบัตรที่มันตรวจแล้วจะถูกบันทึกหมายเลข ครั้งต่อไปหมายเลขเดิมก็ผ่านทันที แต่ตอนบันทึกหมายเลข มันบันทึกแค่ลายน้ำและมูลค่าของธนบัตร ไม่ได้บันทึกว่าธนบัตรนี้เป็นสกุลเงินของประเทศใด และไม่ได้บันทึกว่าจะมอบให้ผู้รับเงินคนใด ดังนั้นข้อสรุป "ตรวจแล้วผ่าน" อันเดียวกันนี้จึงอาจถูกย้ายไปใช้ในบริบทที่ไม่ควรใช้เลย

ผู้โจมตีทำเช่นนี้จริง และอดทนมาก จาการทบทวนของนักวิจัย ในช่วงประมาณ 14 ชั่วโมงก่อนลงมือ เขาส่ง range proof ที่เหมือนกันทุกประการ 68 รายการขึ้นสู่เชนทีละรายการ — ป้อนข้อสรุป "ตรวจแล้ว" เหล่านี้เข้าแคชของแต่ละโหนดครั้งแล้วครั้งเล่า เมื่อถึงเวลาที่เหมาะสม เขาจึงนำหลักฐานเดียวกันนั้นไปยื่นในบริบทที่ควรถูกปฏิเสธ
โหนดค้นแคชแล้วพบว่า "อันนี้เราเคยตรวจแล้ว ไม่มีปัญหา" จึงปล่อยผ่าน
ผลก็คือ L-BTC จำนวน 3,996 เหรียญที่ไม่มีบิตคอยน์จริงค้ำประกันเลย ถูกบันทึกเข้าสู่บัญชีขึ้นมาจากอากาศ
เนื่องจากจำนวนเงินถูกซ่อนไว้ด้วยธุรกรรมลับอยู่แล้ว จึงไม่มีผู้สังเกตการณ์คนใดบนเชนมองเห็นเงินที่เพิ่มขึ้นมานี้ได้
4. 35 นาทีนั้น: ทุกขั้นตอนถูกต้องตามกฎ
เวลาปักกิ่ง วันที่ 6 กันยายน 23:53 น. (15:53:10 UTC) บล็อกที่ 4,050,336 ของ Liquid บรรจุธุรกรรมปลอมนี้
ทุกขั้นตอนที่เกิดขึ้นต่อจากนี้สอดคล้องกับกฎเกณฑ์อย่างสมบูรณ์ นี่คือส่วนที่น่ากังวลที่สุดของเรื่องทั้งหมด
L-BTC ที่ถูกสร้างขึ้นมาจากอากาศ这批 ถูกโอนไปยังกระเป๋าเงินของ SideSwap (แพลตฟอร์มบุคคลที่สามที่ให้บริการ peg-out) เมื่อปะปนเข้าไปแล้ว พวกมันก็ไม่ต่างจาก L-BTC ปกติใดๆ ในสายตาของบัญชี พวกมันคือเงินจริง
สิบกว่านาทีต่อมา คำขอ peg-out จำนวน 4,000 L-BTC ก็ถูกยื่นเข้ามา: ยกเลิกใบรับฝาก ถอนบิตคอยน์จริง
โหนดทั้ง 15 แห่งเริ่มปฏิบัติหน้าที่ ฮาร์ดแวร์โมดูลความปลอดภัยของพวกเขาจะตรวจสอบสองอย่าง ที่อยู่สำหรับถอนอยู่ในบัญชีรายชื่อที่อนุญาตหรือไม่ และจำนวน L-BTC ที่ถูกทำลายตรงกับจำนวนบิตคอยน์ที่ขอหรือไม่ ทั้งสองอย่างตรงกัน
มันจะไม่ และไม่มีความสามารถที่จะถามคำถามที่สามว่า L-BTC เหล่านี้ถือกำเนิดขึ้นมาอย่างไรตั้งแต่แรก
กุญแจ 11 ดอกลงนามตามปกติ ประมาณ 35 นาทีต่อมา เครือข่ายหลักของบิตคอยน์ยืนยันธุรกรรมนั้น บิตคอยน์จริง 3,996 เหรียญได้ออกจากกระเป๋าเงินของสหพันธ์
น่าสังเกตว่า Liquid ได้ออกแบบระบบประกันฉุกเฉินไว้ หากเส้นทางการลงนามปกติล้มเหลว ต้องใช้กุญแจสำรอง 2/3 และรอ 56 วันจึงจะสามารถเคลื่อนย้ายเงินได้ ระบบประกันนี้ไม่เคยถูกกระตุ้น — เพราะผู้โจมตีไม่ได้บุกประตูหลังเลย เขาเดินผ่านประตูหน้า และประตูหน้าก็เปิดให้เขา
เกณฑ์การลงนามหลายฝ่ายควบคุมว่า "ใครลงนามได้" แต่มันไม่สามารถตอบว่า "สิ่งที่ลงนามนั้นถูกต้องหรือไม่" เมื่อการปลอมแปลงเกิดขึ้นในชั้นที่ต่ำกว่าการลงนาม — การตัดสินของซอฟต์แวร์โหนดว่าอะไรคือเงินจริง — เกณฑ์จะสูงแค่ไหนก็เพียงทำให้รายจ่ายที่ผิดพลาดถูกลงนามอย่างเป็นระเบียบยิ่งขึ้นเท่านั้น
5. มันถูกค้นพบได้อย่างไร
น่าเสียดายที่ช่องโหว่นี้ก่อให้เกิดความขัดแย้งระหว่างโหนดต่างๆ บล็อกเดียวกัน โหนดบางแห่งยอมรับ บางแห่งปฏิเสธ — ขึ้นอยู่กับว่าแคชของแต่ละโหนดเก็บอะไรไว้ก่อนหน้านี้
Antoine Poinsot นักพัฒนาแกนหลักของบิตคอยน์ เปิดเผยต่อสาธารณะในขณะนั้นว่าบล็อกสำคัญนั้น "ถูก mempool ปฏิเสธ แต่ถูก Blockstream ยอมรับ"

และ mempool.space เองก็เป็นหนึ่งในสมาชิกสหพันธ์ โปรแกรมตรวจสอบแบบเรียลไทม์ของมันจับการถอนที่ผิดปกติได้ -4,019 BTC ในขณะที่แดชบอร์ดอย่างเป็นทางการของ Liquid ไม่ได้สะท้อนความสูญเสียนี้ในเวลานั้น — ระบบตรวจสอบสองชุดให้ภาพของโลกที่แตกต่างกัน
ตัวเลขที่ตามมานั้นเจ็บตา: บนเชนมี L-BTC หมุนเวียน 4,205 เหรียญ ในขณะที่บิตคอยน์จริงในกระเป๋าเงินของสหพันธ์ หลังจากจัดการถอนเงินตามมาอีกหลายรายการ เหลือเพียง 197 เหรียญ อัตราการค้ำประกันต่ำกว่า 5%
ที่นี่ก็ซ่อนอีกด้านของธุรกรรมลับเช่นกัน: ราคาของความเป็นส่วนตัวคือความสามารถในการตรวจสอบได้ เมื่อจำนวนเงินถูกซ่อน ไม่มีใครภายนอกสามารถเปรียบเทียบแบบเรียลไทม์ระหว่าง "ปริมาณใบรับฝากทั้งหมดในบัญชี" กับ "ยอดเหรียญจริงในคลัง" ได้ 1:1 จากข้อเท็จจริงที่ใครก็ตรวจสอบได้ ถอยกลับกลายเป็นคำกล่าวที่ต้องเชื่อ เมื่อมันถูกพิสูจน์ว่าผิด ช่องว่างก็สูงถึง 320 ล้านดอลลาร์แล้ว
6. สิ่งที่ glaring กว่าช่องโหว่ คือแพตช์นั้น
หากเรื่องราวจบเพียงเท่านี้ มันก็แค่การโจมตีทางวิทยาการเข้ารหัสลับระดับสูง แต่ยังมีครึ่งหลัง
โค้ดแก้ไขข้อบกพร่องของแคชนั้น ถูกส่งเข้าคลังโค้ดตั้งแต่เมื่อวันที่ 3 สิงหาคม หัวข้อเขียนไว้ชัดเจน: ผูกแคช range proof กับสินทรัพย์และสคริปต์เอาต์พุต วันที่ 2 กันยายน มันถูกรวมเข้าสาขาหลัก
แต่ในขณะเกิดเหตุ โหนดของสหพันธ์รันเวอร์ชัน 23.3.3 — เวอร์ชันที่เผยแพร่เมื่อวันที่ 13 เมษายน ซึ่งไม่มีแพตช์นี้ ภายในเวลาไม่ถึงสามชั่วโมงหลังเกิดเหตุเมื่อวันที่ 6 กันยายน แพตช์นี้ถูกผนวกเข้าสาขาเผยแพร่อย่างเร่งด่วน
ต้องชี้แจงว่าทางการไม่ได้ยืนยันอย่างเป็นทางการว่าเหตุการณ์นี้เกิดจากข้อบกพร่องนี้ ความเชื่อมโยงข้างต้นมาจากการทบทวนของนักวิจัยภายนอก แต่ไทม์ไลน์เองก็เพียงพอที่จะชี้ให้เห็นปัญหาที่กว้างกว่า: การที่ช่องโหว่ถูกแก้ และการที่โค้ดที่แก้แล้วรันจริงในสภาพแวดล้อมการผลิต เป็นสองเรื่องที่แตกต่างกัน ระหว่างกลางอาจห่างกันถึงห้าเดือน
Jameson Lopp หัวหน้าฝ่ายความปลอดภัยของ Casa ยังชี้ให้เห็นอีกเรื่องหนึ่ง: บันทึกสาธารณะของคลังโค้ดโหนดสหพันธ์แสดงว่าการส่งโค้ดครั้งล่าสุดคือเมื่อเดือนเมษายน 2024 — ห่างจากเวลาที่เกิดเหตุกว่า两年

สินทรัพย์มูลค่า 320 ล้านดอลลาร์ ถูกฝากฝังไว้กับซอฟต์แวร์ที่ไม่ได้ถูกดูแลอย่างจริงจังมาสองปี นี่ไม่ใช่ความล้มเหลวของวิทยาการเข้ารหัสลับ แต่เป็นความล้มเหลวของการดำเนินงาน
7. "เราคือไวท์แฮต" และคำตอบของ Blockstream
คืนนั้น ที่อยู่ผู้รับส่งข้อความ OP_RETURN ขึ้นสู่เชนว่า:
we are whitehats. contact us on chain. (เราคือไวท์แฮต ติดต่อเราบนเชน)
การเจรจาเริ่มขึ้นตามมา วันที่ 7 กันยายน อีกฝ่ายคืนบิตคอยน์ 3,400 เหรียญ (ประมาณ 272 ล้านดอลลาร์ คิดเป็น 85%) เก็บไว้เอง 598.5 เหรียญ (ประมาณ 47 ล้านดอลลาร์)
ตอนแรกทั้งสองฝ่ายสื่อสารกันเป็นการส่วนตัว Blockstream ตอบกลับด้วยข้อความที่เข้ารหัสและลงนามด้วย PGP แต่ระหว่างวันที่ 8


