Empat baris kode.
Lebih dari 1.596 BTC hilang.
Dua file, empat baris, lima tahun tak disadari. Ini adalah bedah tuntas kegagalan entro. COLDCARD langkah demi langkah — apa cacatnya, bagaimana penyerang menemukan dompet tersebut, apa yang harus dilakukan oleh pemilik yang terdampak — serta empat pemeriksaan yang dijalankan OneKey agar hal serupa tidak terjadi di sini secara diam-diam.
Pemeriksaan keamanan yang ada, namun tidak melakukan apa pun
Enam langkah, tanpa jargon. Catatan di sebelah masing-masing langkah adalah versi teknis yang presisi, bagi siapa saja yang ingin memeriksa ulang pekerjaannya.
Semua perlindungan bertumpu pada satu angka yang tidak bisa ditebak
Dompet perangkat keras menjalankan beberapa fungsi. Perangkat ini menunjukkan apa yang sebenarnya Anda tanda tangani alih-alih meminta Anda memercayai layar komputer yang terinfeksi, serta menjaga kunci Anda tetap berada di dalam chip yang dirancang tahan terhadap upaya pembukaan paksa. Setiap pertahanan tersebut mengasumsikan hal yang sama: bahwa angka asal turunan kunci Anda tidak mungkin dapat ditebak. Jika angka tersebut dapat ditebak, penyerang tidak perlu melewati pertahanan satu pun. Kumpulan (pool) tempat frasa 24 kata seharusnya diambil memiliki kira-kira satu angka untuk setiap seribu atom di alam semesta yang dapat diamati. Intinya bukanlah agar frasa Anda disembunyikan. Intinya adalah agar kumpulan tersebut tidak dapat ditebak atau dicari.
12 kata membawa 128 bit entropi, 24 kata membawa 256, ditambah checksum dari SHA-256 dari entropi tersebut. BIP-39 merentangkan hasilnya menjadi master key BIP-32.
12 kata membawa 128 bit entropi, 24 kata membawa 256, ditambah checksum dari SHA-256 dari entropi tersebut. BIP-39 merentangkan hasilnya menjadi master key BIP-32.
COLDCARD berhenti mengambil dari kumpulan angka tersebut
Perubahan firmware tahun 2021 secara diam-diam menghentikan dompet untuk meminta chip keacakan khususnya untuk mendapatkan angka tersebut, dan alih-alih meminta perangkat lunak biasa untuk menghitungnya. Jika berdampingan, inilah keseluruhan insiden tersebut:
Sangat menggoda untuk menganggapnya sebagai keamanan yang dipangkas menjadi dua pertiga. Padahal bukan. Setiap bit menggandakan pekerjaan, sehingga kehilangan 88 bit tidak memperkecil ukuran pekerjaan dengan faktor tiga — melainkan memperkecilnya dengan faktor 2⁸⁸. Satu triliun tetaplah angka yang besar bagi seseorang; itu bukan angka yang besar bagi seseorang yang menyewa mesin berkinerja tinggi untuk mengerjakannya satu per satu.
Pembuatan seed beralih dari ckcc.rng_bytes() ke ngu.random.bytes(). Coinkite memperkirakan sekitar 40 bit ruang pencarian yang tersisa pada Mk3 dan sekitar 72 pada Mk4/Mk5/Q, terhadap target 128-bit. Analisis independen oleh Block mencapai tingkat yang sama — di bawah 2⁴⁰·⁷ dan di bawah 2⁷³·³ — serta menemukan kondisi yang lebih sempit yang menyisakan jauh lebih sedikit.2
Pembuatan seed beralih dari ckcc.rng_bytes() ke ngu.random.bytes(). Coinkite memperkirakan sekitar 40 bit ruang pencarian yang tersisa pada Mk3 dan sekitar 72 pada Mk4/Mk5/Q, terhadap target 128-bit. Analisis independen oleh Block mencapai tingkat yang sama — di bawah 2⁴⁰·⁷ dan di bawah 2⁷³·³ — serta menemukan kondisi yang lebih sempit yang menyisakan jauh lebih sedikit.2
Karena perangkat lunak tidak bisa menjadi acak
Pikirkan tentang apa yang membuat lemparan koin tidak dapat diprediksi: kekuatan lemparan, gravitasi, embusan angin dari AC, getaran samar di tanah. Puluhan pengaruh yang dapat Anda sebutkan dan puluhan yang tidak dapat Anda sebutkan. Tidak seorang pun dapat menghitung lintasannya, sehingga tidak seorang pun dapat menebak hasilnya. Perangkat lunak tidak memiliki semua itu. Perangkat lunak menjalankan rumus tetap atas segelintir nilai awal dan menghasilkan jawaban tetap — dan di sini nilai awal tersebut adalah nomor seri chip dan sudah berapa lama perangkat dihidupkan. Penyerang yang mengetahui resep dan bahan-bahannya tidak menebak keluarannya. Mereka menghitungnya kembali.
Dengan RNG perangkat keras yang dinonaktifkan, rng_get() terhubung ke Yasmarang PRNG milik MicroPython, diberi seed dari status non-rahasia — UID, SysTick, RTC — dan tidak mengumpulkan entropi baru setelah itu, sehingga kandidat dapat dienumerasi secara offline. Coinkite tidak menganggap seed yang dicampur dengan 50 lemparan yang adil dan privat atau lebih berisiko dari masalah ini saja: 50 × log₂6 ≈ 129 bit.3
Dengan RNG perangkat keras yang dinonaktifkan, rng_get() terhubung ke Yasmarang PRNG milik MicroPython, diberi seed dari status non-rahasia — UID, SysTick, RTC — dan tidak mengumpulkan entropi baru setelah itu, sehingga kandidat dapat dienumerasi secara offline. Coinkite tidak menganggap seed yang dicampur dengan 50 lemparan yang adil dan privat atau lebih berisiko dari masalah ini saja: 50 × log₂6 ≈ 129 bit.3
Dan pemeriksaan yang dimaksudkan untuk menghentikannya menanyakan pertanyaan yang salah
Inilah bagian yang layak untuk direnungkan. Ada pengaman dalam proses build, yang ditulis khusus untuk menghentikan firmware dikirimkan tanpa generator perangkat keras. Pengaman tersebut menanyakan apakah sebuah pengaturan itu ada. Pengaman tersebut tidak menanyakan apakah pengaturan itu diaktifkan. Pengaturan tersebut ada, dan posisinya nonaktif. Jadi pengaman tetap diam, proses build tidak melaporkan galat, dan firmware pun dikirimkan.
#ifndef hanya menguji keberadaan definisi (definedness). Konfigurasi board menentukan MICROPY_HW_ENABLE_RNG sebagai 0 — terdefinisi, dan dinonaktifkan — sehingga #error tidak pernah terpicu dan linker menyelesaikan rng_get() ke perangkat lunak cadangan (software fallback).3
#ifndef hanya menguji keberadaan definisi (definedness). Konfigurasi board menentukan MICROPY_HW_ENABLE_RNG sebagai 0 — terdefinisi, dan dinonaktifkan — sehingga #error tidak pernah terpicu dan linker menyelesaikan rng_get() ke perangkat lunak cadangan (software fallback).3
Cacat tersebut, dikutip dari sumbernya. Dua file, empat baris, lima tahun.3
Tidak ada yang terlihat salah selama lima tahun
Frasa pemulihan yang lemah terlihat persis seperti frasa yang kuat. Dua puluh empat kata biasa, checksum yang benar, perangkat yang berperilaku normal. Tidak ada peringatan di layar, tidak ada galat dalam proses build, tidak ada hal yang perlu dicurigai. Kode sumber tersebut bersifat publik sepanjang waktu. Siapa pun dapat membacanya. Mampu membaca kode tidak sama dengan seseorang yang benar-benar membaca bagian kode tersebut.
Panjang keluaran, non-nol, dan non-pengulangan semuanya lulus pada PRNG yang lemah, sehingga uji kesehatan (smoke test) biasa tidak dapat mendeteksinya juga.
Panjang keluaran, non-nol, dan non-pengulangan semuanya lulus pada PRNG yang lemah, sehingga uji kesehatan (smoke test) biasa tidak dapat mendeteksinya juga.
Lalu seseorang melakukan perhitungan aritmatika
Mereka tidak pernah menyentuh satu perangkat pun. Mereka menghasilkan kemungkinan frasa di mesin mereka sendiri, mencari tahu alamat Bitcoin mana yang akan dihasilkan oleh masing-masing frasa, dan memeriksa alamat tersebut terhadap blockchain publik. Setiap alamat yang memiliki saldo dikosongkan. Dompet yang dibiarkan tercabut di laci sejak 2022 sama rentannya dengan dompet yang digunakan sehari-hari.
Kandidat diturunkan secara offline melalui BIP-39/BIP-32; hanya pencarian saldo akhir yang menyentuh jaringan, sehingga tidak ada sinyal di sisi korban sebelumnya.3
Kandidat diturunkan secara offline melalui BIP-39/BIP-32; hanya pencarian saldo akhir yang menyentuh jaringan, sehingga tidak ada sinyal di sisi korban sebelumnya.3
Satu peringatan mengenai perkiraan: angka-angka tersebut menggambarkan seberapa banyak tebakan yang dihadapi penyerang berdasarkan asumsi saat ini, bukan stopwatch. Tidak seorang pun dapat memberi tahu Anda berapa lama waktu yang dibutuhkan untuk meretas dompet tertentu.2
Halaman ini bukanlah sebuah perayaan kemenangan.
Coinkite telah mengungkapkannya secara terbuka, menerbitkan laporan teknis lengkap, dan merilis perbaikan yang tepat. Sifat COLDCARD yang open-source justru menjadi alasan mengapa para peneliti independen dapat menyusun kronologinya secara utuh. Kami menuliskan ini karena kegagalan tersebut layak untuk dipahami secara mendetail: cacat pada kode yang luput dari perhatian, dan tidak adanya pemeriksaan di tahap akhir yang seharusnya dapat mendeteksinya.
Baca ini sebelum hal lainnya
Apa yang perlu Anda lakukan bergantung pada perangkat yang Anda gunakan saat frasa pemulihan pertama kali dibuat — bukan perangkat yang Anda pegang hari ini.
Anggap saja ini masih berlangsung. Frasa-frasa tersebut dibuat agar dapat ditebak pada tahun 2021 dan metodenya kini telah dipublikasikan, sehingga siapa pun dapat menjalankan pencarian yang sama — tidak ada patch yang menutupinya dari luar, dan tidak ada alasan bagi penyerang untuk berhenti. Jika Anda terdampak, asumsi yang aman adalah bahwa waktu adalah satu-satunya hal antara Anda dan mereka.
Mk2 dan Mk3 — pindahkan koin Anda sekarang
Rentang yang terdampak adalah firmware 4.0.1 hingga 4.1.9. Versi 4.2.0 memperbaiki cara pembuatan frase baru, tetapi tidak ada pembaruan yang dapat kembali dan menambahkan keacakan pada frase yang sudah ada. Buat dompet baru di perangkat yang Anda percayai dan pindahkan dana Anda.1
Mk4 dan Mk5 — periksa versi firmware
Jika frase dibuat pada firmware yang lebih lama dari 5.6.0 — atau 6.6.0X pada versi Edge — perbarui, buat dompet baru pada firmware yang diperbarui, lalu pindahkan dana Anda. Melakukan pembaruan saja tidak memperbaiki frase yang lama.1
Q — sama, batasnya adalah 1.5.0Q
Perbarui ke 1.5.0Q atau yang lebih baru, atau 6.6.0QX pada versi Edge, buat dompet baru, catat dan uji cadangan, kirim satu transaksi uji coba kecil, lalu pindahkan sisanya.1
Apakah memperbarui firmware COLDCARD memperbaiki frase pemulihan yang sudah saya miliki?
Bagaimana cara mengetahui firmware mana yang membuat frase pemulihan COLDCARD saya?
Bagaimana cara memeriksa apakah alamat saya terlibat dalam masalah ini?
Apakah lemparan dadu atau passphrase melindungi frase pemulihan COLDCARD?
Apakah pengumuman Coinkite mencakup setiap COLDCARD yang terdampak?
Tidak ada perangkat OneKey yang terdampak
Tidak ada satu pun model yang pernah kami kirimkan. Firmware kami tidak memiliki dependensi libngu, Coinkite, COLDCARD, atau CKCC — jalur kode yang mengalami kegagalan tersebut tidak ada untuk dapat diakses, dan Anda dapat memeriksanya sendiri di repositori kami. Pada perangkat keras kami saat ini, kunci berasal dari generator acak murni di dalam elemen aman bersertifikat, bukan dari perangkat lunak pada prosesor utama, dan pergantian itulah yang menjadi inti dari kegagalan ini.
Kami juga tidak begitu saja mempercayainya. Saat berita ini merebak, Anzen Lab menelusuri keacakan kami dari ujung ke ujung — dari mana asalnya, apa yang memanggilnya, dan pengaturan build yang menentukan versi mana yang sampai ke perangkat Anda — serta memublikasikan berkas persis yang mereka periksa.12
Baca pemeriksaan ulang Anzen LabBisakah ini terjadi pada OneKey?
Kegagalan ini memerlukan tiga hal berbeda yang terjadi secara bersamaan. Pada OneKey, tidak ada satu pun dari hal tersebut yang terjadi — dan masing-masing dapat Anda periksa dan buktikan sendiri tanpa harus mempercayai kata-kata kami begitu saja.
Jadi, dari mana asal keacakan OneKey?
Dibuat di dalam chip bersertifikasi EAL 6+
Kunci Anda dibuat dan disimpan di dalam chip khusus yang tahan gangguan, alih-alih prosesor serbaguna yang menjalankan fungsi lainnya. EAL 6+ adalah tingkat jaminan yang digunakan untuk kartu pembayaran dan identitas.
Keacakan yang memantau dirinya sendiri
Chip tersebut menghasilkan keacakan dari derau fisik nyata, dan terus-menerus menguji keluarannya sendiri — jika keacakan tersebut mulai berperilaku tidak normal, chip akan menyadarinya alih-alih terus berjalan secara diam-diam.
Kami memeriksa ulang milik kami
Menyusul berita COLDCARD, Anzen Lab menelusuri keacakan kami dari awal hingga akhir — dari mana asalnya, apa yang benar-benar memanggilnya, dan pengaturan build yang menentukan versi mana yang berakhir di perangkat Anda — serta mempublikasikan file persis yang mereka lihat.11


