Buod ng insidente · 16 sanggunian · Anzen Lab

Apat na linyang code.
Mahigit 1,596 BTC ang nawala.

Noong Marso 2021, ang isang COLDCARD firmware build ay tumigil sa paghingi ng mga random na numero sa hardware chip nito at sa halip ay pinagawa ito ng ordinaryong software. Walang nakapansin nito sa loob ng limang taon. Noong Hulyo 2026, ginawa ng mga umaatake ang matematika at sinimulang ubusin ang mga wallet.

Ang halaga ng setting
5 taon
nanatili ang depekto sa ganap na pampublikong code, nang hindi napapansin1
1,596+ BTC
kumpirmadong ninakaw mula sa humigit-kumulang 7,300 na address, at patuloy pang tumataas7
41 min
ang pinakamalaking iisang pag-sweep: 1,083 BTC, mga $70 milyon noong panahong iyon9
1 sa isang trilyon
ang posibilidad na kinailangang lampasan ng umaatake sa isang Mk3. Ang disenyo ay nangangailangan ng isang pagkakataon sa isang numero na may 78 na digit1
Ang nagkamali

Isang safety check na naroroon, at walang ginawa

01

Nakasalalay ang lahat ng proteksyon sa isang numerong hindi mahuhulaan

Ang isang hardware wallet ay gumagawa ng ilang mga trabaho. Ipinapakita nito sa iyo kung ano ang aktwal mong pinipirmahan sa halip na hilingin sa iyong magtiwala sa screen ng isang kontaminadong computer, at pinapanatili nito ang iyong key sa loob ng isang chip na binuo upang labanan ang pagbubukas. Ang bawat isa sa mga depensang iyon ay nagpapalagay na ang numerong pinagmulan ng iyong key ay hindi nahulaan. Kung nagawa ito, hindi na kailangang dumaan ng umaatake sa alinman sa mga ito. Ang pool kung saan kinukuha ang 24-salitang parirala ay naglalaman ng humigit-kumulang isang numero para sa bawat libong atom sa nakikitang sansinukob. Ang isang pool na kasinglaki nito ay hindi maaaring hanapin. Iyon ang buong modelo ng seguridad.

Teknikal na detalye

Ang 12 na salita ay nagdadala ng 128 bits ng entropy, 24 ay nagdadala ng 256, kasama ang isang checksum mula sa SHA-256 ng entropy na iyon. Ang BIP-39 ay nagpapahaba ng resulta sa BIP-32 master key.

Teknikal na detalye

Ang 12 na salita ay nagdadala ng 128 bits ng entropy, 24 ay nagdadala ng 256, kasama ang isang checksum mula sa SHA-256 ng entropy na iyon. Ang BIP-39 ay nagpapahaba ng resulta sa BIP-32 master key.

02

Itinigil ng COLDCARD ang pagkuha mula sa pool na iyon

Ang isang pagbabago sa firmware noong 2021 ay tahimik na tumigil sa paghiling ng pitaka sa dedikadong randomness chip nito para sa numerong iyon, at nagkaroon ng ordinaryong software na kalkulahin ang isa sa halip. Magkatabi, ito ang buong insidente:

Hindi iyon seguridad na nabawasan nang dalawang-tatlo. Ang bawat bit ay nagdodoble sa trabaho, kaya ang 88 na mas kaunting mga bit ay nagpiliit sa trabaho sa pamamagitan ng factor na 2⁸⁸. Ang isang trilyon ay isang malaking numero sa isang tao at maliit sa isang taong umuupa ng mga makinang may mataas na pagganap upang tapusin ito.

Teknikal na detalye

Ang seed generation ay lumipat mula sa ckcc.rng_bytes() patungo sa ngu.random.bytes(). Tinatantya ng Coinkite ang tungkol sa 40 bits ng natitirang espasyo sa paghahanap sa Mk3 at mga 72 sa Mk4/Mk5/Q, laban sa isang 128-bit na target. Ang independiyenteng pagsusuri ng Block ay umabot sa parehong pagkakasunud-sunod (sa ilalim ng 2⁴⁰·⁷ at sa ilalim ng 2⁷³·³) at nakakahanap ng mas makitid na mga kondisyon kung saan mas mababa ang natitira.2

