สนับสนุนโดย
Featured

อธิบายช่องโหว่ Coldcard: ใครสูญเสียบิตคอยน์ และใครบ้างที่มีความเสี่ยง

ผู้โจมตีฉวยช่องโหว่จากซีด (seed) ที่ถูกสร้างด้วยความสุ่มที่อ่อนแอจากฮาร์ดแวร์วอลเล็ต Coldcard บางรุ่น เพื่อขโมยบิตคอยน์มูลค่าราวหลายสิบล้านดอลลาร์จากที่อยู่นับร้อยเมื่อวันที่ 30 กรกฎาคม

เขียนโดย
แชร์
อธิบายช่องโหว่ Coldcard: ใครสูญเสียบิตคอยน์ และใครบ้างที่มีความเสี่ยง

ประเด็นสำคัญ

  • การโจรกรรมที่เชื่อมโยงกับ Coldcard ดูดบิตคอยน์ออกจากวอลเล็ตหลายร้อยใบเมื่อวันที่ 30 กรกฎาคม
  • Coinkite ระบุว่า seed ของ Mk3 มีเอนโทรปีราว 40 บิต แทนที่จะเป็น 128
  • ผู้ใช้ Coldcard ต้องติดตั้งเฟิร์มแวร์ที่แก้ไขแล้วและสร้าง seed ใหม่ก่อนย้ายเงิน

ตามการวิเคราะห์เชิงลึกจาก Galaxy Research การขโมยหลักเกิดขึ้นเป็นระลอกที่ประสานกันอย่างแน่นหนา ใช้เวลาราว 25 นาที ขณะที่การวิเคราะห์ในวงกว้างภายหลังเชื่อมโยงที่อยู่ประมาณ 1,196 ที่อยู่ และมากถึง 1,083 บิตคอยน์ ซึ่งมีมูลค่าเกือบ 70 ล้านดอลลาร์ กับกิจกรรมที่กินเวลาประมาณ 41 นาที ตัวเลขสุดท้ายอาจเปลี่ยนแปลงได้เมื่อผู้สืบสวนยังคงไล่ตามร่องรอยธุรกรรมบนบล็อกเชนบิตคอยน์สาธารณะต่อไป

บั๊กอายุ 5 ปีลามไปถึงวอลเล็ตบิตคอยน์ทั่วโลก

วอลเล็ตที่ได้รับผลกระทบส่วนใหญ่เป็นของผู้ถือระยะยาวที่สร้าง recovery seed โดยใช้ อุปกรณ์ Coldcard ที่รันเฟิร์มแวร์ซึ่งมีช่องโหว่ ซึ่งปล่อยตั้งแต่เดือนมีนาคม 2021 เป็นต้นมา Coldcard เป็นฮาร์ดแวร์วอลเล็ตแบบแยกจากเครือข่าย (air-gapped) ผลิตโดย Coinkite ผู้ผลิตจากแคนาดา และออกแบบมาเพื่อแยกคีย์ของบิตคอยน์ (BTC) ออกจากอุปกรณ์ที่เชื่อมต่ออินเทอร์เน็ต

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

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

ตัวสร้างเลขสุ่มของ Coldcard ล้มเหลวแบบเงียบๆ

Seed ของวอลเล็ตบิตคอยน์คือความลับที่มักแสดงเป็นคำ 12 หรือ 24 คำ ซึ่งวอลเล็ตใช้สร้างที่อยู่และคีย์ส่วนตัว Seed 12 คำที่สร้างอย่างถูกต้องจะมีเอนโทรปี 128 บิต ซึ่งเป็นตัวชี้วัดทางเทคนิคที่บอกถึงจำนวนชุดค่าที่เป็นไปได้มหาศาล ทำให้การเดา seed แทบเป็นไปไม่ได้

เดิมทีอุปกรณ์ Coldcard ควรดึงความสุ่มจากตัวสร้างเลขสุ่มแบบฮาร์ดแวร์ที่อยู่ในไมโครคอนโทรลเลอร์ของอุปกรณ์ ซึ่งอาศัยสัญญาณรบกวนไฟฟ้าตามธรรมชาติที่ผู้สังเกตจากภายนอกไม่ควรคาดเดาได้

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

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

ข้อมูลจากโรงงานและจังหวะเวลาแทนที่ความสุ่มแท้จริง

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

