Menu

Jak se chránit před USSD útokem?

Minulý týden jsme ve článku Samsung má problém: zranitelnost dovoluje smazat obsah telefonu informovali o vážné bezpečnostní chybě, spočívající v automatickém spuštění tzv. “USSD příkazu” načtením QR kódu, skrze NFC, push WAP zprávou, nebo otevřením odkazu. Původně byla za viníka považována nadstavba TouchWiz, následně se spekulovalo o tom, že postiženy jsou pouze telefony Samsung, dalšími obviněnými byla aplikace Číselník a výchozí webový prohlížeč. Postupem času se ale ukázalo, že problém je daleko širší a dotýká se i telefonů jiných značek. Nakonec byl za viníka označen samotný operační systém Android, konkrétně verze 4.0.x a nižší.

Podívejte se, jak Sobre Ravi Borgaonkar prezentoval chybu na bezpečnostní konferenci Ekoparty v argentinském Buenos Aires.

V redakčním testu jsme například prokázali možnost spuštění USSD kódu pro zobrazení IMEI na Samsungu Galaxy S II s alternativní ROM CyanogenMod 9.1 s Androidem 4.0.4 Ice Cream Sandwich a prohlížečem Chrome. Samsung již vydal aktualizaci pro Galaxy S III, která blokuje automatické “vytočení” USSD příkazů. Podobně se zachoval Google, který zalátal bezpečnostní trhlinu vydáním Androidu 4.1.1, ovšem uživatelé neaktualizovaných telefonů jsou nadále v nebezpečí. Podle informací serveru Digital Trends jsou ohrožena následující zařízení:

  • HTC Desire HD
  • HTC Desire Z
  • HTC Legend
  • HTC One W
  • HTC One X
  • HTC Sensation (XE) (s Androidem 4.0.3)
  • Huawei Ideos
  • Motorola Atrix 4G
  • Motorola Milestone
  • Motorola Razr (s Androidem 2.3.6)
  • Samsung Galaxy Ace
  • Samsung Galaxy Beam
  • Samsung Galaxy S Advance
  • Samsung Galaxy S II
  • Samsung Galaxy S III (s Androidem 4.0.4)

Na uvedených telefonech je teoreticky možné provést reset do továrního nastavení pouhým načtením speciálního řetězce (“USSD příkazu”), čímž samozřejmě dojde ke kompletní ztrátě veškerých dat, nicméně skutečné potvrzená je schopnost smazat telefon pouze u Samsungů.

To, zda je zranitelný i váš telefon, si můžete ověřit jedním z následujících testů.

Pokud se po kliknutí na odkaz na testovací stránce zobrazí IMEI vašeho telefonu, je zařízení potenciálně zranitelné.

Co jsou USSD příkazy?

Pravděpodobně jste na ně již narazili při běžných činnostech, jako je zjištění zůstatku kreditu, nebo stavu vašeho účtu u operátora. Stačí zadat na číselníku telefonu určitý řetězec, skládající se z číslic, hvězdiček a křížků, a během okamžiku se na displeji objeví požadovaná informace. Právě jste v praxi využili takzvaných USSD příkazů (Unstructured Supplementary Service Data neboli Nestrukturovaná data doplňkové služby).

