neprihlásený
|
Sobota, 23. novembra 2024, dnes má meniny Klement |
|
Ukážkové zlyhanie, Android Bitcoin peňaženka vytvárala duplicitnú adresu
Značky:
bezpečnosťprogramovanieAndroidBitcoin
DSL.sk, 1.6.2015
|
|
V populárnej Bitcoin peňaženke Bitcoin Wallet pre operačný systém Android od spoločnosti Blockchain sa nachádzali programátorské chyby, kvôli ktorým v niektorých prípadoch aplikácia závažným spôsobom zlyhala a vytvorila bez detekcie a upozornenia na viacerých zariadeniach rovnakú Bitcoin adresu.
Všetci užívatelia týchto zariadení mali samozrejme aj príslušný privátny kľúč a mohli tak disponovať všetkými Bitcoinami, ktoré boli na túto adresu poslané a to vrátane Bitcoinov poslaných iným užívateľom s rovnakou adresou.
Využívanie random.org
Viacerých chýb sa tvorcovia dopustili spôsobom využívania služby random.org na získavanie lepších náhodných čísiel, ktorými zrejme chceli zlepšiť entropiu náhodných dát vo svojej aplikácii.
Náhodné dáta zo služby získavali cez nešifrované HTTP API, ktoré od 4. januára ale služba prestala poskytovať a začala HTTP dotazy presmerovávať na HTTPS verziu. Telo odpovede cez HTTP začal tak tvoriť štandardný stále rovnaký oznam o presmerovaní s návratovým HTTP kódom 301.
Podľa tejto analýzy zdrojových kódov open source aplikácie Bitcoin Wallet tak od januára namiesto náhodných dát aplikácia preberala zo služby stále tie isté dáta v podobe tohto oznamu o presmerovaní, pričom podľa posledných zverejnených zdrojových kódov pred aktuálnou opravou chýb aplikácia tento problém nedetekovala.
Aplikácia tak používala konštantné dáta v domnení, že ide o kvalitné náhodné dáta.
Nepoužitie lokálnych náhodných dát
Dáta z random.org neboli síce jedinými náhodnými dátami využívanými aplikáciou, týmito dátami len zlepšovala pomocou volania metódy setSeed generátora náhodných čísiel náhodné dáta získavané z Android zariadenia.
V niektorých prípadoch na zrejme malom počte zariadení ale tento spôsob získavania náhodných čísiel evidentne nefungoval a nepoužili sa žiadne lokálne náhodné dáta. Čo presne spôsobovalo tento problém nepoužívania lokálnych jedinečných dát nie je zatiaľ jasné a potvrdené.
V každom prípade ho aplikácia tiež nezachytila a kvôli kombinácii s prvým problémom pre zatiaľ neznámy počet užívateľov reálne vygenerovala rovnaké náhodné dáta, rovnaký privátny kľúč a teda aj rovnakú Bitcoin adresu.
Vyššie spomenutá analýza ponúka niekoľko možných scenárov, k čomu mohlo prísť. Autori peňaženky v oznámení detaily neuvádzajú a iba tvrdia, že v niektorých prípadoch môžu "niektoré verzie Androidu neposkytovať dostatočnú entropiu".
Zrejme aby programátori obišli niektoré známe problémy v zabudovanom generátore náhodných čísiel SecureRandom v Androide 4.1 a nižšom používali implementáciu generátora náhodných čísiel LinuxSecureRandom čítajúcu náhodné dáta zo systémového zdroja náhodných dát /dev/urandom a tieto operáciou XOR kombinovali s dátami z random.org.
Podľa autora analýzy sa buď nová implementácia generátora nemusela korektne registrovať alebo iniciovať pre neprístupný /dev/urandom, prípadne tento systémový zdroj mohol dávať dáta bez entropie. Ak by sa LinuxSecureRandom neiniciovala správne, použila by sa štandardná implementácia SecureRandom, ktorá ale na Androide 4.1 a nižšom používa dodatočné náhodné dáta nastavené cez setSeed ako jediné iniciačné náhodné dáta stavu generátora.
Ak tak boli tieto seed dáta rovnaké na viacerých zariadeniach, k čomu v prípade Bitcoin Wallet kvôli používaniu stále rovnakého chybového oznámenia z random.org prichádzalo, generovali sa aj rovnaké náhodné čísla.
Ohrození sú aj ďalší užívatelia
Oba uvedené problémy ale potenciálne vyúsťujú aj do ďalšieho vážneho problému okrem fatálneho problému so zdieľanou adresou.
Podľa zatiaľ dostupných informácií a zdrojových kódov výskyt oboch problémov zrejme nesúvisel a druhý problém spôsobujúci nepoužitie náhodných dát priamo zo zariadenia užívateľa sa zrejme vyskytoval na zariadeniach s Androidom 4.1 a nižším aj pred januárom tohto roka.
Ak tomu tak bolo a aplikácia pri generovaní privátneho kľúča a Bitcoin adresy použila len náhodné dáta iniciované len z dát stiahnutých z random.org, útočník poznajúci dáta získané z random.org by zrejme vedel v prípade prejavenia problému nepoužitia lokálnych dát vygenerovať privátny kľúč a previesť si prostriedky z tejto adresy.
Keďže ale dáta boli sťahované z random.org cez nezabezpečený HTTP protokol, prístup k nim má okrem prevádzkovateľa random.org potenciálne aj hocikto schopný odchytiť dátovú prevádzku užívateľa.
Odporúčania
V prvom rade je užívateľom aplikácie Bitcoin Wallet od Blockchain odporúčané okamžite aktualizovať aplikáciu na verziu minimálne 4.0.22 vydanú na konci minulého týždňa, v ktorej boli chyby opravené. Sťahovanie náhodných dát z random.org bolo podľa zdrojových kódov úplne odstránené.
Predmetnou Bitcoin adresou, ktorá bola vygenerovaná pre viacerých užívateľov aplikácie, je 1Bn9ReEocMG1WEW1qYjuDrdFzEFFDCq43F. Užívateľom, ktorí ju majú medzi svojimi adresami, je samozrejme odporúčané túto adresu okamžite prestať používať.
Nie je jasné, koľkým užívateľom bola adresa vygenerovaná. Spolu na ňu doteraz od januára prišlo viac ako 34 BTC a minimálne časť z nich si následne previedli osoby, ktorým neboli Bitcoiny poslané. Podľa tejto informácie Blockchain ale straty užívateľov pokryla a minimálne jednému užívateľovi nahradila 6 BTC.
Hoci potenciálny útok na adresy vygenerované pri prejavení sa problému s nepoužitím lokálnych náhodných dát vyžaduje predchádzajúce odchytenie dát sťahovaných z random.org pred januárom, k problému prišlo zrejme len na veľmi malej časti zariadení s Androidom 4.1 a nižším a jeho pravdepodobnosť je tak relatívne nízka, pre úplnú istotu odolnosti proti takémuto útoku je tiež potrebné previesť prostriedky z adries vytvorených touto Bitcoin peňaženkou na Androide 4.1 a nižšom pred januárom na iné adresy.
Najnovšie články:
Diskusia:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Zdesenie
Od: Topky
|
Pridané:
1.6.2015 17:33
Z toho mrazi...
|
|
Re: Zdesenie
Od: AlbHert
|
Pridané:
1.6.2015 17:39
nenechaj sa tak lahko vykolajit. Ved je Zanety. Kup jej kvety a pekne sa na nu usmej.
|
|
No jasnee
Od: ParaNoik
|
Pridané:
1.6.2015 20:17
It's not a bug, it's a feature!
|
|
Ukážkové zlyhanie, Android Bitcoin peňaženka
Od: old
|
Pridané:
1.6.2015 20:59
dneska niekto ešte verí v bezpečnosť internetu?
|
|
jnugbn
Od reg.: Robert nie Fico
|
Pridané:
1.6.2015 21:23
Nuz nechcem byt zly, ale cely Android je jedno velke zlyhanie
|
|
Re: jnugbn
Od: fgs
|
Pridané:
1.6.2015 23:23
Dal som ti +
Sent from my Windows Phone...
|
|
Re: jnugbn
Od: XMen
|
Pridané:
2.6.2015 1:13
Super, len co s tym ma android? Aplikacia si chcela zlepsit generovanie nahodnych dat len jej to akosi nevyslo.
|
|
Re: jnugbn
Od: xzajo
|
Pridané:
3.6.2015 14:14
Co s tym ma android... no hlavne je tu mega diverzita android zariadeni. Kodovat pre vsetky android zariadenia, aby to fungovalo na 100% na vsetkych je nadludsky vykon. Zrejme na niektorych doslo k problemu s pristupom napr. ku kmitoctu procesora (oblubena random hodnota). Aj tak ale riadny fail, na tretiu stranu by som sa nikdy nespoliehal, a uz urcite nie v aplikacii, ktora robi s peniazmi/coinami.
|
|
To nie je chyba, tak to malo byť :)
Od: vsevec
|
Pridané:
2.6.2015 7:20
To nie je chyba, tak to malo byť :)
|
|
()==[::::::::::::::>
Od: flink
|
Pridané:
2.6.2015 10:01
ten random.org sice vracia http status 301 (moved permanently) ale zaroven vrati aj tie random cisla. Takze v tomto by problem nemal byt. Ale je mozne, ze to uz medzicasom zmenili, aby response nevracal stale to iste
|
Pridať komentár
|
|
|
|