Ringkasan

  • Coinkite mengatakan bahwa kesalahan build menyebabkan seed di dompet perangkat keras Coldcard mereka diambil dari fallback perangkat lunak, bukan generator perangkat keras.
  • Perusahaan percaya penyerang menggunakan AI pada kode sumber terbuka mereka, dan mengatakan peninjauan AI internal beberapa minggu sebelumnya tidak menemukan apa pun.
  • Setiap model saat ini terdampak dalam berbagai tingkat, dan memperbarui firmware tidak memperbaiki seed yang sudah dibuat.

Coinkite percaya bahwa penyerang menggunakan AI untuk menemukan celah yang menyebabkan pemilik dompet perangkat keras Coldcard kehilangan puluhan juta dolar dalam Bitcoin, dan menyatakan bahwa peninjauan AI yang dilakukan sebelumnya pada kode yang sama tidak menemukan apa pun. 

Produsen dompet perangkat keras tersebut menerbitkan pengumuman untuk Mk3 dan penjelasan teknis pada hari Kamis, setelah mengetahui bahwa seed yang dihasilkan oleh perangkat mereka jauh lebih mudah ditebak dari yang diharapkan.

Kerugian akibat celah yang dimanfaatkan pada Jumat pagi diperkirakan sebesar 594 BTC, sekitar $38 juta. Dana telah terkuras dari sekitar 500 dompet dalam waktu 25 menit, dengan 562 BTC kemudian dikonsolidasikan ke sebuah alamat tunggal.

Coinkite mengatakan mereka harus mengasumsikan "seseorang menggunakan AI untuk meninjau versi firmware kami sebelumnya" agar dapat menemukan celah tersebut. Perusahaan menyatakan telah menjalankan salah satu model terbaik pada kode mereka beberapa minggu sebelumnya, dan model tersebut "tidak menemukan bug ini atau masalah serius lainnya." Penyerang dan pelindung memiliki alat yang sama, tulis mereka, namun kali ini "tidak membantu kami, dan justru membantu pihak jahat."

Apa yang salah

Firmware Coldcard memanggil sebuah fungsi untuk mengambil keacakan, dan dua implementasi dari fungsi itu berada di basis kode dengan tanda tangan identik: generator perangkat keras yang ditulis Coinkite dan fallback perangkat lunak yang diwarisi dari MicroPython. Penjaga preprocessor hanya memeriksa apakah sebuah pengaturan didefinisikan tanpa menguji nilainya, sehingga build selesai menggunakan fallback tanpa keluhan. Proses pembuatan seed telah menggunakan fallback ini sejak migrasi Maret 2021.

Setiap model saat ini terdampak dalam berbagai tingkat. Coinkite memperkirakan ruang pencarian efektif untuk seed Mk3 sekitar 40 bit, dibandingkan dengan target 128 bit untuk sebuah seed. Entropi tambahan dari elemen keamanan pada Mk4, Q, dan Mk5 meningkatkan jumlah bit mereka menjadi sekitar 72, yang menurut perusahaan secara material memperbaiki posisi tanpa mencapai target. Tapsigner, Opendime, dan Satscard menggunakan kode berbeda dan tidak terdampak.

Apa yang harus dilakukan pemilik

Coinkite telah merilis hotfix darurat, versi 5.6.0 untuk Mk4 dan Mk5 serta 1.5.0Q untuk Q. Pembaruan tidak memperbaiki seed yang sudah dibuat di firmware yang terdampak. Pemilik perlu membuat seed baru pada perangkat keras yang telah diperbaiki, dan perusahaan merekomendasikan penggunaan BIP-39 passphrase yang kuat, setidaknya 99 kali lempar dadu, atau keduanya. Pemilik Mk3, yang modelnya sudah tidak didukung, diarahkan ke jalur migrasi terpisah.