สรุปสั้น
เมื่อวันที่ 30 กรกฎาคม มีผู้โจมตีกวาดเงินออกจากแอดเดรสบิตคอยน์ 1,196 แอดเดรสภายในเวลาเพียง 41 นาที รวมเป็นมูลค่า 1,082.65 BTC หรือราว 70.2 ล้านดอลลาร์สหรัฐ ณ เวลานั้น บริษัท Galaxy Research เป็นผู้ทำแผนที่การกวาดเงินครั้งนี้และโยงเข้ากับข้อบกพร่องในเฟิร์มแวร์ของ Coldcard กระเป๋าฮาร์ดแวร์ที่รองรับเฉพาะบิตคอยน์ ผลิตโดยบริษัท Coinkite จากแคนาดา ต้นตอของปัญหาย้อนกลับไปถึงข้อผิดพลาดในการผสานโค้ดเฟิร์มแวร์เมื่อเดือนมีนาคม พ.ศ. 2564 ที่ทำให้กระบวนการสร้าง seed ไปเรียกใช้ตัวสร้างเลขสุ่มเทียม (PRNG) ของซอฟต์แวร์แบบกำหนดผลได้ แทนที่จะเรียกใช้ตัวสร้างเลขสุ่ม (RNG) ระดับฮาร์ดแวร์ของชิป STM32
บริษัท Block ซึ่งวิเคราะห์ช่องโหว่นี้ระบุว่า ผู้โจมตีที่สามารถระบุหรือจำกัดขอบเขตของหมายเลข UID ของอุปกรณ์ สถานะของตัวจับเวลา และประวัติการเรียกใช้ RNG ก่อนหน้าได้มากพอ จะสามารถสร้างชุดผลลัพธ์ที่เป็นไปได้ขึ้นมาใหม่แบบออฟไลน์โดยไม่ต้องเข้าถึงตัวอุปกรณ์เลย จากนั้นก็นำ seed ที่เป็นตัวเลือกไปสร้างแอดเดรสแล้วเทียบกับข้อมูลสาธารณะบนบล็อกเชนได้ทันที บริษัท Coinkite ปล่อยเฟิร์มแวร์ฉุกเฉินสำหรับทุกรุ่นและทุกสายเวอร์ชันที่ได้รับผลกระทบเมื่อวันที่ 31 กรกฎาคม แต่ประเด็นสำคัญที่เจ้าของอุปกรณ์ต้องเข้าใจคือ การติดตั้งเฟิร์มแวร์ใหม่ไม่ได้ซ่อม seed ที่ถูกสร้างไว้แล้ว ผู้ที่มี seed อยู่ในกลุ่มเสี่ยงต้องสร้าง seed ใหม่บนเฟิร์มแวร์ที่แพตช์แล้วและย้ายเหรียญออกไป
รายละเอียดข่าว
เว็บไซต์ The Hacker News รายงานเมื่อวันที่ 2 สิงหาคม พ.ศ. 2569 ว่า บริษัท Block ได้ไล่หาต้นตอของข้อบกพร่องไปจนถึงไฟล์ตั้งค่าสำหรับการผลิตของ Coldcard ซึ่งกำหนดค่ามาโคร MICROPY_HW_ENABLE_RNG ไว้เป็นศูนย์ เนื่องจากบริษัท Coinkite มีตัวห่อหุ้ม RNG ระดับฮาร์ดแวร์ของตัวเองอยู่แล้ว ปัญหาคือไลบรารี libngu ตรวจเพียงว่ามาโครนั้น “มีอยู่” หรือไม่ แทนที่จะตรวจว่ามันถูก “เปิดใช้งาน” หรือไม่ ผลคือการคอมไพล์ผูกเข้ากับตัวสำรองชื่อ Yasmarang ของ MicroPython ซึ่งตัวสำรองดังกล่าวถูกตั้งค่าเริ่มต้นจากหมายเลขประจำตัวชิปและรีจิสเตอร์ของตัวจับเวลา และไม่ได้เก็บเอนโทรปีใหม่เพิ่มเลยหลังการตั้งค่าเริ่มต้น
ในแง่ปริมาณ บริษัท Coinkite ประเมินว่าเอนโทรปีที่ใช้ได้จริงอยู่ที่ราว 40 บิตบนรุ่น Mk3 และราว 72 บิตบนรุ่น Mk4, Mk5 และ Q เทียบกับมาตรฐาน 128 บิตของ seed แบบ BIP-39 ชนิด 12 คำ ขณะที่บริษัท Block ไม่ได้ให้ตัวเลขเชิงปฏิบัติเพียงค่าเดียว แต่กำหนดเพดานแบบมีเงื่อนไขไว้ต่ำกว่า 2 ยกกำลัง 40.7 และ 2 ยกกำลัง 73.3 พร้อมเตือนว่าค่าหลังไม่ได้เทียบเท่ากับความปลอดภัยเชิงรหัสวิทยาที่ระดับ 73 บิต และไม่ได้เผยแพร่ผลทดสอบการเจาะด้วยกำลังประมวลผลใด ๆ ประกอบ ซึ่งเป็นข้อจำกัดสำคัญของหลักฐานชุดนี้ เพราะแปลว่ายังไม่มีใครแสดงต้นทุนจริงของการเจาะออกมาเป็นตัวเลข

