Ano. Tady je potřeba uvědomit si jednu věc: dostatečně motivovaný útočník vždy nakonec vyhraje. Jde o to, hodit mu pod nohy co nejvíc klacků, aby se mu útok nevyplatil pro svojí pracnost. Zde právě dělá Apple poměrně dobrou práci... Samozřejmě Android má své výhody jinde, ať nepůsobím zbytečně vyhraněně... :)
Co se statické analýzy Apple týče, tak my máme jednu velmi konkrétní zkušenost. Před tím, než v SDK byly "collection views", implementovali jsme náš vlastní grid view. Ten stále používáme např. v ČT24/4 pro iPad nebo aplikaci Hospodářských novin pro tvorbu gridového layoutu aplikace. Tento grid view implementoval delegate callback metody - např. "grid:cellForIndexPath:" - a Apple nám jednoho dne aplikaci s naším gridem zamítl, protože náš naming kolidoval s neveřejnými metodami v UIKitu. Tak jsme v našich objektech callback metody hromadně přejmenovali na "imtGrid:cellForIndexPath" a byl pokoj...
Čili to je pěkná ukázka toho, jak nás Apple vypekl jen při pouhém podezření, že děláme něco s jeho privátním API...
Jakou analyzu delaji vi asi jen Apple, ale podle svych zkusenosti (par stovek app reviews jsem uz s nimi absolvoval), jedine co najdou je prima linker reference do privatniho frameworku.
Pristup Applu ma urcite pozitiva, nejsem proti tomu, Psat malware pro iOS je ale tezsi spis tim, ze se aplikace neda distribuovat jinak nez pres App Store, coz vede k nutnosti registrace vyvojare u Apple a zaplaceni rocniho poplatku (kreditkou). Pokud bude ale nekdo dostatecne motivovan a podari se mu registrovat treba na podvrzene osobni udaje, tak ho app review rozhodne nezastavi.
Apple na všechny aplikace spouští poměrně pokročilou statickou analýzu, čili typicky odhalí volání privátních API či jiné podezřelé části kódu. Dokonce zamítne aplikaci při false positive nálezu, jak jsme se sami přesvědčili. Existují samozřejmě mechanismy, jak se pokusit statickou analýzu zmást, ale jednak se to daří méně, než dříve, dále pokud se zpětně zjistí prohřešek, je aplikace stažena, a to včetně dopadu na vydavatele (který je na Apple povinně ověřen při zakládání účtu).
Proces app review je jistě i o ochraně obchodních zájmů Apple, ale nemyslím si, že to je jediný cíl... Stačí chvíli zagooglit na téma mobilního malware a zhodnotit jeho výskyty na iOS a OS Android. Nebo se třeba podívat na poměr vyloženě balastových aplikací...
Apple review nema sanci zachytit "workaroundovani", pokud se napise sikovne (a neni to nijak zvlast tezke). Vzdyt jak by to taky delali - trasovali ten kod instrukci po instrukci v nejakem debuggeru?
Cele app review je spis o kontrole obchodnich zajmu firmy Apple a trochu (mnohem min) o jednotnem vzhledu a ovladani apliaci.
Dobrý den,
děkuji za dobrou připomínku - ale zde to je podle mě spíše konflikt terminologie, než že bychom si nerozuměli. Pod pojmem "práva" si nepředstavím práva, která jsou uživatelem přidělená, ale systémová práva, možnost něco dělat jako "root".
SMS zprávy na OS Android může teoreticky číst například aplikace typu SMS Jízdenka, která to dělá poměrně legitimně. Ano, uživatel ji k tomu předtím dal práva - takže Android je alibisticky z obliga v případě, že podobná aplikace udělá něco nekalého... Vina je pak formálně na uživateli (ale je to právem???).
Naproti tomu na iOS není možné nikdy číst SMS bez toho, aby aplikace měl práva uživatele root. V iOS SDK pro to není podpora, pokud se to pokusím workaroundovat a vydat aplikaci, Apple mě s ní nepustí na App Store.
Teď se pouštím na tenký led, ale přeci... Oba systémy, iOS i Android mají své silné a slabé stránky. Domnívám se, že systém uživatelem přidělených oprávnění v OS Android je poměrně nevyhovující pro "běžné retailové klienty". Přidělení práv aplikaci v době instalace aplikace je něco, co uživatele po čase dotlačí k slepotě a automatickému potvrzování práv. Takže říkat pak uživateli "Je to Vaše chyba, že se něco stalo" je trochu alibistické. Přístup Apple je sice celkem drsný, ale pro masovou klientelu vhodnější.