Coinkite ประเมินว่าพื้นที่ค้นหาที่มีผลจริงสำหรับ seed ของ Mk3 ที่มีช่องโหว่ อยู่ที่ราว 40 บิตภายใต้สมมติฐานปัจจุบัน แม้จะยังเป็นจำนวนความเป็นไปได้ที่มาก แต่ก็สามารถค้นหาได้ด้วยอุปกรณ์คอมพิวติ้งเฉพาะทาง โดยเฉพาะเมื่อผู้โจมตีสามารถเทียบ seed ผู้สมัครกับ ที่อยู่บิตคอยน์ที่มองเห็นได้บนบล็อกเชน

Screenshot of the Coldcard Mk3 model.
ภาพสแนปช็อตของรุ่น Coldcard Mk3

รุ่น Coldcard ที่ใหม่กว่า รวมถึง Mk4, Q และ Mk5 ได้เพิ่มความสุ่มบางส่วนจากซีเคียวร์เอลิเมนต์ (secure element) อย่างไรก็ตาม มีเพียงส่วนจำกัดเท่านั้นที่ส่งไปถึงตัวสร้างที่ได้รับผลกระทบ ทำให้ประเมินว่า seed ที่สร้างก่อนติดตั้งเฟิร์มแวร์ที่แก้ไขแล้วมีเอนโทรปีที่มีผลจริงราว 72 บิต ซึ่งแข็งแรงกว่ากรณีของ Mk3 แต่ยังต่ำกว่ามาตรฐาน 128 บิตที่ตั้งใจไว้

ความแตกต่างนี้คล้ายกับการแทนที่รหัสล็อกที่สุ่มจริงด้วยรหัสที่ได้มาจากหมายเลขซีเรียลของกุญแจล็อกและเวลาที่เปิดใช้งานครั้งแรก รหัสที่ได้อาจดูเหมือนสุ่ม แต่คนที่รู้สูตรและสามารถประเมินข้อมูลตั้งต้นก็สามารถสร้างซ้ำได้ ผู้ใช้จำนวนมากกำลังย้ายออก ไม่เพียงจากอุปกรณ์ Mk3 แต่รวมถึง Mk4, Q และ Mk5 ด้วยเช่นกัน

Coinkite แจ้งผู้ใช้ให้สร้าง seed ใหม่ทั้งหมด

Coinkite ออกประกาศแจ้งเตือนด้านความปลอดภัย และ ปล่อยเฟิร์มแวร์ที่แก้ไขแล้วหลังรับรู้ ถึงภัยคุกคามที่กำลังเกิดขึ้น บริษัทระบุว่าผู้ใช้ที่สร้าง seed บนเฟิร์มแวร์ที่ได้รับผลกระทบควรสร้าง seed ใหม่ทั้งหมดด้วยเวอร์ชันที่แก้ไขแล้ว และโอนบิตคอยน์ไปยังที่อยู่ที่ควบคุมโดย seed นั้น

การติดตั้งอัปเดตอย่างเดียวไม่เพียงพอ Seed ที่ถูกสร้างภายใต้ระบบที่ผิดพลาดจะอ่อนแออย่างถาวร เพราะการอัปเดตเฟิร์มแวร์ไม่สามารถเพิ่มความสุ่มให้กับคำที่มีอยู่แล้วได้

Coinkite แนะนำให้ผู้ใช้อัปเดตอุปกรณ์ สร้าง seed ใหม่ ตรวจสอบแบ็กอัปและลายนิ้วมือวอลเล็ต (wallet fingerprint) ยืนยันที่อยู่ปลายทาง ส่งธุรกรรมทดสอบจำนวนเล็กน้อย จากนั้นจึงย้ายยอดคงเหลือที่เหลือ ผู้ใช้ควรเก็บแบ็กอัปเก่าไว้จนกว่าจะยืนยันการโอนเสร็จ แต่ไม่ควรถือว่า seed เก่ายังปลอดภัยอีกต่อไป

บริษัทระบุรุ่นที่แก้ไขแล้ว ได้แก่ Mk3 เวอร์ชัน 4.2.0 ขึ้นไป, Mk4 และ Mk5 เวอร์ชัน 5.6.0 ขึ้นไป, และ Q เวอร์ชัน 1.5.0Q ขึ้นไป รวมถึงเวอร์ชัน Edge ที่สอดคล้องกัน ผลิตภัณฑ์ Tapsigner, Opendime และ Satscard ใช้โค้ดคนละชุดและรายงานว่าไม่ได้รับผลกระทบ