Teknikal na detalye

Ang seed generation ay lumipat mula sa ckcc.rng_bytes() patungo sa ngu.random.bytes(). Tinatantya ng Coinkite ang tungkol sa 40 bits ng natitirang espasyo sa paghahanap sa Mk3 at mga 72 sa Mk4/Mk5/Q, laban sa isang 128-bit na target. Ang independiyenteng pagsusuri ng Block ay umabot sa parehong pagkakasunud-sunod (sa ilalim ng 2⁴⁰·⁷ at sa ilalim ng 2⁷³·³) at nakakahanap ng mas makitid na mga kondisyon kung saan mas mababa ang natitira.2

Kung saan dapat kunin ang 24 na salita
115,792,089,237,316,195,423,570,985,008,687,907,853,269,984,665,640,564,039,457,584,007,913,129,639,936
Kung saan talaga kinuha ng COLDCARD
1,099,511,627,776
03

Dahil ang software ay hindi maaaring maging random

Isipin kung ano ang nagiging hindi nahuhulaan sa pagtapon ng bago. Ang lakas ng paghagis, gravity, hangin mula sa air conditioner, mahinang pagyanig sa lupa. Maraming impluwensya na maaari mong pangalanan at marami ang hindi mo magawa. Walang makakakalkula sa trajectory, kaya walang makakapagsabi ng resulta. Magkaiba ang takbo ng software. Nagpapatakbo ito ng nakapirming pormula sa ilang simulaing halaga at gumagawa ng nakapirming sagot. Dito, ang mga halagang iyon ay ang serial number ng chip at kung gaano katagal naka-on ang aparato. Ang isang umaatake na natutunan ang recipe at mga sangkap ay kinakalkula muli ang output sa halip na hulaan ito.

Teknikal na detalye

Sa hindi pinagana ang hardware RNG, ang rng_get() ay naka-link sa Yasmarang PRNG ng MicroPython, na naka-seed mula sa hindi sikretong estado (UID, SysTick, RTC) at hindi ito nakakolekta ng sariwang entropy pagkatapos noon, kaya ang mga kandidato ay nag-i-enumerate offline. Hindi isinasaalang-alang ng Coinkite ang mga seed na hinaluan ng 50 o higit pang patas, pribadong mga rolyo na nasa panganib mula sa isyung ito lamang: 50 × log₂6 ≈ 129 bits.3

Teknikal na detalye

Sa hindi pinagana ang hardware RNG, ang rng_get() ay naka-link sa Yasmarang PRNG ng MicroPython, na naka-seed mula sa hindi sikretong estado (UID, SysTick, RTC) at hindi ito nakakolekta ng sariwang entropy pagkatapos noon, kaya ang mga kandidato ay nag-i-enumerate offline. Hindi isinasaalang-alang ng Coinkite ang mga seed na hinaluan ng 50 o higit pang patas, pribadong mga rolyo na nasa panganib mula sa isyung ito lamang: 50 × log₂6 ≈ 129 bits.3

04

At ang tseke na nilalayong itigil ito ay nagtanong ng maling tanong

May bantay sa build, na isinulat partikular upang pigilan ang pagpapadala ng firmware nang walang hardware generator. Nagtanong ito kung may umiiral na setting, hindi kung nakabukas ang setting. Umiiral ang setting, at naka-off ito. Nanatiling tahimik ang bantay, walang iniulat na error ang build, at ipinadala ang firmware.

Teknikal na detalye

Ang #ifndef ay sumusubok lamang sa pagiging tinukoy. Tinukoy ng board config ang MICROPY_HW_ENABLE_RNG bilang 0, tinukoy at hindi pinagana, kaya ang #error ay hindi kailanman na-trigger at nilutas ng linker ang rng_get() sa software fallback.3

Teknikal na detalye

Ang #ifndef ay sumusubok lamang sa pagiging tinukoy. Tinukoy ng board config ang MICROPY_HW_ENABLE_RNG bilang 0, tinukoy at hindi pinagana, kaya ang #error ay hindi kailanman na-trigger at nilutas ng linker ang rng_get() sa software fallback.3

Ang depekto, na sinipi mula sa pinagmulan.3

05