USSD se ale používá i pro jiné účely – pro mobilní platby, aktualizace sociálních sítí, ale také třeba pro zobrazení některých informací o telefonu (viz výše uvedené testy, které k zobrazení IMEI využívají univerzální USSD kód *#06#), nebo pro vstup do servisního menu. Každý výrobce přitom může implementovat vlastní USSD kódy, takže například řetězec, kterým provedete tovární reset na telefonech Samsung, nebude fungovat na zařízeních HTC apod.

Kdy jsou USSD příkazy nebezpečné?

Příkazy samy o sobě nebezpečné nejsou. Chyba, kterou prezentoval Ravi Borgaonkar, spočívá ve způsobu, jakým telefony zpracovávají odkaz, obsahující řetězec “tel:”. Jde o obdobu odkazu začínajícího “mailto:”, jež se používá pro hypertextové odkazy, které mají být otevřeny nikoli v prohlížeči, ale ve výchozím e-mailovém klientovi. Odkaz, obsahující řetězec “tel:”, považují mobilní webové prohlížeče za telefonní číslo, které otevřou v aplikaci pro vytáčení čísel (zpravidla se nazývá Telefon nebo Číselník). Problém spočívá v tom, že některé telefony nenechají poslední krok – stisknutí zeleného tlačítka pro zahájení vytáčení – na uživateli, ale hned číslo vytočí. Dostáváme se k jádru pudla: pokud je oním “telefonním číslem” řetězec pro obnovení telefonu do továrního nastavení, nemá uživatel šanci zabránit tomu, aby telefon číslo “vytočil” a spustil tak nevratný a nezastavitelný proces. Některé telefony ale před touto operací požadují potvrzení uživatelem.

Uvědomme si ale jednu podstatnou věc: pro většinu autorů škodlivých programů není zajímavé smazat uživateli obsah telefonu. To patří do repertoáru virů z dob dávno minulých. Dnešní malware se snaží o co možná největší nenápadnost, aby mohl provádět například sledování, či jiné činnosti co možná nejdéle. Je tedy otázkou, jak se tento způsob útoku rozšíří. Dá se předpokládat, že bude spíše doménou zlomyslných “script-kiddies” – zpravidla náctiletých dětí, kterým bude k radosti stačit vědomí, že někdo přišel o data v telefonu.

Jak se tedy chránit před útokem?

    • V případě Galaxy S III aktualizujte na poslední dostupnou verzi firmware, která opravuje uvedenou chybu.
    • Jestliže je pro váš telefon dostupný Android 4.1 Jelly Bean, je řešením provedení aktualizace. V tuto chvíli není známo, že by byl Jelly Bean náchylný na uvedený způsob útoku. Smůlu mají v tomto směru všichni, jejichž výrobce či operátor ještě neuvolnil Jelly Bean pro daný model, případně s aktualizací na poslední verzi Androidu vůbec nepočítá.
    • Nainstalujte si alternativní aplikaci pro vytáčení telefonních čísel. V případě, že telefon dostane požadavek na zpracování telefonního čísla, zobrazí se nejprve dialog s dotazem, kterou aplikaci chcete použít. Nedojde tak k automatickému vytočení čísla a tedy ani škodlivého USSD příkazu. Oblíbené a zdarma jsou například Dialer One či exDialer, fungující na Androidu 2.x a vyšším.

Dialer One
Yermek Zhumagulov
Verze1.3.5 (17. 3. 2012)
Velikost961 kB
2.0+


Zdarma

 


exDialer
Modoohut
Verze110 (17. 8. 2012)
Velikost1,2 MB
2.1+


Zdarma

 

    • Další možností je blokovat zpracování odkazů, obsahujících řetězec “tel:”. K tomuto účelu lze využít hned několik aplikací, fungujících v podstatě jako alternativní aplikace pro vytáčení telefonních čísel. Pokud telefon zaznamená požadavek na vytočení telefonního čísla, dostane uživatel na výběr, kterou aplikací ho chce zpracovat. Opět tak nedojde k automatickému zpracování USSD příkazu. Některé aplikace pak USSD příkazy zablokují. Za všechny jmenujme G Data USSD Filter, TelStop, NoUSSD, nebo NoTelURL. Účinnost těchto programů můžete vyzkoušet na jednom z výše uvedených testů.
Pokud otevřete nebezpečný odkaz, zobrazí se dotaz, jakou aplikací ho chcete zpracovat

Pokud otevřete nebezpečný odkaz, zobrazí se dotaz, jakou aplikací ho chcete zpracovat

Takto blokuje USSD příkaz aplikace G Data USSD Filter

Takto blokuje USSD příkaz aplikace G Data USSD Filter

Takto blokuje USSD příkaz aplikace TelStop

Takto blokuje USSD příkaz aplikace TelStop

Takto blokuje USSD příkaz aplikace NoUSSD

Takto blokuje USSD příkaz aplikace NoUSSD

Takto blokuje USSD příkaz aplikace NoTelURL

Takto blokuje USSD příkaz aplikace NoTelURL

G Data USSD Filter
G Data Software AG
Verze1.1 (27. 9. 2012)
Velikost258 kB
2.2+


Zdarma

 


TelStop
Collin Mulliner
Verze1.9 (30. 9. 2012)
Velikost12 kB
1.0+


Zdarma

 


NoUSSD
Erik C. Thauvin
Verze1.0 (27. 9. 2012)
Velikost155 kB
2.2+


Zdarma

 


NoTelURL
Joerg Voss
Verze1.2 (29. 9. 2012)
Velikost157 kB
2.0.1+


Zdarma

 

  • Zálohujte svůj telefon – toto pravidlo by mělo platit nejen v případě aktuálně hrozícího útoku, ale v podstatě pořád. Nikdy nemůžete vědět, kdy se váš telefon porouchá, nebo ho ztratíte, či skončí v rukách zloděje. Pravidelné (nejlépe automatické) zálohování kontaktů, fotek, videí a dat by mělo patřit k naprosté samozřejmosti.

Zdroje: Digital Trends, Security Watch a The H Open.

 

Komentáře

Libb

Libb

3.10.2012 7:07

Nevím, jestli jste ty rady zkoušeli, ale na mém Samsungu Galaxy S III je právě kombinace Android 4.1.1 + exDialer zranitelná :-( Když jdu na tu testovací stránku, zobrazí se mně volba, jestli chci použít Číselník (exDialer) nebo Telefon (originální aplikace). V případě originální aplikace se nestane nic, v případě exDialeru se zobrazí IMEI :-(
Pozn. Používám Omega ROM 21 založenou ještě na neoficiálním firmware, je tu tedy jistá malá pravděpodobnost, že na Omega 27.1+ nebo origo ROM to dělat nebude

Albion66

Albion66

3.10.2012 7:57

Bylo by dobré poznamenat,než začnou uživatelé instalovat zmíněné aplikace, zda-li již někdo tento “útok” na smartphone zažil. Zranitelnost systému byla představena na Ekoparty, avšak jsem ještě neslyšel, že by se to již někomu přihodilo. Samozřejmě možnost že k tomu může dojít zde je, avšak jsem neslyšel o jediném případu praktického ataku. Není to výzva k tomu, aby uživatelé tento problém neřešili, ale spíše mne zajímá, zda-li již k tomuto někde došlo. Osobně jsem testoval obě zmíněné varianty řešení a doporučuji app k zastavení provedení USSD příkazu více než druhý dialer. A jak jsem psal již v minulé diskuzi, ZÁLOHOVAT, ZÁLOHOVAT, ZÁLOHOVAT..:-)

JirkaS

JirkaS

3.10.2012 8:02

Libb: To jsi trochu nepochopil, protože přesně tak se to má chovat. Místo toho, aby to rovnou něco udělalo, tak se to zeptá, kterou aplikaci na to chceš použít. A ty víš, že se něco děje a nepoužiješ žádnou (zmáčkneš ‘back’). Pokud nějakou použiješ, tak se nediv…

Bruk

Bruk

3.10.2012 8:07

Asus Padfon, Android ICS 4.0.4 – zranitelnost potvrzena :-(

indigo

indigo

3.10.2012 8:20

Další možností je Avast, který USSD kódy zablokuje.

Lukáš

Lukáš

3.10.2012 8:23

Avast v poslední aktualizaci přidal svůj vlastní dialer a ten kontroluje volaná čísla, pro testovací útok mi napsal, že jde pravděpodobně o pokus o zneužití ;-)

Cezz

Cezz

3.10.2012 8:28

No neviem, mne sa skor zda, ze toto je vyslovene zranitelnost dialera. Je pravda, ze v JB to fixli, ale ako pisal niekto vyssie, alternativne dialery su stale zranitelne
Dalej tiez nie je pravda, ze problem je, ze dialer cislo rovno vytoci. Pokial viem, tak vsetky (alebo vacsina) to neurobi. Problem je, ze na vykonanie USSD kodu nie je potrebne ho potvrdit zelenym tlacidlom – je vykonany po stlaceni posledneho znaku sekvencie. Riesenim je pouzivat dialer, ktory USSD ignoruje – ja pouzivam Dialer one. Kludne ako default, ziadne cislo nevytoci, caka na potvrdenie tlacidlom “volat”. Vyskusane na Androide 2.3 na Xperia Pro (ktora so vstavanym dialerom zobrazila IMEI, USSD kod pre factory reset som neskusal)

xxx

xxx

3.10.2012 9:09

Dobrý den, v článku je několik nepřesností:

1) Celý problém je způsoben chybou dialeru* (telefonu, číselníku) – neohlídáním základní podmínky. Viz bod 2.

2) Problém se netýká USSD kódů, ale kódů zařízení (v angličtině secret codes). USSD http://en.wikipedia.org/wiki/Unstructured_Supplementary_Service_Data je standardizovaný komunikační protokol využívaný v GSM sítích. Na telefonu je naťukán kód a ODESLÁN operátorovi (právě stiskem vytáčecího tlačítka). Většina lidí se s ním setkala ve formě kódu pro zjištění kreditu. Kódy zařízení se naproti tomu nikam neodesílají a aktivují se ZADÁNÍM POSLEDNÍHO TLAČÍTKA SEKVENCE. A právě neohlídáním této podmínky dochází ke zranitelnosti – toto je plně v režii aplikace pro vytáčení.

