neprihlásený Sobota, 4. mája 2024, dnes má meniny Florián
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.


      Zdieľaj na Twitteri



Najnovšie články:

Spotify zrejme pripravuje uvedenie bezstratovej kvality audia
Seriál Fallout podľa počítačovej hry si za 2 týždne pozrelo 65 miliónov ľudí
Železnice opäť aktualizujú systémy, v noci na nedeľu nebude fungovať internetový predaj lístkov
Satelit so solárnou plachtou je úspešne na orbite
K Microsoft účtom sa už dá prihlasovať bez hesla pomocou passkeys
O2 zvýšilo pokrytie 5G, podiel 5G zariadení rastie len pomaly
Telekom začal ponúkať nové programy Swipe pre mladých s veľkým objemom dát
Avizovaná nová verzia distribuovaného súborového systému Ceph, je v ňom viac ako exabajt
iPhony majú aktuálne problém s budíkmi, nebudia
Hubblov teleskop opäť funguje


Diskusia:
                               
 

Z toho mrazi...
Odpovedať Známka: -4.1 Hodnotiť:
 

nenechaj sa tak lahko vykolajit. Ved je Zanety. Kup jej kvety a pekne sa na nu usmej.
Odpovedať Známka: 9.0 Hodnotiť:
 

It's not a bug, it's a feature!
Odpovedať Známka: 8.8 Hodnotiť:
 

dneska niekto ešte verí v bezpečnosť internetu?
Odpovedať Známka: 2.9 Hodnotiť:
 

Nuz nechcem byt zly, ale cely Android je jedno velke zlyhanie
Odpovedať Známka: -3.3 Hodnotiť:
 

Dal som ti +
Sent from my Windows Phone...
Odpovedať Známka: -2.4 Hodnotiť:
 

Super, len co s tym ma android? Aplikacia si chcela zlepsit generovanie nahodnych dat len jej to akosi nevyslo.
Odpovedať Známka: 6.2 Hodnotiť:
 

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.
Odpovedať Známka: 3.3 Hodnotiť:
 

To nie je chyba, tak to malo byť :)
Odpovedať Známka: 1.4 Hodnotiť:
 

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
Odpovedať Známka: 3.3 Hodnotiť:

Pridať komentár