Walang anuman tungkol dito ang nagmukhang mali sa loob ng limang taon

Ang mahinang recovery phrase ay kamukha ng malakas. Dalawampu't apat na ordinaryong salita, ang tamang checksum, isang device na normal ang kilos. Walang nagbabala sa iyo sa screen at walang error sa build. Ang pinagmulan ay pampubliko sa buong panahon. Ang pagbasa nito ay nangangailangan pa rin ng isang tao na buksan ang partikular na file na iyon.

Teknikal na detalye

Ang haba ng output, non-zero-ness at non-repetition ay pumasa lahat sa isang mahinang PRNG, kaya ang mga karaniwang pagsubok sa usok ay hindi rin ito nakuha.

Teknikal na detalye

Ang haba ng output, non-zero-ness at non-repetition ay pumasa lahat sa isang mahinang PRNG, kaya ang mga karaniwang pagsubok sa usok ay hindi rin ito nakuha.

06

Pagkatapos ay may gumawa ng aritmetika

Hindi kailanman hinawakan ng mga ito ang isang solong device. Binuo nila ang mga malamang na phrase sa kanilang sariling mga makina, nalaman kung aling mga Bitcoin address ang gagawa ng bawat isa, at sinuri ang mga address na iyon laban sa pampublikong blockchain. Ang bawat address na may dalang balanse ay inalis ang laman. Ang isang pitaka na nakaupo nang hindi naka-plug sa isang drawer mula noong 2022 ay eksaktong nakalantad tulad ng isa na ginagamit araw-araw.

Teknikal na detalye

Ang mga kandidato ay nagmula offline sa pamamagitan ng BIP-39/BIP-32; tanging ang huling paghahanap ng balanse ang sumasayad sa network, kaya walang signal sa panig ng biktima nang maaga.3

Teknikal na detalye

Ang mga kandidato ay nagmula offline sa pamamagitan ng BIP-39/BIP-32; tanging ang huling paghahanap ng balanse ang sumasayad sa network, kaya walang signal sa panig ng biktima nang maaga.3

Ang pahinang ito ay hindi isang tagumpay.

Inihayag ng Coinkite ang kapintasan, nag-publish ng teknikal na ulat at nagpadala ng pag-aayos. Ang mga mananaliksik sa labas ay maaaring muling buuin ang nangyari dahil ang COLDCARD ay open source.

Isang babala sa mga pagtatantya: inilalarawan ng mga ito kung gaano kalaking panghula ang kinakaharap ng isang umaatake sa ilalim ng kasalukuyang mga pagpapalagay, hindi isang stopwatch. Walang makapagsasabi sa iyo kung gaano katagal kukunin upang i-crack ang anumang partikular na pitaka.2

Kung nagmamay-ari ka ng COLDCARD

Basahin ito bago ang iba pa

Ang kailangan mong gawin ay nakasalalay sa kung aling device ang ginagamit mo nang unang ginawa ang recovery phrase, hindi kung alin ang hawak mo ngayon.

Ipagpalagay na nangyayari pa rin ito. Ang mga parirala ay ginawang nahuhulaan noong 2021 at ang pamamaraan ay pampubliko na ngayon, kaya sinuman ay maaaring magpatakbo ng parehong paghahanap. Walang patch na sumasara dito mula sa labas, at walang dahilan para huminto ang isang umaatake. Kung apektado ka, ang ligtas na pagpapalagay ay ang oras ang tanging bagay sa pagitan mo at nila.

Mk2 at Mk3: ilipat ang iyong mga barya ngayon

Ang apektadong saklaw ay ang firmware 4.0.1 hanggang 4.1.9. Ang bersyon 4.2.0 ay nag-aayos kung paano ginagawa ang mga bagong parirala, ngunit walang update ang makakabalik upang magdagdag ng randomness sa isang parirala na umiiral na. Gumawa ng bagong wallet sa isang aparatong pinagkakatiwalaan mo at ilipat ang iyong mga pondo roon.1

Mk4 at Mk5: suriin ang bersyon ng firmware