Empat lapis pemeriksaan pada setiap OneKey, dan tidak satupun yang saling mempercayai
Setiap lapisan dapat melewatkan sesuatu. Intinya adalah keempatnya harus melewatkan hal yang sama. COLDCARD tidak memiliki perlindungan cadangan seperti itu: satu pengaturan build yang tidak diperiksa sudah cukup.
Open-source yang benar-benar dapat Anda verifikasi
Firmware dan aplikasi kami bersifat publik di GitHub — dan build kami dapat direproduksi (reproducible), yang berarti Anda dapat menyusun ulang kodenya sendiri dan mengonfirmasi bahwa kode tersebut menghasilkan perangkat lunak yang persis sama dengan yang berjalan di perangkat Anda. Itulah langkah yang mendeteksi masalah "kode benar, versi salah".
OneKey di GitHub
Pihak luar memeriksa kami, secara resmi
Perusahaan keamanan SlowMist mengaudit kami dan mempublikasikan laporannya — terdapat penilaian terpisah untuk OneKey Pro, Classic 1S, dan SDK kami. Praktik keamanan kami bersertifikasi ISO/IEC 27001, dan lini Pro serta Classic 1S bersertifikasi terhadap EN 18031 oleh badan yang ditunjuk Uni Eropa. Semuanya dipublikasikan, tidak ada yang dinilai sendiri.13
Baca ringkasan audit SlowMistTim yang dibayar untuk merusak produk kami sendiri
Anzen Lab adalah tim keamanan internal kami — insinyur keamanan perangkat keras, firmware, dan aplikasi, yang bekerja sama dengan peneliti luar yang bergantian. Tugas mereka adalah merusak dompet perangkat keras, termasuk milik kami, sebelum ada yang dikirimkan. Ketika berita ini muncul, mereka memeriksa ulang keacakan OneKey dari ujung ke ujung dan mempublikasikan secara persis file mana saja yang mereka periksa.11
Baca analisis Anzen LabKami membayar orang luar untuk menemukan kesalahan kami
Siapa pun dapat melaporkan celah kepada kami secara pribadi, melalui program publik kami di BugRap atau langsung ke [email protected], dan mendapatkan bayaran untuk itu. Tingkat keparahan menentukan pembayaran, dinilai berdasarkan CVSS. Intinya adalah membuat pelaporan kepada kami lebih menarik daripada menjualnya.15
OneKey di BugRapJangan hanya percaya kata-kata kami. Uji dompet yang ada di tangan Anda.
entro.tools adalah alat open-source gratis yang membaca angka acak aktual yang keluar dari dompet perangkat keras dan menjalankan pengujian kesehatan statistik standar pada angka-angka tersebut — langsung di browser Anda, melalui USB, tanpa ada yang diunggah ke mana pun dan tidak memerlukan pembaruan firmware.
Menjalankan pengujian kesehatan FIPS 140-2, NIST SP 800-22 dan SP 800-90B secara lokal melalui WebUSB (Chrome atau Edge desktop). Perangkat meminta izin untuk mengekspor entropi — sekumpulan angka acak yang baru saja dihasilkannya, tidak pernah frasa pemulihan Anda.16
Uji universal Maurer memerlukan setidaknya 387.840 bit; di bawah itu laporan menandainya sebagai dilewati, bukan menghilangkannya diam-diam.16
Dompet mana saja yang dapat diperiksa
Apakah pihak luar dapat membaca angka acak mentah suatu perangkat atau tidak. Ini adalah satu dimensi yang sempit — lihat catatan di bawahnya.
Pertanyaan yang muncul bagi yang lainnya
Apakah OneKey terdampak oleh kegagalan entro COLDCARD?
Dompet perangkat keras mana saja yang terdampak oleh kegagalan entro COLDCARD?
Bisakah saya menguji keacakan dompet saya sendiri?
Bagaimana cara menilai apakah sebuah dompet perangkat keras dapat dipercaya?
Menjelaskan yang rumit adalah tugas kami
Keamanan yang dapat Anda periksa, bukan keamanan yang diminta untuk Anda percaya.
Sumber terbuka dan dapat direproduksi. Diaudit oleh pihak luar. Diserang oleh lab kami sendiri. Dan dibayar ketika seseorang menemukan celah. Itulah argumennya; inilah perangkat yang dimaksud.
Referensi
Segala sesuatu di halaman ini diambil dari sumber-sumber di bawah ini, yang diakses pada 6 Agustus 2026 — pertama-tama dari panduan dan laporan teknis vendor itu sendiri, kemudian dari analisis tingkat sumber independen dan pencatatan on-chain. Angka kerugian masih terus direvisi ke atas: hitungan terkonfirmasi Galaxy Research berada di 1.596 BTC pada 4 Agustus, dengan dugaan kerugian mendekati 2.055 BTC.
- 1. Coinkite — COLDCARD Mk3 Seed Generation Security Advisory
- 2. Coinkite — Technical Deep Dive into the Entropy Issue
- 3. Block Engineering — Predictable RNG Fallback and 32-Bit Reseed in COLDCARD Firmware
- 4. CoinDesk — Bitcoin cold-wallet attack spreads to 4,500 addresses as losses near $89 million
- 5. CoinDesk — Major bitcoin wallet flaw drains 594 BTC in 25-minute sweep
- 6. Crypto Briefing (Galaxy Research) — Galaxy Research identifies 1,367 BTC drained in attacks on Coldcard addresses
- 7. The Crypto Times (Galaxy Research) — Coldcard hack losses hit $100M with 1,596 BTC stolen in ongoing attack
- 8. The Crypto Times (Galaxy Research) — 15 attackers exploit ongoing Coldcard hack as losses approach $130M
- 9. The Hacker News — Coldcard Hardware Wallet Flaw Linked to $70 Million Bitcoin Theft in 41 Minutes
- 10. Bitcoin Magazine — Coinkite Releases Fixed Firmware After Coldcard Bug
- 11. OneKey Anzen Lab — The COLDCARD Entropy Failure: How a Silent RNG Fallback Cost Users $38 Million
- 12. OneKey — Statement: OneKey devices are not affected by this issue
- 13. OneKey — OneKey has passed a security audit by SlowMist — separate reports cover the Pro, the Classic 1S and the SDK
- 14. SlowMist — SlowMist Audit Report — OneKey Pro
- 15. BugRap — OneKey Bug Bounty Program
- 16. entro.tools — Entropy Check — verify your hardware wallet's randomness (device support matrix)