OCHRANA
Zbavit se děravého SW – nahradit VÝCHOZÍ dialer. Ještě je možnost použít SW na ochranu právě před touto chybou. (Ovšem jde taky o nahrazení výchozího dialeru. Aplikaci je nutné nastavit jako výchozí dialer a ona potom přebírá žádosti od ostatních aplikací a (po případné úpravě) je posílá dialeru pro vytáčení.

Byl bych rád, kdybyste nepřesnosti v článku upravili. Ohledně tohoto problému mám nějaké ty znalosti a vy jste můj oblíbený server. Takže kdybyste měli nějaké dotazy, mail jsem uvedl pravý :)

PPS: Pro otestování mobilů jsem vytvořil jednoduchý skript, který vytvoří odkaz s kódem jaký mu zadáte. Tak si můžete ověřit, jestli je Váš dialer zranitelný.
http://na.tym.sk/i/binec/test/test-ussd.html

* Nejčastěji zmiňovaný útok využíval ještě chybu v prohlížečích ohledně načítání vložených rámců, ale tato chyba je sama o sobě neškodná. Pokud není na telefonu zranitelný dialer, kód se neprovede.

Martin Fořt

Martin Fořt

3.10.2012 9:17

HTC Evo 4.0.3 stock pozitivní. Nicméně alespoň mi vyskočil výběr aplikace (Avast a stock dialer) – stock dialer krásně zobrazil IMEI, Avast zařve a blokuje.