Kung ang parirala ay ginawa sa firmware na mas luma sa 5.6.0 (o 6.6.0X sa mga Edge build), i-update, lumikha ng bagong wallet sa na-update na firmware, pagkatapos ay ilipat ang iyong mga pondo. Ang pag-update nang mag-isa ay hindi nag-aayos ng lumang parirala.1

Q: pareho, ang cutoff ay 1.5.0Q

Mag-update sa 1.5.0Q o mas bago, o 6.6.0QX sa mga binuong Edge, gumawa ng bagong wallet, isulat at subukan ang backup, magpadala ng isang maliit na transaksyong pagsubok, pagkatapos ay ilipat ang natitira.1

Inaayos ba ng pag-update ng firmware ng COLDCARD ang recovery phrase na mayroon na ako?

Paano ko malalaman kung aling firmware ang lumikha ng aking COLDCARD recovery phrase?

Paano ko susuriin kung nadamay ang aking address sa usaping ito?

Pinoprotektahan ba ng pag-rolyo ng dice o ng passphrase ang isang COLDCARD recovery phrase?

Saklaw ba ng abiso ng Coinkite ang bawat apektadong COLDCARD?

Opisyal na teknikal na abiso ng CoinkiteLumipat sa isang bagong wallet sa isang device na pinagkakatiwalaan mo na, at magpadala ng isang maliit na test transaction bago ilipat ang lahat. Panatilihin ang pampublikong ebidensya (mga transaction ID, address, timestamp) at huwag kailanman magtago ng sikreto. Ang sinumang nag-aalok na bawiin ang iyong mga pondo ay pangalawang pagnanakaw na isinasagawa, at walang ganoong serbisyo na umiiral. Ang hardware na bibilhin sa susunod ay maaaring maghintay hanggang ligtas na ang iyong mga barya.
At kung nagmamay-ari ka ng OneKey

Walang device ng OneKey ang apektado

Hindi kahit isang modelo na ipinadala namin. Ang aming firmware ay walang libngu, Coinkite, COLDCARD o CKCC dependency, kaya ang code path na nabigo ay wala doon upang maabot, at maaari mong suriin iyon mismo sa aming mga repository. Sa aming kasalukuyang hardware ang key ay nagmumula sa tunay na random generator sa loob ng isang sertipikadong secure element, hindi kailanman mula sa software sa main processor. Ang pagpapalit na iyon ay kung ano ang pagkabigong ito.

Hindi apektado
OneKey Pro
OneKey Classic 1S
OneKey Classic 1S Pure
OneKey Touch
OneKey Classic
OneKey Mini

Hindi rin namin iyon kinuha sa pagtitiwala. Nang sumabog ang balita, sinundan ng Anzen Lab ang aming randomness mula simula hanggang wakas (kung saan ito nagmumula, kung ano ang tumatawag dito, at ang mga setting ng build na nagpapasya kung aling bersyon ang aabot sa iyong device) at nai-publish ang eksaktong mga file na sinuri nila.12

Basahin ang muling pagsusuri ng Anzen Lab
Ang tanong na talagang tinatanong mo

Maaari bang nangyari ito sa isang OneKey?

Ang pagkabigong ito ay nangailangan ng tatlong magkahiwalay na bagay na maging totoo nang sabay-sabay. Sa isang OneKey wala sa kanila ang totoo, at maaari mong suriin ang lahat ng tatlo sa iyong sarili.

Kung saan nagmumula ang sa atin

Kaya saan nanggagaling ang randomness ng OneKey?

Ginawa sa loob ng isang chip na sertipikado ng EAL 6+

Ang iyong mga key ay ginawa at itinatago sa loob ng isang dedikado at lumalaban sa pakikialam na chip sa halip na sa pangkalahatang processor na nagpapatakbo sa iba pa. Ang EAL 6+ ay ang antas ng katiyakan na ginagamit para sa mga payment at identity card.

Randomness na nagbabantay sa sarili

Ang chip na iyon ay bumubuo ng randomness mula sa totoong pisikal na ingay, at patuloy na sinusubukan ang sarili nitong output. Kung ang randomness ay magsimulang umasal nang hindi tama, napapansin ito ng chip sa halip na tahimik na magpatuloy.

Pumunta kami at sinuri muli ang sa amin

