เหตุผลที่ Coldcard มีอยู่ ก็เพื่อให้กุญแจส่วนตัวไม่ต้องเชื่อมต่ออินเทอร์เน็ตเลย ผู้ประกอบการชาวแคนาดา Jonathan Goodman ทำตามกฎนี้อย่างเคร่งครัดที่สุด อุปกรณ์ Coldcard ที่เก็บกุญแจส่วนตัวไม่เคยต่ออินเทอร์เน็ต ถูกล็อกไว้ในตู้เซฟธนาคาร ส่วนวลีช่วยจำ (seed phrase) ก็ถูกเก็บไว้ในตู้เซฟที่สองแยกต่างหาก ไม่เคยให้ใครเห็นเลย แต่เมื่อวันที่ 29 กรกฎาคม กระเป๋าเงินของเขากลับถูกโจรกรรมจนหมด สูญเงินไป 18.25 บิตคอยน์ คิดเป็นมูลค่าตามราคาขณะนั้นกว่า 1.17 ล้านดอลลาร์สหรัฐ "สิ่งที่เจ็บปวดที่สุดคือ ผมทำทุกอย่างถูกต้องแล้ว" เขาเขียนไว้บน X เมื่อวันที่ 1 สิงหาคม

Goodman ไม่ใช่เหยื่อรายเดียว สถาบันวิจัย Galaxy Research ระบุว่ามีความมั่นใจสูงว่ามีบิตคอยน์ราว 1,596 เหรียญ มูลค่ากว่า 100 ล้านดอลลาร์สหรัฐ ถูกขโมยไปจากประมาณ 7,300 ที่อยู่ ผ่านการโจมตีต่อเนื่องหลายครั้ง โดย Alex Thorn หัวหน้าฝ่ายวิจัยของสถาบันดังกล่าวประเมินเมื่อวันที่ 4 สิงหาคมว่า มีผู้โจมตีอย่างน้อย 15 กลุ่มที่แตกต่างกันใช้ช่องโหว่เดียวกันนี้ และไม่มีกลุ่มใดต้องสัมผัสตัวอุปกรณ์จริงเลย

ปัญหาไม่ได้อยู่ที่ฮาร์ดแวร์ แต่อยู่ที่วิธีการสร้างซีด

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

Coldcard 種子生成漏洞內幕:鎖進保險箱也擋不住的比特幣竊案

ระดับความรุนแรงที่ได้รับผลกระทบไม่เท่ากัน อุปกรณ์รุ่น Mk2 และ Mk3 ไม่ได้รับความสุ่มที่ปลอดภัยเลยในกระบวนการนี้ ส่วนรุ่น Mk4, Q และ Mk5 ได้รับความสุ่มมาบางส่วน แต่ซอฟต์แวร์กลับเก็บไว้เพียงส่วนเล็กๆ เท่านั้น Coinkite ประเมินว่าอุปกรณ์รุ่นใหม่กว่านี้ผลิตความสุ่มได้จริงเพียง 72 บิต ต่ำกว่าเป้าหมายการออกแบบที่ 128 บิตอย่างมาก เท่ากับลดจำนวนความเป็นไปได้ของซีดลงเหลือไม่ถึง 1 ใน 2 ยกกำลัง 56 ของค่าเดิม

ข้อผิดพลาดที่ซ่อนอยู่นานสี่ปี มาจากเฟิร์มแวร์ 4.0.0

ช่องโหว่นี้เข้ามาสู่ Coldcard พร้อมกับเฟิร์มแวร์ 4.0.0 เมื่อวันที่ 17 มีนาคม 2021 โดยรายละเอียดเวอร์ชันของ Coinkite ในเวลานั้นเขียนไว้ว่า "All New Code, Same Great Features" และในรายชื่อผู้มีส่วนร่วมก็ขอบคุณบัญชีชื่อ "switck" ที่ให้คลังโค้ดต้นฉบับใหม่มา James O'Beirne นักพัฒนาบิตคอยน์ที่ทำการตรวจสอบ ได้เปรียบเทียบการเปลี่ยนแปลงโค้ด 58 รายการที่เผยแพร่ภายใต้บัญชี "switck" และพบว่าการเปลี่ยนแปลงเหล่านี้มีลายเซ็นทางการเข้ารหัสชุดเดียวกันกับที่ Peter Gray ผู้ร่วมก่อตั้ง Coinkite ใช้เมื่อเผยแพร่ภายใต้ชื่อจริงของเขา ซึ่งเท่ากับยืนยันว่า switck ก็คือ Gray เอง คลังโค้ด libngu ที่ switck พัฒนาขึ้นถูกรวมเข้ากับเฟิร์มแวร์ Coldcard ในอุปกรณ์ของผู้ใช้ โดยหนึ่งในหน้าที่ของมันคือช่วยสร้างความสุ่มที่จำเป็นสำหรับการสร้างกระเป๋าเงิน

O'Beirne กล่าวว่าเขาได้ตั้งข้อสงสัยเกี่ยวกับกระบวนการนี้ตั้งแต่ตอนตรวจสอบในเดือนพฤษภาคมปีนี้แล้ว โดยได้แจ้งให้ Coinkite ทราบถึงความเป็นไปได้ที่จะมีข้อบกพร่อง แต่ได้รับคำตอบว่า "ถ้ามีปัญหาจริง คงถูกพบไปแล้วนานแล้ว" ทาง Coinkite ระบุในเวลาต่อมาว่า ระบบตรวจสอบด้วย AI ที่บริษัทพัฒนาขึ้นเองก็ไม่สามารถจับข้อผิดพลาดนี้ได้ก่อนเกิดเหตุ และหลังจากช่องโหว่ถูกเปิดเผยออกมา ทีมงานได้นำโมเดล AI หลักหลายตัวมาทดสอบซ้ำ ก็ยังไม่สามารถตรวจพบปัญหานี้ได้เช่นกัน

Coinkite ได้ออกเฟิร์มแวร์แก้ไขสำหรับทุกรุ่นและทุกช่องทางการเผยแพร่ที่ได้รับผลกระทบแล้ว แต่การแก้ไขนี้จะมีผลเฉพาะกับซีดที่สร้างขึ้น "ในอนาคต" เท่านั้น ไม่สามารถแก้ไขย้อนหลังให้กับซีดเก่าที่ถูกสร้างขึ้นด้วยซอฟต์แวร์ที่มีข้อบกพร่องไปแล้วได้ ผู้ใช้ที่ได้รับผลกระทบจะต้องติดตั้งเฟิร์มแวร์ที่แก้ไขแล้ว สร้างซีดใหม่ขึ้นมาใหม่ทั้งหมด แล้วโอนบิตคอยน์ไปยังที่อยู่ใหม่ — ผู้ใช้อย่าง Goodman ที่แยกกุญแจส่วนตัวกับ mnemonic เก็บล็อกไว้ในตู้เซฟคนละใบ ป้องกันได้แค่การถูกขโมยในระดับกายภาพ แต่ป้องกันไม่ได้เลยหากซีดนั้นขาดความสุ่มที่เพียงพอตั้งแต่ตอนที่ถูกสร้างขึ้นมา