Libb

Libb

3.10.2012 10:00

JirkaS: ale pochopil, ten výběr tam mám já navíc, pokud bych ale jednou potvrdil jako výchozí exDialer, už se to provede bez ptaní. Mám to schválně nechané bez výchozího nastavení právě kvůli tomuhle útoku, ale rada “přejděte na exDialer” je nebezpečná, protože právě zanese tu zranitelnost i na jinak obrněný telefon.

Jakub Horak

Jakub Horak

3.10.2012 10:29

Android 2.3.3. LG optimus one. Originalni dialer. Zeptal se, jestli pokracovat pres zpravu a nebo telefon. Dal sem telefon a cislo se objevilo zadany, ale nic se nevytocilo. Takze pohoda :)

xxx

xxx

3.10.2012 11:11

@ Jakub Horak: Dialer na LG OO se chová korektně. Kód potvrzuje zadáním posledního znaku z klávesnice. Schválně si zkuste načíst kód, umazat poslední znak a znovu ho zadat :)

Pavel Hykš

Pavel Hykš

3.10.2012 13:21

Zkoušel jsem na HTC Evo 3D s Androidem 4.0.3 od výrobce, a IMEI po načtení stránky ukáže bez dotazu přes zabudovaný prohlížeč, Dolphin i Chrome…

Radek

Radek

3.10.2012 14:25

Mam SGS 3, Android 4.0.4, Dialer One. Testovaci stranka mi zobrazi vyzvu na volbu dialeru. Ani kdyz zvolim zabudovany dialer se IMEI nezobrazi, i kdyz USSD prikaz tam zobrazen je. Takze navdory vsemu uvedenemu je muj telefon odolny i kdyz by nemel byt.
Zajimavy poznatek: zkuste pouzit Operu, ta skodlivy kod sama zablokuje. Jinak jsem zkousel zabudovany browser, Dolphin, Firefox – vsechny kod propustily.

Karelk

Karel Kiliánexternista 13

3.10.2012 15:49

To: xxx
Dobrý den,

v první řadě děkuji za věcné připomínky.

1.) číselník – pokud tedy nejde o aplikaci třetí strany – je součást systému, čili bych to označil jako systémovou chybu. Ostatně – na SGS3 to vyřešila aktualizace firmware.

2.) ad. USSD – ano, z hlediska přesné specifikace máte samozřejmě pravdu. Nicméně obecně se této formě útoku říká “USSD attack” a to nikoli náhodou. Podle některých zdrojů je takto možné i zablokovat SIM – a to by USSD bylo. Samozřejmě reset telefonu do továru – to máte pravdu, tak úplně USSD kód není.

Ve zbytku se asi shodneme :)

x14

x14

3.10.2012 16:07