Matapos ang balita sa COLDCARD, sinundan ng Anzen Lab ang aming sariling randomness sa buong paraan (kung saan ito nagmumula, kung ano ang aktwal na tumatawag dito, at ang mga setting ng build na nagpapasya kung aling bersyon ang mapupunta sa iyong device) at nai-publish ang eksaktong mga file na tiningnan nila.11

OneKey Pro's EAL 6+ certified secure element
EAL 6+ Badge
Bawat transaksyon, pinoprotektahan ng EAL 6+ certified chips
Saan ginawa ang randomness
Secure element
THD89
Antas ng katiyakan
Sertipikadong EAL 6+
Pinagmulan ng entropy
Hardware TRNG, nagsusuri sa sarili
Output na sertipikado laban sa
BSI AIS 20 / 31
Muling sinuri pagkatapos ng insidenteng ito
Anzen Lab, nai-publish ang pinagmulan
Paano binuo ang OneKey, at sino ang sumusuri nito

Apat na pagsusuri sa bawat OneKey, at walang nagtitiwala sa iba pang tatlo

Aluman sa mga ito ay maaaring may makaligtaan. Ang punto ay kailangang pare-parehong may makaligtaan ang apat na ito. Walang ganyang panangga ang COLDCARD: ang isang hindi sinuring setting ng pag-build ay sapat na.

01

Open source na talagang maaari mong i-verify

Ang aming firmware at mga app ay pampubliko sa GitHub, at ang aming mga build ay nabubuo muli, na nangangahulugang maaari mong muling itayo ang code mismo at kumpirmahin na gumagawa ito ng eksaktong software na tumatakbo sa iyong device. Iyon ang hakbang na nakakabuli sa problema ng "tamang code, maling bersyon".

OneKey sa GitHub
02
SlowMist

Sinusuri kami ng mga tagalabas, sa talaan

Ina-audit kami ng kumpanya ng seguridad na SlowMist at pinaglalathala ang mga ulat. Ang mga hiwalay na pagtatasa ay sumasaklaw sa OneKey Pro, ang Classic 1S at ang aming SDK. Ang aming mga kasanayan sa seguridad ay sertipikado sa ISO/IEC 27001, at ang Pro at Classic 1S na linya ay sertipikado laban sa EN 18031 ng isang katawan na hinirang ng EU. Lahat ng ito ay nai-publish, wala sa sarili nitong tinasa.13

Basahin ang buod ng pag-audit ng SlowMist
03

Isang koponan na binabayaran upang sirain ang aming sariling mga produkto

Ang Anzen Lab ay ang aming in-house na koponan ng seguridad ng hardware, firmware at application security engineers, na nakikipagtulungan sa isang umiikot na hanay ng mga panlabas na mananaliksik. Ang kanilang trabaho ay sirain ang mga hardware wallet, kasama ang sa amin, bago maipadala ang anuman. Nang sumabog ang kwentong ito, sinuri nilang muli ang sariling randomness ng OneKey mula simula hanggang wakas at inilathala nang eksakto kung aling mga file ang sinuri nila.11

Basahin ang pagsusuri ng Anzen Lab
04

Binabayaran namin ang mga estranghero upang mahanap ang aming mga pagkakamali

Kahit sino ay maaaring mag-ulat ng depekto sa amin nang pribado, sa pamamagitan ng aming publikong programa sa BugRap o diretso sa [email protected], at mabayaran para rito. Ang tindi ng depekto ang nagiging batayan ng bayad, na nakabatay sa CVSS. Ang layunin ay gawing mas kaakit-akit ang pag-uulat sa amin kaysa sa pagbebenta nito.15

OneKey sa BugRap
entro.tools · Binuo ng aming tagapagtatag

Subukan ang wallet sa iyong kamay

Ang entro.tools ay isang libre, open-source na tool na nagbabasa ng mga aktwal na random na numero na lumalabas sa isang hardware wallet at nagpapatakbo ng mga karaniwang pagsusuri sa kalusugan ng istatistika sa mga ito, sa iyong browser, sa pamamagitan ng USB, na walang na-upload kahit saan at walang kinakailangang pag-update ng firmware.

