Vlákno názorů k článku
SMS trojan ohrožuje uživatelé Androidu od hawran.diskuse - Netuším, jak přesně probíhá proces "zveřejňování aplikací" na...

  • Článek je starý, nové názory již nelze přidávat.
  • 30. 11. 2011 10:27

    hawran.diskuse

    Netuším, jak přesně probíhá proces "zveřejňování aplikací" na oficiálním Android Marketu. Podle toho co jsem zaregistroval do dneška, jedním ze zdrojových souborů aplikace je jakýsi "manifest", kde se definují "požadovaná oprávnění" aplikace, tato informace je pak v aplikaci uložena a systém Android to při běhu kontroluje a nedovolí aplikaci nic jiného.

    1)
    Jednou z informací o aplikaci na marketu jsou i "Oprávnění".
    Tuto informaci si tam libovolně doplňuje autor aplikace, nebo se to automaticky vygeneruje z údajů v konkrétní aplikaci?

    2)
    Jedna věc je, že systém aplikaci nedovolí dělat nic jiného, než co aplikace deklarovala a co uživatel instalací odsouhlasil. (tedy, doufám)
    Jak ale ochránit uživatele před aplikacemi, které tvrdí, že dělají něco, co uživatel potřebuje, ale ve skutečnosti tyto aplikace páchají škody (viz zmiňovaný SMS trojan).
    S oprávněními, které oklamaný uživatel odsouhlasil?
    Nemají kontroly zveřejňovaných aplikací u jisté nejmenované firmy něco do sebe?
    (podle mi dostupných informací)

  • 30. 11. 2011 10:30

    onovy (neregistrovaný)

    1. ano, je to tak
    2. ano, prava se kontroluji a aplikace dostane Exception ve chvili, kdy pouzije neco, na co si v manifestu nerekla o prava

    A ne, kontroly nemaji nic do sebe. Jak chcete odhalit, ze aplikace dela to co tvrdi a nedela nic navic? Dekompilaci? Projitim kazdeho jednotliveho radku kodu? Vzdyt to je NP problem. Podle me je spravne reseni 'testovano na lidech'. Nekdo se spali, pri odinstalaci rekne ze je to podvodna aplikace, automat v Google zareaguje a aplikaci stahne. A kdyz ne, tak hodnoceni aplikace bude pod bodem mrazu a nikdo ji nebude instalovat.

  • 30. 11. 2011 10:31

    onovy (neregistrovaný)

    ted mi doslo, ze na prvni otazku jsem neodpovedel nejlepe :). To co je videt z marketu je nacitano z manifest souboru, ktery je zaroven pouzivan pro vynuceni opravneni. Nemuzu si tam tedy vymyslet nejake hlouposti.

  • 30. 11. 2011 11:17

    hawran.diskuse

    :-)
    Miluju odpovědi Ano/Ne na otázky typu "... nebo ...?"
    Ale teď už je to jasné, díky.

    K té druhé části, mno, fakt nevím.
    Ono se to asi lehce říká. Do doby, než se člověk spálí sám ...

  • 30. 11. 2011 11:28

    Izak (neregistrovaný)

    Ta aplikace je skodliva jen v takovem bananistanu jako CR, kde operator neuznava reklmace a tvrdi mi nemuzem nic delat ty k*ot* za* polib nam p* ....
    V civilizovanych zemich se to reklamuje, zjisti se, ze je to podvodnik a dane cislo operator proste odstrihne a basta, trestni oznameni poda sam a na podvodneho operatora proste nezasle penize s oduvodnenim a mozna i podanim trestniho oznameni, ze mu vznikla skoda, nebot slusny operator zakaznika haji a ne ze se bude tvarit, ze on nic, on jen prenasi vodu ...

  • 30. 11. 2011 14:12

    Lael Ophir (neregistrovaný)

    Ohledně bezpečnosti se stačí inspirovat u konkurence. Při použití vhodného jazyka (Java, cokoliv z .NETu) lze analyzovat bytecode, a vyloučit možnost, že aplikace volá nepovolené funkce. Když to zkombinujete se sandboxingem (například přístup jen k vlastním souborům aplikace) a interfacem pro předávání dat mezi aplikacemi (například permissions pro přístup ke kontaktům), rizika se minimalizují. Dále je dobré vynucovat digitální podpisy, aby bylo jasné, kdo za kódem stojí (ať je koho zmáčknout, když aplikace dělá co nemá).

  • 30. 11. 2011 17:41

    Petr (neregistrovaný)

    Vždyť to tak i je. Aplikace pro Android jsou napsané v Javě a nemohou volat nic v API, aniž by to měly v manifestu a uživatel to neodsouhlasil. Problém je v tom, že když uživatel odklepne "Odesílání SMS", tak nelze předpovědět, zda to bude 1000 SMS na draze placená čísla. To se dá prakticky jenom heuristickou nebo lidskou analýzou a to Google nedělá (na rozdíl od Applu a MS).

  • 30. 11. 2011 18:31

    Sten (neregistrovaný)

    Sandboxing Android samozřejmě dělá — jak u Javy tak u nativních aplikací (protože ty stejně musejí volat Javu přes JNI). Pokud zkusíte odeslat SMS z aplikace, která to nemá povolené, Java vám vynadá, že ta třída neexistuje, protože ji nedokáže naimportovat, jelikož nejste v příslušné unixové skupině (osobně vyzkoušeno). Ta aplikace ale má povolené odesílání SMS, takže z hlediska systému dělá to, co má povolené. Jako windowsák byste už mohl vědět, že tyhle ochrany jsou značně nedokonalé, protože spoléhají na to,ž e uživatel není blbec ;-)

    Digitální podpisy samozřejmě Google používá taky, ale těmi stejně nikoho nezmáčknete, protože není žádná globální autorita, která by mohla ověřovat totožnost. Proto můžete používat podpisy, jejichž certifikáty si sami podepíšete, resp. u Apple je podepisuje Apple, ale kontroluje se prakticky jenom platnost e-mailu.

  • 1. 12. 2011 20:51

    Lael Ophir (neregistrovaný)

    Pro Android jsem nepsal, ale pokud vím, tak Native Development Toolkit poskytuje mimo jiné jistou verzi libc.

    Apple i MS to řeší tak, že se platí za účast v programu vývoje. Samozřejmě pokud je kreditka kradená, je to problém. Ovšem i pak je tam strojová i manuální analýza bytecode, kterou musí aplikace projít (minimálně u MS).

  • 2. 12. 2011 17:00

    Sten (neregistrovaný)

    Ano, NDK poskytuje libc, ale s tím SMS nepošlete, nikam nezavoláte ani nepřečtete kontakty, protože to drží jiné aplikace běžící pod jiným uživatele a ty s vámi budou komunikovat jen přes Javu a bez patřičné skupiny nenajdete definice tříd (takže vám je Dalvik neumožní použít). Bez deklarace v manifestu se ale nedostanete ani k logům ani k síťovce (ke kterým Javu nepotřebujete), protože nejste ve skupině, která k nim má přístup.

    Na Androidu žádná automatická analýza bytekódu zřejmě není, ale ona je tam stejně zbytečná. Jak byste to totiž chtěl řešit? Aplikace pravdivě deklaruje, že chce posílat SMSky, a tak je posílat může. Analýza tohle tak maximálně potvrdí. Pokud to nedeklaruje, nedostane se k rozhraní pro posílání SMSek.

    Kreditku ze země třetího světa s falšným jménem si můžete pořídit snadno (anebo si „půjčit“ existující). Třeba v Indii to není vůbec problém. Ani ji nepotřebujete krást.

  • 5. 12. 2011 23:57

    Lael Ophir (neregistrovaný)

    Aha, děkuji za informace.

    Automatická analýza bytecode umí v kombinaci vychytat některé problémy. Na jiné je potřeba analyzovat kód ručně.

    V případě Microsoftu a nejspíš i Applu nelze použít kreditky ze třetího světa. Navíc existují různé cesty, jak totožnost potvrdit. Například vám může přijít email s kontrolním číslem, automat vám zavolá na vaši pevnou linku, a vy musíte poslané číslo vytočit přes DTMF volbu (pevné linky se poměrně dobře dohledávají, ve srovnání s browserem běžícím přes nějaké anonymní proxy). Nebo vám firma naúčtuje na kreditku náhodně 0.00-9.99 dolarů, a vy musíte pro kontrolu zadat přesnou částku do systému (u kradené kreditky nemá bad guy přístup k ebankingu ani výpisům). Nebo lze požadovat notářsky ověřenou kopii identifikačního dokladu, případně kontrolní zadání čísla doručeného klasickou poštou. Stačí to pro inspiraci?