การเพิ่มความปลอดภัยช่วยปกป้องเจ้าของ Coldcard บางราย

ผู้ใช้ที่เพิ่มการทอยลูกเต๋าแบบอิสระจำนวนมากพอเมื่อสร้าง seed จะได้รับการปกป้องอย่างมีนัยสำคัญ เพราะความสุ่มจากผู้ใช้เองกลบอินพุตจากซอฟต์แวร์ที่บกพร่อง Coinkite ระบุว่าอย่างน้อย 50 ครั้งของการทอยลูกเต๋าที่ยุติธรรมให้การปกป้องที่เพียงพอจากปัญหานี้ แม้ว่าการทอยเพิ่มจะให้ระยะเผื่อความปลอดภัยที่กว้างขึ้น

พาสเฟรส BIP-39 ที่แข็งแรงยังสร้างวอลเล็ตแยกอีกใบที่ไม่สามารถกู้คืนได้จากคำ seed เพียงอย่างเดียว วอลเล็ตแบบหลายลายเซ็น (multi-signature) ซึ่งต้องใช้คีย์จากหลายอุปกรณ์ หรือหลายสถานที่ก่อนที่บิตคอยน์จะเคลื่อนย้ายได้ โดยมากแล้วได้รับการปกป้องทั้งหมดหรือเกือบทั้งหมด เมื่อ seed ของ Coldcard ที่มีช่องโหว่เป็นเพียงส่วนหนึ่งของการลงนาม

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

Coinkite ยอมรับความผิด ขณะการถกเถียงหันไปที่ AI

ซีอีโอ Coinkite Rodolfo Novak ซึ่งเป็นที่รู้จักกันอย่างกว้างขวางในชื่อ NVK ขอโทษต่อสาธารณะเมื่อวันที่ 31 กรกฎาคม และกล่าวว่าบริษัทรับผิดชอบเต็มที่ต่อความล้มเหลวของเฟิร์มแวร์ “ผมขอโทษและผมใจสลาย ทีมของเราหัวใจสลายกับข่าวเมื่อวานนี้” Novak เขียน เขายอมรับว่าฮอตฟิกซ์ช่วยทำให้ seed ที่สร้างใหม่ปลอดภัย แต่ไม่สามารถซ่อมแซม seed ที่สร้างด้วยซอฟต์แวร์ที่มีช่องโหว่ได้

Coinkite CEO Rodolfo Novak's article screenshot.
บทความขอโทษของซีอีโอ Coinkite Rodolfo Novak แหล่งที่มาภาพ: X

Novak อธิบายว่า Coinkite จะเผยแพร่รายงานทางเทคนิคฉบับเต็มหลังตรวจสอบรายละเอียดให้แน่ชัด และจะช่วยเหลือผู้ใช้ที่ได้รับผลกระทบซึ่งต้องการทำบันทึกแจ้งความ เรียกร้องค่าสินไหมประกัน หรือดำเนินการสืบสวนอิสระ เขายังเตือนนักพัฒนาว่าเครื่องมือ ปัญญาประดิษฐ์ (AI) สามารถสแกนโค้ดสาธารณะเก่าเพื่อหาจุดอ่อนได้เร็วกว่า กระบวนการรีวิวแบบดั้งเดิมอาจตรวจพบได้

Coinkite เน้นย้ำว่าจำเป็นต้องสมมติว่าผู้โจมตีใช้ AI ตรวจสอบเฟิร์มแวร์โอเพ่นซอร์สของบริษัท แม้ยังไม่มีหลักฐานยืนยันว่าช่องโหว่ถูกค้นพบอย่างไร บริษัทก็ยอมรับเช่นกันว่ารีวิวล่าสุดที่ทำร่วมกับโมเดล AI ชั้นนำไม่สามารถระบุปัญหานี้ได้ ผู้ผลิตฮาร์ดแวร์วอลเล็ตคู่แข่งหลายรายได้โพสต์บนโซเชียลมีเดียเพื่อระบุว่าผลิตภัณฑ์ของตนไม่ได้รับผลกระทบ