Gumagana ito sa Trezor at KeepKey pati na rin sa aming sariling mga device, kaya maaari mong ihambing ang mga ito nang magkatabi sa halip na magtiwala sa pag-angkin ng sinumang nag-iisa vendor.
Paano ito tumatakbo
Sa iyong browser, sa pamamagitan ng WebUSB
Inilapat na mga pagsubok
FIPS 140-2, NIST SP 800-22 / 90B
Ang iyong data
Hindi kailanman umaalis sa pahina
Pag-update ng firmware
Hindi kinakailangan
Suriin ang Entropy

Nagpapatakbo ng mga pagsusuri sa kalusugan ng FIPS 140-2, NIST SP 800-22 at SP 800-90B nang lokal sa ibabaw ng WebUSB (desktop Chrome o Edge). Hinihiling ng device na i-export ang entropy, isang batch ng mga random na numero na ginawa lamang nito, hindi kailanman ang iyong recovery phrase.16

Ang universal test ni Maurer ay nangangailangan ng hindi bababa sa 387,840 bits; sa ibaba nito, minamarkahan ito ng ulat bilang nilaktawan sa halip na tahimik na alisin.16

Aling mga pitaka ang maaaring suriin

Kung ang isang tagalabas ay maaaring magbasa ng mga hilaw na random na numero ng isang device sa lahat. Ito ay isang makitid na dimensyon. Tingnan ang tala sa ibaba nito.

OneKey
Na-verify mo nang mag-isa
Lahat ng modelo, stock firmware16
Trezor
Na-verify mo nang mag-isa
Lahat ng modelo, nakabahaging wire protocol16
KeepKey
Na-verify mo nang mag-isa
Pamilya ng Trezor wire-protocol16
Ledger
Magtiwala sa vendor
Saradong secure element; walang host command na naglalantad ng mga raw random number16
BitBox02
Magtiwala sa vendor
Ang kahilingan ng random-number ng protocol ay tinanggal ng vendor16
Blockstream Jade
Magtiwala sa vendor
Ang host ay maaari lamang magdagdag ng entropy; walang paraan upang basahin muli ang pinagmulan16
COLDCARD
Magtiwala sa vendor
May USB, ngunit ang protocol nito ay walang command ng entropy sa lahat16
Keystone
Magtiwala sa vendor
Air-gapped sa pamamagitan ng disenyo; ang USB ay nagdadala lamang ng impormasyon ng device at mga pag-update ng firmware16
Ang "Hindi masubukan" at "hindi secure" ay magkaibang mga pag-angkin. Ang mga saradong secure element ay sumusunod sa kanilang sariling landas ng sertipikasyon. Ang isang pumasa na resulta ay nagpapatunay lamang na walang statistical defect na lumilitaw ngayon. Hindi nito mapatunayan ang cryptographic unpredictability, at wala itong sinasabi tungkol sa randomness na ginamit sa araw na ginawa ang iyong wallet.
May mga katanungan pa ba

Mga tanong na ibinangon nito para sa iba

Apektado ba ang OneKey ng pagkabigo sa entropy ng COLDCARD?

Aling mga hardware wallet ang apektado ng pagkabigo sa entropy ng COLDCARD?

Maaari ko bang subukan ang pagiging random ng aking sariling wallet?

Paano ko huhusgahan kung ang isang hardware wallet ay mapagkakatiwalaan?

Seguridad na maaari mong suriin, hindi seguridad na hinihiling sa iyong paniwalaan.

Open source at nabubuo muli, sinuri ng mga tagalabas, sinalakay ng aming sariling lab, at binayaran kapag may nakitang butas ang isang tao. Ito ang mga device na tinatalakay ng argumentong ito.

Cold Storage Weeks
Hanggang $50 na Bitcoin sa bawat device, hanggang Agosto 17.

Mga Sanggunian

Mga pinagmulan sa ibaba, nakuha noong Agosto 6, 2026. Ang sariling advisory at teknikal na ulat ng Coinkite ang nauna, pagkatapos ay ang independiyenteng pagsusuri sa antas ng pinagmulan at on-chain accounting. Ang mga numero ng pagkawala ay binabago pa rin pataas: Kinumpirma ng Galaxy Research ang 1,596 BTC noong Agosto 4 at inilagay ang mga pinaghihinalaang pagkawala na malapit sa 2,055 BTC.