Ach jo :-( Proč podle chybné interpunkce vždy poznám autora?

Jakub Horák

Jakub Horák

3.10.2012 17:26

xxx: to sice jo, ale pokud je sam nevytoci, tak to preci znamena, ze mi nic nehrozi, ne? :)

xxx

xxx

3.10.2012 18:53

@Jakub Horák: Přesně tak :)
@Karel Kilián: 1) Tohle by bylo na delší diskuzi. Android sice obsahuje svůj dialer, ale Samsungy používají vlastní a „USSD“ kódy jsou čistě v režii výrobce HW.
2) To nemělo být rýpání, spíš doplňující informace. O odeslání opravdového USSD jsem nevěděl (zdroj?). Jestli nějaký dialer sám vytáčí po obdržení čísla přes tel:, tak je to neuvěřitelná chyba.

TomasKobr.lbc

TomasKobr.lbc

3.10.2012 23:01

Libb opet spatne. Nectete. DialerOne klidne vyberte, on proste kod neodesle. Bude cekat na potvrzeni zelenym tlacitkem.

Roman161

Roman161

4.10.2012 0:02

Já nevím,jestli tu nebudu za nooba,ale nemám (zatím,ještě jsem se neodhodlal) žádnou custom romku na Note,ale tohle mi prostě zablokoval Avast…

Karelk

Karel Kiliánexternista 13

4.10.2012 15:46

To: xxx
Dobrý den,

velice si cením doplňujících informací – jako rýpání jsem je v žádném případě nebral! :)
Ad. dialer – to by asi byla spíše filozofická debata, zda dialer, který do systému nahraje výrobce telefonu, je ještě systémovou aplikací, nebo nikoli – a zda se tedy jedná o chybu v systému :).
Nicméně uvedeným problémem trpí i některé telefony HTC, Motorola apod..

Ohledně toho zablokování SIM viz http://pcworld.cz/novinky/bezpecnostni-dira-v-androidu-hrozi-trvalym-poskozenim-sim-karty-44945 Nicméně patrně zase nejde o “pravé” USSD.
Nepopírám, že jsem terminologii převzal z uvedených zdrojů, které v tom – zjevně – také nemají jasno.
Proto jsem upřímně rád, že jsem si díky Vašemu komentáři rozšířil obzory a znalosti :) Děkuji!

pedro1

pedro1

4.10.2012 18:30

Zdravim, jak uz jsem psal drive, pouzijte prohlizec Opera, ta to rovnou zablokuje, dale pokracuje jen po vasi interakci, a stejne se pak USSD zobrazi v dialeru a ceka na potvrzeni. Takze zadne nebezpeci. Mam cyanogenmod 7.2.0.1 a je tam origo dialer, takze bez obav :). Jo telefon HTC Desire

ruups

ruups

5.10.2012 0:32

Orange SanDiego s 2.3.7 tym trpi tak isto …

garcia

garcia

5.10.2012 8:32

galaxy ace 2 taktiez zranitelny s default dialerom… pouzivam xPhone dialer a ten kod nespusta..

Petr

Petr

5.10.2012 16:49

By to asi chtělo spravit Cyanogenmod 7.2…

Ferency

Ferency

12.10.2012 16:15

Jelikož jsou uživatelé zákazníci a kupují tzn. utrácejí za HW i SW bych čekal komplexnější řešení od distributora.Jinak se potvrzuje že otevřenost a rychlí vývoj ……

Netopejr

Netopejr

13.10.2012 1:03

Pěný inu … Na mém SGSII s původní verzí androida 2.3.5 mi to ukázalo IMEI.
Používám ale placený sw od Esetu (perfektní)a ten uvedl zdarma doplněk …
link: http://www.eset.com/tools/ussdtest/

A po použití, již to zařve a jednak to žádá vaši interakci, tak zároveň po potvrzení NE – je tam i možnost ANO – tak to vypíše co by asi dělal daný kód … a je to zcela zablokované (jde ten to doplněk nastavit jako prioritní) a pokud je zadán (jaký-koli způsob – QR atd.)tak vždy se to zeptá co dále …

Iveta

Iveta

9.5.2014 18:59

Zdravím, chtěla bych se zeptat jak se zbavit toho hnusu. Při vytáčení čísla a i během hovoru mi naskočí “Kod USSD je spuštěn”, mám tel My phone next S.Jsem z toho zoufalá. Děkuji za případnou odpověď.

RSS (komentáře k článku)