“Ledger ไม่ได้รับผลกระทบจากประกาศเกี่ยวกับ Coldcard Mk3 ที่เผยแพร่ล่าสุด” บริษัทบอกผู้ใช้ X หลังเหตุการณ์ Coldcard “อุปกรณ์ Ledger ใช้ตัวสร้างเลขสุ่มจริงที่ได้รับการรับรอง (TRNG) ซึ่งฝังอยู่โดยตรงในชิป Secure Element ของเรา สร้างเอนโทรปีเต็ม 256 บิตสำหรับวลี Secret Recovery Phrase แบบ 24 คำทุกครั้ง”

“ผู้ใช้ Trezor: เงินของคุณปลอดภัย” ผู้ผลิตฮาร์ดแวร์วอลเล็ต Trezor อธิบายเมื่อวันศุกร์ “ปัญหา Coldcard ล่าสุดจำกัดอยู่ที่เฟิร์มแวร์ปรับแต่งของพวกเขาเอง และวิธีที่อุปกรณ์บางส่วนของพวกเขาสร้างความสุ่ม Trezor ไม่ได้ใช้โค้ดนั้นร่วมกัน”

บัญชี X ของ Trezor เสริมว่า:

“เรามักผสมแหล่งที่มาความสุ่มอิสระหลายแหล่งเข้าด้วยกันเสมอ (ฮาร์ดแวร์ของอุปกรณ์ + โฮสต์ + ซีเคียวร์เอลิเมนต์ในรุ่นใหม่กว่า) เราเสียใจอย่างยิ่งสำหรับทุกคนที่สูญเสียบิตคอยน์”

สิ่งที่ผู้ใช้ Coldcard ควรจับตาต่อไป

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

“เรื่องตลกแบบคมสองด้าน: Coinkite ลบข้อมูลลูกค้าทั้งหมดหลัง 120 วันเพื่อปกป้องจากเหตุข้อมูลรั่วไหล” ผู้ร่วมก่อตั้ง Casa, Jameson Lopp รายงานบน X “ซึ่งหมายความว่าพวกเขาไม่สามารถติดต่อเตือนลูกค้าที่ซื้อ coldcard ที่มีช่องโหว่ตลอด 5 ปีที่ผ่านมาเกี่ยวกับช่องโหว่นี้ได้”

X screenshot of the pseudonymous open-source bitcoin developer calle.
นักพัฒนาบิตคอยน์โอเพ่นซอร์สนามแฝงที่ใช้ชื่อ calle ได้แชร์ความเห็นเกี่ยวกับเรื่องนี้ “ผมเศร้าใจอย่างยิ่งสำหรับทุกคนที่ได้รับผลกระทบ โดยเฉพาะผู้ที่อาจเพิ่งสูญเสียเงินเก็บทั้งชีวิต ส่วนที่เลวร้ายที่สุดคือพวกเขาทำทุกอย่างถูกต้องแล้ว” calle กล่าวบน X

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

นอกเหนือจากการโจรกรรมอันเลวร้าย ชาวบิตคอยน์ทั่วชุมชนกำลังส่งสัญญาณเตือนและผลักดันให้ผู้อื่นช่วยกระจายข่าวก่อนที่วอลเล็ตที่ยังมีช่องโหว่จะถูกกวาดออกเพิ่ม

ผู้โจมตี Coldcard ขโมยเงิน 30 ล้านดอลลาร์ใน 10 นาที โดยเล็งเป้าหมายไปที่กระเป๋าเงินขนาดใหญ่

ผู้โจมตี Coldcard ขโมยเงิน 30 ล้านดอลลาร์ใน 10 นาที โดยเล็งเป้าหมายไปที่กระเป๋าเงินขนาดใหญ่

Chainalysis พบว่าผู้โจมตี Coldcard ขโมยเงินไปประมาณ 30 ล้านดอลลาร์ภายใน 10 นาที หลังจากจัดลำดับความสำคัญไปที่กระเป๋าเงินที่มีขนาดใหญ่ที่สุด ยอดรวมกว่า 38 ล้านดอลลาร์

บทความนี้แปลจากภาษาอังกฤษโดยใช้ AI เวอร์ชันภาษาอังกฤษต้นฉบับเป็นแหล่งข้อมูลที่เชื่อถือได้ การแปลอัตโนมัติอาจมีความไม่ถูกต้อง โดยเฉพาะอย่างยิ่งในคำศัพท์ทางกฎหมายและข้อบังคับ

แท็กในเรื่องนี้