จนถึงขณะนี้ยังไม่มีใครระบุตัวผู้โจมตีได้ บริษัท Galaxy ซึ่งเป็นผู้ทำแผนที่การกวาดเงินจาก 1,196 แอดเดรส ระบุว่าไม่พบธุรกรรมบิตคอยน์อื่นในช่วง 30 วันก่อนหน้าที่มีลายเซ็นแบบเดียวกัน คือค่าธรรมเนียม 30 sat/vB และไม่มีเงินทอน พร้อมเตือนว่ารูปแบบดังกล่าวช่วยระบุ “ตัวผู้ปฏิบัติการ” ไม่ใช่ระบุว่า “เกิดการโจรกรรม” เพราะการกวาดเหรียญแบบนี้ “หน้าตาเหมือนกับกรณีที่เจ้าของเหรียญเลือกย้ายเหรียญเอง” ทุกประการ
ต่อมาบริษัท Galaxy Research ระบุเพิ่มเติมว่าพบคลื่นการกวาดเหรียญที่ต้องสงสัยว่าเกี่ยวข้องกับ Coldcard อีก 2 ระลอก ทำให้ยอดประเมินที่สังเกตได้เพิ่มเป็น 1,367.05 BTC มูลค่าราว 88.6 ล้านดอลลาร์ กระจายอยู่บน 4,585 แอดเดรส โดยบริษัทระบุว่าระลอกที่ 1 และ 2 อาจมีผู้ปฏิบัติการรายเดียวกันเมื่อดูจากรูปแบบธุรกรรม แต่เตือนว่าไม่ควรเหมาว่าระลอกที่ 3 เป็นฝีมือคนเดียวกัน และย้ำว่าข้อสรุปทั้งหมดมาจากการวิเคราะห์ข้อมูลบนเชน ยังไม่ได้ยืนยันด้วยการคำนวณว่าทุกแอดเดรสที่ระบุถูกสร้างจากเอนโทรปีที่อ่อนแอของ Coldcard จริง ทั้งนี้บริษัทระบุว่ากิจกรรมยังดำเนินอยู่ และได้รายงานแอดเดรสที่ต้องสงสัยว่าอยู่ในการควบคุมของผู้โจมตีราว 600 รายการให้แก่หน่วยงานสืบสวนของรัฐบาลกลาง บริษัทด้านการกำกับดูแล และผู้สืบสวนด้านความปลอดภัยไซเบอร์แล้ว นอกจากนี้การเปิดเผยครั้งนี้ยังเกิดขึ้นตามหลังงานวิจัยชื่อ Ill Bloom ของบริษัท Coinspect เมื่อต้นเดือนกรกฎาคม ซึ่งเป็นช่องโหว่ PRNG อ่อนแออีกกรณีหนึ่งในกระเป๋าซอฟต์แวร์รุ่นเก่า และเชื่อมโยงกับความเสียหายกว่า 5 ล้านดอลลาร์จากแอดเดรสบนเครือข่าย Bitcoin, Ethereum, Tron, Rootstock และ Polygon นับตั้งแต่เดือนพฤษภาคม
วิธีการโจมตี
หัวใจของการโจมตีไม่ได้อยู่ที่การเจาะอุปกรณ์หรือหลอกเหยื่อ แต่อยู่ที่การคาดเดา seed ย้อนหลังแบบออฟไลน์ เมื่อกระบวนการสร้าง seed ถูกผูกไว้กับตัวสุ่มเลขที่กำหนดผลได้ และตัวสุ่มนั้นถูกตั้งค่าเริ่มต้นจากข้อมูลที่คาดเดาหรือจำกัดขอบเขตได้ เช่น หมายเลขประจำตัวของชิปและค่ารีจิสเตอร์ของตัวจับเวลาขณะบูต ผู้โจมตีจึงสามารถไล่สร้างชุด seed ที่เป็นไปได้ทั้งหมดขึ้นมาใหม่ แล้วแปลงเป็นแอดเดรสเพื่อเทียบกับบล็อกเชนซึ่งเป็นข้อมูลเปิดสาธารณะ เมื่อเจอแอดเดรสที่มียอดคงเหลือก็เท่ากับได้กุญแจไปด้วยในตัว
บริษัท Block ระบุว่าการที่รุ่นใหม่กว่ามีการ reseed เพิ่มทำให้จำนวนตัวเลือกที่ต้องไล่มากขึ้น แต่ต้นทุนในทางปฏิบัติยังขึ้นอยู่กับข้อมูล UID ที่ผู้โจมตีมี จังหวะเวลาบูต ประวัติการเรียกใช้ RNG ก่อนหน้า และต้นทุนของการสร้างแอดเดรสจาก seed แต่ละตัว จุดสำคัญที่สุดสำหรับเจ้าของอุปกรณ์คือ ความเสี่ยงขึ้นอยู่กับเฟิร์มแวร์ที่กำลังทำงานอยู่ “ตอนที่สร้าง seed” ไม่ใช่เวอร์ชันที่ติดตั้งอยู่ในปัจจุบัน โดยขอบเขตที่ได้รับผลกระทบมีดังนี้
- Mk2 และ Mk3 — บริษัท Coinkite ระบุว่ารุ่น Mk3 เวอร์ชัน 4.0.1 ถึง 4.1.9 ได้รับผลกระทบ และแก้ไขแล้วใน 4.2.0 โดยไม่ได้ระบุถึง Mk2 ขณะที่บริษัท Block จัดให้ทั้ง Mk2 และ Mk3 เวอร์ชัน 4.0.0 ถึง 4.1.9 อยู่ในกลุ่มเสี่ยง
- Mk4 และ Mk5 — ทุกเวอร์ชันก่อน 5.6.0
- รุ่น Q — ทุกเวอร์ชันก่อน 1.5.0Q
- สาย Edge — ก่อน 6.6.0X สำหรับ Mk4 และ Mk5 และก่อน 6.6.0QX สำหรับรุ่น Q
ผลกระทบ
ผู้ที่ได้รับผลกระทบคือเจ้าของ Coldcard ที่สร้าง seed ขึ้นบนเฟิร์มแวร์ในช่วงที่มีข้อบกพร่อง ซึ่งกินเวลายาวนานกว่า 5 ปีนับจากเดือนมีนาคม พ.ศ. 2564 นี่คือกรณีศึกษาที่ชัดเจนว่าความปลอดภัยของกระเป๋าฮาร์ดแวร์ไม่ได้อยู่ที่การเก็บกุญแจไว้ออฟไลน์เพียงอย่างเดียว แต่ขึ้นอยู่กับคุณภาพของเอนโทรปีในวินาทีที่กุญแจถูกสร้างขึ้นด้วย และเมื่อเอนโทรปีในตอนนั้นอ่อนแอ ความเสียหายก็ย้อนกลับไปแก้ไม่ได้ ต่อให้เก็บอุปกรณ์ไว้ในตู้เซฟและไม่เคยต่ออินเทอร์เน็ตเลยก็ตาม เพราะผู้โจมตีทำงานกับข้อมูลสาธารณะบนบล็อกเชนล้วน ๆ
ความเสียหายที่ยืนยันด้วยการวิเคราะห์บนเชนแล้วอยู่ที่ราว 88.6 ล้านดอลลาร์จาก 4,585 แอดเดรส และกิจกรรมยังดำเนินอยู่ อย่างไรก็ตามต้องระบุข้อจำกัดให้ชัดว่า ยังไม่มีรายงานสาธารณะฉบับใดที่สร้าง seed ของเหยื่อรายใดขึ้นมาใหม่ได้สำเร็จแล้วจับคู่กับแอดเดรสที่ถูกกวาดเงินไปจริง ความเชื่อมโยงระหว่างช่องโหว่กับการโจรกรรมจึงตั้งอยู่บนความสอดคล้องของรูปแบบและช่วงเวลา ไม่ใช่การพิสูจน์ทางเทคนิคแบบต่อจุดถึงจุด
สำหรับผู้ใช้ในไทยที่ถือครองสินทรัพย์ดิจิทัลและใช้กระเป๋าฮาร์ดแวร์ยี่ห้อนี้ ความเสี่ยงเป็นความเสี่ยงส่วนบุคคลที่ไม่มีตัวกลางรับผิดชอบและไม่มีกลไกเรียกคืนธุรกรรม เมื่อเหรียญถูกโอนออกไปแล้ว การติดตามทำได้เพียงระดับการวิเคราะห์บนเชนเท่านั้น
คำแนะนำ
เจ้าของ Coldcard ควรตรวจสอบก่อนว่า seed ปัจจุบันถูกสร้างขึ้นบนเฟิร์มแวร์เวอร์ชันใด หากอยู่ในช่วงที่ได้รับผลกระทบ ให้ติดตั้งเฟิร์มแวร์ฉุกเฉินที่บริษัท Coinkite ปล่อยออกมา แล้วสร้าง seed ใหม่บนเฟิร์มแวร์ที่แพตช์แล้ว จากนั้นย้ายเหรียญทั้งหมดไปยังแอดเดรสที่ได้จาก seed ใหม่ ห้ามนำ seed เดิมไปกู้คืนบนเฟิร์มแวร์ที่อัปเดตแล้วหรือบนกระเป๋าอื่น เพราะจุดอ่อนติดไปกับ seed ไม่ได้ติดอยู่กับตัวอุปกรณ์
บริษัท Coinkite ระบุว่า seed ที่สร้างจากการทอยลูกเต๋าอย่างน้อย 50 ครั้งแบบเที่ยงตรง เป็นอิสระต่อกัน และทำในที่ลับ จะไม่เสี่ยงจากบั๊กนี้โดยลำพัง แต่หากไม่แน่ใจในจำนวนครั้งหรือความเป็นส่วนตัวของการทอย บริษัทแนะนำให้ย้ายเหรียญ ส่วนการตั้งวลีรหัสผ่าน BIP-39 ที่แข็งแรงและไม่ซ้ำใครนั้นสร้างกระเป๋าแยกอีกใบที่ลำพังคำ seed เข้าไม่ถึง แต่บริษัทก็ยังแนะนำให้เปลี่ยน seed อยู่ดี
สำหรับผู้ที่ใช้ระบบ multisig การกระจายความเสี่ยงจะช่วยได้ก็ต่อเมื่อองค์ประชุมของกุญแจไม่ได้สร้างจากอุปกรณ์ที่ได้รับผลกระทบทั้งหมด ส่วนผลิตภัณฑ์อื่นของบริษัทอย่าง TAPSIGNER, OPENDIME และ SATSCARD ใช้ฐานโค้ดคนละชุดจึงไม่ได้รับผลกระทบ ในภาพกว้าง บทเรียนสำหรับนักพัฒนาคือการตรวจเงื่อนไขคอมไพล์ที่เช็กเพียงว่ามาโคร “มีอยู่” แทนที่จะเช็กว่า “ถูกเปิดใช้งาน” อาจทำให้ระบบตกไปใช้ค่าสำรองอย่างเงียบ ๆ ได้นานหลายปีโดยไม่มีสัญญาณเตือนใด ๆ
