Vysoká škola ekonomická v Praze Fakulta informatiky a statistiky
Bakalářská práce
2014
Michal Nidl
Vysoká škola ekonomická v Praze Fakulta informatiky a statistiky
Zabezpečení platformy iOS
Vypracoval: Michal Nidl Vedoucí práce: Ing. Jaromír Veber, Ph.D. Rok vypracování: 2014
Čestné prohlášení: Prohlašuji, že jsem tuto bakalářskou práci vypracoval samostatně. Veškeré použité podklady, ze kterých jsem čerpal informace, jsou uvedeny v seznamu použité literatury a citovány v textu podle normy ČSN ISO 690.
V................. dne ...................................
Podpis: .................................................
Poděkování: Rád bych poděkoval vedoucímu bakalářské práce Ing. Jaromíru Veberovi, Ph.D. za rady, připomínky a pomoc, kterou mi v průběhu psaní této práce poskytl. Současně chci poděkovat své přítelkyni a rodině za poskytnutou morální podporu po dobu celého studia.
Abstrakt Tato bakalářská práce je zaměřena na způsoby zabezpečení operačního systému iOS od společnosti Apple. Práce je rozdělena do šesti kapitol. První kapitola představuje systém iOS a společnost Apple. Druhá kapitola se zabývá architekturou bezpečnosti systému iOS z hlediska bezpečnostního modelu a bezpečnostních mechanismů. Třetí kapitola se zabývá zabezpečením aplikací a možnosti jejich testování. Čtvrtá kapitola popisuje softwarové útoky v podobě malwaru a exploitu. Pátá kapitola popisuje možné zásahy do systému iOS a metody jejich detekce. Šestá kapitola práce se zabývá srovnáním zabezpečení systému iOS se zabezpečením platforem Android a Windows Phone. V této části je představeno zabezpečení konkurenčních platforem z hlediska bezpečnostního modelu, zabezpečení systému, zabezpečení aplikací a zásahu do systému. Součástí srovnání platforem je tabulka s vyhodnocením bezpečnosti. Cílem této práce je představit způsob zabezpečení jedné z nejpoužívanějších mobilních platforem současnosti. Současně je cílem srovnání zabezpečení systému iOS se zabezpečením dvou konkurenčních mobilních platforem. Výsledkem práce je rozbor zabezpečení systému iOS a jeho srovnání se zabezpečením systému Android a Windows Phone. Klíčová slova: zabezpečení, operační systém, aplikace, mechanismus, šifrování, proces, malware, exploit.
Abstract This bachelor´s thesis is focused on security of operating system iOS from Apple Inc. The thesis is divided into six chapters. The first chapter describes iOS and Apple Inc. The second chapter deals with iOS security architecture in terms of security model and security mechanisms. The third chapter deals with the security of iOS applications and options of their testing. The fourth chapter describes software attacks against iOS in the form of malware and exploitation. The fifth chapter describes the system interferences and methods for their detection. The sixth chapter deals with comparison of iOS security with Android and Windows Phone platform security. In this chapter is introduced the security of competitive platforms in terms of security model, system security, application security nad system interferences. This comparison includes the table with evaluation of security. Objective of this thesis is to introduce ways of security in one of the most widely used mobile platform. Moreover the aim is to compare iOS security with security of two competitive platforms. The result is an analysis of iOS security and it´s comparison with Android and Windows Phone security. Keywords: security, operating system, application, mechanism, encryption, process, exploitation.
malware,
Obsah Úvod ............................................................................................................................................ 1 Rešerše bakalářské práce.............................................................................................................. 3 Cíle práce ..................................................................................................................................... 3 1 Úvod do systému iOS ................................................................................................................. 4 1.1 Společnost Apple ........................................................................................................................... 4 1.2 Zařízení poháněná systémem iOS ................................................................................................. 4 1.3 Verze systému iOS ......................................................................................................................... 6 1.4 Správa systému iOS ....................................................................................................................... 7 1.5 Zastoupení na trhu ........................................................................................................................ 7 2 Architektura bezpečnosti systému iOS........................................................................................ 9 2.1 Architektura systému iOS .............................................................................................................. 9 2.2 Model bezpečnosti systému iOS ................................................................................................. 10 2.2.1 Bezpečnost zařízení .............................................................................................................. 10 2.2.2 Datová bezpečnost ............................................................................................................... 11 2.2.3 Síťová bezpečnost................................................................................................................. 11 2.2.4 Bezpečnost aplikací .............................................................................................................. 12 2.3 Upravená útočná vrstva .............................................................................................................. 12 2.4 Diverzifikace systému .................................................................................................................. 13 2.5 Oddělování práv .......................................................................................................................... 13 2.6 Podepisování kódu ...................................................................................................................... 14 2.7 Datová prevence (DEP) ................................................................................................................ 14 2.8 Adresní prostor (ASLR) ................................................................................................................ 15 2.9 Testovací prostředí ...................................................................................................................... 15 2.10 Šifrování ..................................................................................................................................... 15 2.10.1 Ochrana dat ........................................................................................................................ 16 2.10.2 Data Protection API ............................................................................................................ 17 3 Bezpečnost aplikací ................................................................................................................. 18 3.1 Schvalovací proces aplikací.......................................................................................................... 18 3.2 Šifrování ....................................................................................................................................... 19 3.2.1 Heslo šifrovacího klíče .......................................................................................................... 19 3.2.2 Knihovna Common Crypto ................................................................................................... 20
3.2.3 Šifrování Master Key............................................................................................................. 20 3.2.4 Geo šifrování......................................................................................................................... 21 3.2.5 Rozdělení klíče ...................................................................................................................... 21 3.2.6 Šifrování s veřejným klíčem .................................................................................................. 21 3.3 Zabezpečení paměti .................................................................................................................... 21 3.4 Zabezpečení běhového prostředí ................................................................................................ 22 3.4.1 Falešná odezva ..................................................................................................................... 22 3.4.2 Ochrana uživatelských dat.................................................................................................... 23 3.4.3 Vypnutí síťového připojení ................................................................................................... 23 3.4.4 Zpětná vazba ........................................................................................................................ 23 3.4.5 Logování ............................................................................................................................... 23 3.4.6 Sledování procesů ................................................................................................................ 24 3.4.7 Blokování debuggeru ............................................................................................................ 24 3.5 Fúze aplikací ................................................................................................................................ 24 3.5.1 Tichá fúze.............................................................................................................................. 25 3.5.2 Chytrá fúze............................................................................................................................ 25 3.5.3 Analýza výsledků fúze ........................................................................................................... 25 4 Typy útoků proti systému iOS .................................................................................................. 26 4.1 Exploit .......................................................................................................................................... 26 4.1.1 Libtiff..................................................................................................................................... 27 4.1.2 Fun with SMS ........................................................................................................................ 28 4.1.3 The Ikee Worm ..................................................................................................................... 28 4.1.4 Pwn2Own ............................................................................................................................. 29 4.1.5 Star ....................................................................................................................................... 29 4.2 Malware....................................................................................................................................... 29 4.2.1 Find & Call............................................................................................................................. 30 4.2.2 Storm8 .................................................................................................................................. 30 4.2.3 SpyPhone .............................................................................................................................. 30 4.2.4 Simply Find It ........................................................................................................................ 31 4.2.5 Jekyll ..................................................................................................................................... 31 5 Zásahy do systému .................................................................................................................. 32 5.1 Typy Jailbreaku ............................................................................................................................ 32 5.1.1 Jailbreak podle odolnosti...................................................................................................... 33
5.1.1.1 Vázaný Jailbreak ............................................................................................................ 33 5.1.1.2 Nevázaný Jailbreak ........................................................................................................ 33 5.1.2 Jailbreak typu exploit............................................................................................................ 33 5.1.2.1 Jailbreak úrovně Bootrom ............................................................................................. 34 5.1.2.2 Jailbreak úrovně iBoot ................................................................................................... 34 5.1.2.3 Jailbreak na úrovni uživatelské aplikace........................................................................ 34 5.2 Proces zavedení Jailbreaku .......................................................................................................... 34 5.3 Detekce Jailbreaku ...................................................................................................................... 35 5.3.1 Test souborového systému .................................................................................................. 36 5.3.2 Evidence symbolických odkazů ............................................................................................ 36 5.3.3 Test integrity testovacího prostředí ..................................................................................... 36 6 Srovnání bezpečnosti mobilních platforem ............................................................................... 37 6.1 Mobilní platformy Android a Windows Phone............................................................................ 37 6.1.1 Android ................................................................................................................................. 37 6.1.2 Windows Phone.................................................................................................................... 38 6.2 Metodika pro srovnání bezpečnosti ............................................................................................ 39 6.3 Srovnání bezpečnostních modelů ............................................................................................... 40 6.4 Srovnání zabezpečení systémů.................................................................................................... 40 6.5 Srovnání zabezpečení aplikací ..................................................................................................... 42 6.6 Možnosti zásahů do systémů ...................................................................................................... 43 6.7 Vyhodnocení srovnání zabezpečení ............................................................................................ 44 Závěr ......................................................................................................................................... 47 Zdroje ........................................................................................................................................ 49 Seznam obrázků ......................................................................................................................... 52 Seznam tabulek .......................................................................................................................... 52
Úvod Současný svět je doslova zaplaven spotřební elektronikou. Součástí života většiny obyvatel se staly různá elektronická zařízení od výkonných mobilních telefonů, přenosné počítače, přehrávače hudby, tablety, až po „chytré brýle“ či náramky monitorující zdravotní stav. Jedním z výrobců spotřební elektroniky je společnost Apple, která vyrábí právě již zmíněná zařízení. O provoz přenosných zařízení, která spadají do portfolia produktů společnosti Apple, se stará mobilní operační systém iOS. Produkty společnosti Apple si získaly řadu věrných uživatelů po celém světě a na současném trhu se spotřební elektronikou soupeří pouze s produkty, poháněné operačním systémem od společnosti Google, Androidem. Za dobu své existence si dokázal systém iOS vybudovat početnou základnu uživatelů, kteří jej aktivně využívají v každodenním životě. Obliba zařízení od společnosti Apple pramení z jisté exkluzivity provedení, která se od ostatních výrobců značně liší. iOS je také vysoce oceňován pro svou vysokou stabilitu, konzistentnost při využití systému na dvou odlišných zařízeních a vydáváním pravidelných aktualizací pro nejnovější, ale také pro starší zařízení. Vysoké množství uživatelů většiny systémů vede přirozeně ke snahám tento systém napadnout a zneužít. Této skutečnosti se nevyhnul ani systém iOS. Při celkovém součtu množství provedených softwarových útoků proti mobilním zařízením patří mezi nejvíce postižené systémy Android (1). Toto nelichotivé prvenství je způsobeno několika faktory. Systém Android je v současné době nejpoužívanějším operačním systémem pohánějící přenosná zařízení. Dalším faktorem je otevřenost zdrojového kódu systému Android, která vede k možnosti zásahu do systému, či k jeho napadení škodlivým kódem. V obou faktorech se systém iOS výrazně liší. I přes výrazně nižší uživatelskou základnu a uzavřenost zdrojového kódu není systém iOS ušetřen útokům zvenčí. Potenciální útočníky lákají především uživatelská data aplikací. I přes nižší uživatelskou základnu se iOS těší v porovnání se systémem Android mnohem většímu množství provedených transakcí při nákupu aplikací. Uživatelé systému iOS jsou ochotnější utrácet větší objem peněz za aplikace, než uživatelé systému Android. Nejen tato skutečnost je lákadlem pro potenciální útočníky. Tato bakalářská práce se zaměřuje na zabezpečení systému iOS. První část práce je věnována rozboru způsobu zabezpečení systému iOS a aplikací, které v systému běží. Dále se práce zaměřuje na identifikaci softwarových útoků proti systému iOS a zároveň uživatelskými zásahy do systému. Pozornost je věnována také vybraným způsobům zabezpečení systému. Druhá část této bakalářské práce se zaměřuje na srovnání způsobu zabezpečení systému iOS se 1
dvěma konkurenčními platformami Android od společnosti Google a Windows Phone od společnosti Microsoft. V této části je zabezpečení tří platforem vyhodnoceno. Závěr bakalářské práce je věnován shrnutí zjištěných poznatků o problematice bezpečnosti systému iOS. Bakalářská práce by měla pomoci bezpečnostním manažerům, či vývojářům aplikací pro systém iOS lépe pochopit problematiku zabezpečení systému iOS a sním spojených aplikací. Současně umožňuje náhled do problematiky softwarových útoků a zásahům do systému, které se mezi uživateli systému iOS často vyskytují.
2
Rešerše bakalářské práce Téma bakalářské práce se věnuje zabezpečení systému iOS. Snahou autora je představit čtenářům způsob zabezpečení systému iOS a jeho srovnání se zabezpečením konkurenčních mobilních platforem. První část práce je věnována teoretickému zabezpečení systému. V současnosti není dostupná téměř žádná literatura v českém jazyce, která by se zabezpečení systému iOS věnovala. Z toho důvodu je v teoretické části práce čerpáno ze zahraničních publikací, doplněné o vlastní zkušenosti autora bakalářské práce. Druhá část práce je zaměřena na srovnání zabezpečení systému iOS, Android a Windows Phone. V této části práce je historie vývoje systémů Android a Windows Phone, jejich architektura a bezpečnost, čerpána z bakalářských prací, které byly na podobná témata sepsány. Jde o bakalářské práce: Bc. Marko Petrovič: Platforma Android v. 4 Bc. Jan Ženíšek: Mobilní platforma Windows Phone
Cíle práce Cílem mé práce je představit čtenářům systém iOS z hlediska jeho architektury, zabezpečení a možných potenciálních bezpečnostních hrozeb, kterým je systém vystaven. Cílem je také představit způsob zabezpečení aplikací v systému iOS a zásahy do systému. Dalším cílem práce je srovnat zabezpečení systému iOS se zabezpečením dvou konkurenčních mobilních platforem, tzn. se systémem Android a systémem Windows Phone. Srovnání bude provedeno na základě předem stanovené metodiky a na základě několika atributů.
3
1 Úvod do systému iOS Operační systém iOS, dále jen systém iOS, je mobilní operační systém, určený pro provoz přenosných zařízení typu smartphone, tablet, nebo multimediální centrum. Systém iOS byl představen v lednu roku 2007 společně s první verzí zařízení iPhone a dotykovou verzí přehrávače iPod. Do současnosti se vývoj systému posunul od první verze 1.0 do aktuální verze 7.1. Systém iOS je programován v programovacích jazycích C, C++ a Objectiv C. Aplikace jsou v systému iOS instalovány, spravovány a aktualizovány skrze obchod AppStore, který je předinstalovaný.
1.1 Společnost Apple Společnost Apple Inc. je americká technologická společnost s mezinárodním zastoupením, která vyrábí a navrhuje spotřební elektroniku, počítače a software. Společnost byla založena 1. dubna 1976 v Cupertinu v americkém státě Kalifornii. Založena byla jejím budoucím dlouhodobým ředitelem Stevem Jobsem. Mezi nejznámější produkty společnosti patří profesionální řada osobních počítačů Macintosh, hudební přehrávač iPod, smartphone iPhone a tablet iPad. Společnost Apple se zaměřuje také na vývoj softwaru, především hudebního přehrávače iTunes, kancelářské sady aplikací iWork, profesionálního balíku pro úpravu fotografií Aperture, softwaru pro úpravu videa Final Cut Studio a aplikace pro práci s hudbou Logic Studio. V současnosti provozuje společnost Apple více než 300 prodejních poboček po celém světě. Společnost se svojí hodnotou řadí mezi deset nejhodnotnějších značek světa. Současným ředitelem je Tim Cook. (2)
1.2 Zařízení poháněná systémem iOS První přenosná zařízení od společnosti Apple, především hudební přehrávač iPod, byla poháněná vlastním firmwarem, vyvinutým pro konkrétní zařízení. Od uvedení první verze zařízení iPhone, které obsahovalo verzi iOS 1.0, byl systém upraven pro provoz na přenosných zařízeních typu Tablet PC iPadu. Kromě zařízení iPhone a iPad je systém využíván v hudebním přehrávači iPod a multimediální centru Apple TV. Systém iOS byl v průběhu vývoje vylepšován o nové předinstalované aplikace, s novými procesory také rychlejším a úspornějším provozem, multitaskingem a bezpečnostními prvky. Současná verze systému iOS 7.1 se od předešlých verzí systému liší grafickým rozhraním, které využívá průhledné efekty a světlejší odstíny barev. 4
První verze systému iOS poháněla zařízení s jedno jádrovým procesorem ARM. Od iPhonu verze 4S a iPadu verze 2 byl jedno jádrový procesor nahrazen dvou jádrovým ARM Cortex procesorem. Tento krok výrazně zlepšil bezpečnost systému iOS, který byl při využití jedno jádrových procesorů vystaven útoku exploitů. Využití exploitů je v prostředí dvou jádrového procesoru problematické a exploit se stává nestabilním. U starších zařízení s jedno jádrovým procesorem byla z hlediska bezpečnosti provedena výměna setu instrukcí procesoru u modelu iPhonu 3GS, kde byl nově využit bezpečnější set instrukcí Thumb2. (3 s. 2) Zařízení iPod je hudební přehrávač, sloužící k uchovávání a přehrávání hudby, videa a obrazových prezentací. Společnost Apple nabízí ve svém sortimentu produktů řady iPod čtyři kategorie hudebního přehrávače. Nejmenší a nejzákladnější model tvoří iPod Shuffle. iPod Shuffle není vyráběn se zobrazovací jednotkou. Je tvořen ovládacím kotoučem a interní pamětí o velikosti 2 GB. Další variantou přehrávače je iPod Nano. Přehrávač je vybaven interní pamětí o velikosti 16 GB, ovládacím kotoučem a zobrazovací jednotkou. Od sedmé generace produktu je přehrávač distribuován s kapacitním dotykovým displejem o velikosti 2.5 palců a rozlišením 240 x 432 pixelů. Zařízení iPod Classic se liší od ostatních variant použitím pevného disku pro uchovávání multimédií. Je tvořeno displejem o velikosti 2.5 palce a rozlišením 320 x 240 pixelů. Zařízení iPod Touch je jako jediné zařízení z řady přehrávačů iPod poháněno systémem iOS. Systém iOS je v případě iPodu Touch ochuzen o podporu telefonních hovorů a provozu na datových sítích. Je vybaven interní pamětí o velikosti až 64 GB a dotykovým kapacitním displejem o velikosti 4 palce a rozlišením 1136 x 640 pixelů. V současnosti je na trhu dostupná jeho pátá generace. (4) Zařízení iPhone je produkt za kategorie smartphone. Všechny generace produktu iPhone jsou poháněny systémem iOS. Od roku 2007, kdy byla na trh uvedena první generace iPhonu, byly následně uvedeny generace iPhone 3G, 3GS, 4, 4S, 5 a 5S, resp. 5c. Zařízení iPhone je vybaveno kapacitním dotykovým displejem, interní pamětí, Wi-Fi modulem a od generace 3G také datovým modulem. Generace 5S se vyznačuje implementací nového bezpečnostního prvku skenování otisku prstu majitele pro odemčení zařízení. (5) Produkt iPad je zařízení z kategorie tablet PC poháněné systémem iOS. První generace tabletu iPad byla uvedena v lednu 2010. Od roku 2010 byly uvedeny generace iPad 2, 3, 4 a verze iPad mini. Zařízení iPad je vybaveno deseti palcovým kapacitním dotykovým displejem. (6) Apple TV je multimediální zařízení, určené pro běžné televizory. Zařízení je poháněno upravenou verzí systému iOS, která je přizpůsobena ovládání skrze dálkový ovladač. 5
Multimediální centrum je dále vybaveno vestavěným pevným diskem a Wi-Fi modulem. První generace multimediálního centra byla představena v lednu 2007. V současnosti je v prodeji již čtvrtá generace zařízení Apple TV. (7)
1.3 Verze systému iOS Systém iOS se v současnosti nachází ve verzi 7.1. Jeho první verze spatřila světlo světa na konferenci Macworld &Expo v lednu 2007, kdy bylo současně představeno zařízení iPhone první generace. Vydávání nových verzí systému iOS je vázáno na uvádění nových generací zařízení, která iOS pohání, především zařízení iPhone. Verze iOS 1.0 byla představena v roce 2007 společně s první generací zařízení iPhone. Dostupná byla také v první generaci přehrávače iPod Touch. iOS 1.0 obsahoval sadu předinstalovaných aplikací, tj. kalendář, poznámky, záznamník a předpověď počasí. V první generaci systému byly dostupné také aplikace Google Maps, webový prohlížeč Safari a hudební aplikace iTunes. Tato verze neobsahovala obchod AppStore pro instalaci softwaru. (8) Systém iOS 2.0 byl představen v červenci 2008 společně s iPhonem 3G. Novinkou byla přítomnost obchodu AppStore a možnost centralizované instalace aplikací. Společnost Apple vydala společně se systémem iOS SDK pro vývojáře aplikací. (8) Systém iOS 3.0 byl vydán v červnu 2009 současně s uvedením iPhonu 3GS na trh. Verze 3.0 obsahovala notifikační centrum, funkce pro kopírování a vkládání textu, hromadné vyhledávání v zařízení a bezpečnostní aplikaci Find my iPhone pro vzdálené nalezení ztraceného, či odcizeného zařízení. (8) Systém iOS 4.0 byl vydán v červnu 2010 společně s iPhonem 4. Nová verze obsahovala multitasking, tj. práci s více současně spuštěnými aplikacemi, aplikaci FaceTime pro provozování video hovorů s dalšími majiteli zařízení se systémem iOS, funkci pro tvorbu složek s aplikacemi a pokročilého klienta elektronické pošty. S opravným vydáním systému iOS verze 4.2.1 byla přidána funkce AirPlay pro vzdálené přehrávání multimédií, funkce AirPrint pro vzdálený tisk na kompatibilních tiskárnách a herní aplikace Game Center. (8) Systém iOS 5.0 byl vydán v říjnu 2011 společně s iPhonem 4S. Největší novinkou verze 5.0 byl hlasový asistent Siri, který vyhledával na základě rozpoznávání řeči vlastníka zařízení. Dále bylo přidáno cloudové úložiště iCloud pro zálohování zařízení, vylepšená funkce pro 6
aktualizace zařízení a aplikace iMessage pro textovou komunikaci s ostatními majiteli zařízení se systémem iOS. (8) Systém iOS 6.0 byl představen v září 2012 jako hromadná aktualizace pro kompatibilní modely se systémem iOS. Novinkou byla společností Apple vyvinutá mapová aplikace Maps, nový vzhled obchodu AppSTore, integrovaná sociální síť Facebook, funkce pro sdílení fotografií a aplikace Passbook pro uchovávání zakoupených vstupenek, kupónů a jiných peněžních transakcí. (8) Systém iOS 7.0 byl vydán v září 2013 jako hromadná aktualizace kompatibilních modelů. Největší novinkou byl vzhled systému, který využívá průhledných efektů a bílých odstínů barev. V systému byl upraven multitasking, integrováno nové ovládací centrum zařízení, nová verze hlasového asistenta Siri a funkce AirDrop pro sdílení obsahu s ostatními uživateli systému iOS. (8)
1.4 Správa systému iOS Všechna zařízení, která pohání systém iOS, jsou centrálně spravována v aplikaci iTunes. Aplikace je dostupná také v klasické verzi pro osobní počítače a platformy Mac OS X a Windows. Aplikace iTunes slouží ke správě zařízení, zálohování aplikací a uživatelských dat, aktualizaci softwaru a synchronizaci hudby, fotografií a videí se zařízením. Aplikace AppStore je dostupná v klasické verzi pro osobní počítače pouze v systému Mac OS X od společnosti Apple. V zařízení se systémem iOS je aplikace AppStore předinstalovaná. AppStore slouží k instalaci, případně mazání aplikací v zařízení, aktualizaci aplikací a jejich správě. Aplikace AppStore umožňuje správu zařízení jen v případě, že má uživatel vytvořený aktivní účet u společnosti Apple. S účtem je možné následně spárovat platební kartu a uživatel může instalovat také placené aplikace pouhým kliknutím.
1.5 Zastoupení na trhu Na trhu s přenosnými zařízeními soupeří několik výrobců operačních systému. Systém Android od společnosti Google, iOS od společnosti Apple, Windows Phone od společnosti Microsoft a BlackBerry OS od společnosti BlackBerry. Podíl ostatních operačních systémů má klesající trend a pohybuje se okolo 1 %. Podle studie společnosti Gartner (viz Tabulka 1.1) ke konci roku 2013 se podíl operačních systému, obsažených v kusových prodejích přenosných 7
zařízení, promítl nárůstem podílu systému Android, který s celkovým počtem 758 milionů prodaných kusů a tržním podílem 78,4 % navýšil svůj náskok v celkovém prvenství mezi mobilními operačními systémy. Na druhém místě se umístil systém iOS s celkovým počtem 150 milionů prodaných kusů a tržním podílem 15,6 %. Třetí místo obsadil systém Windows Phone s počtem 30 milionů prodaných kusů a tržním podílem 3,2 %. Čtvrté místo náleží systému BlackBerry OS s počtem 18 milionů prodaných kusů a tržním podílem 1,9 %. Ostatní systémy drží podle studie společnosti Gartner tržní podíl 0,9 %. (9)
Operační systém
Prodané kusy
Tržní podíl 2013
Prodané kusy
Tržní podíl 2012
2013 (tis. ks.)
(%)
2012 (tis. ks.)
(%)
Android
758,719.9
78.4
451,621.0
66.4
iOS
150,785.9
15.6
130,133.2
19.1
Windows Phone
30,842.9
3.2
16,940.7
2.5
BlackBerry OS
18,605.9
1.9
34,210.3
5.0
Ostatní
8,821.2
0.9
47,203.0
6.9
Celkem
967,775.8
100.0
680,108.2
100.0
Tabulka 1.1 - Tržní podíl mobilních operačních systémů, zdroj: (9)
8
2 Architektura bezpečnosti systému iOS Každý operační systém má v sobě bezpečnostní mechanismus, který zařízení chrání. Mechanismy jsou běžně přizpůsobeny bezpečnostnímu modelu, na kterém je založena celková bezpečnost zařízení.
Bezpečnost systému iOS je vystavěna na bezpečnostním modelu a
systému mechanismů, které předchází možným bezpečnostním rizikům. V této kapitole je popsána architektura zabezpečení systému iOS a způsoby, jakými je systém iOS zabezpečen proti útokům malwaru, exploitu a zásahu do systému.
2.1 Architektura systému iOS Architektura systému iOS vychází z původní architektury operačního systému od společnosti Apple, tj. Mac OS X. Základní model architektury systému iOS (viz Obrázek 2.1) se skládá z pěti vrstev. (10) Některé zdroje nezahrnují do modelu vrstvu aplikací. V našem případě je vrstva znázorněna pro větší přehlednost.
Aplikace Rozhraní Cocoa Touch Multimédia Služby Jádro systému Obrázek 2.1 – Architektura systému iOS, zdroj: (11)
Vrstva aplikací často není zahrnována do modelu architektury systému iOS. Do této vrstvy jsou řazeny pouze instalované aplikace v zařízení. Zahrnovány jsou také nativní aplikace, 9
které jsou v systému iOS předinstalované. (10) Vrstva Cocoa Touch je důležitá pro správnou funkci grafického rozhraní systému iOS a aplikací. Je závislá na zobrazovacím frameworku UIKit, s jehož pomocí jsou následně vykreslovány aplikace, napsané v jazyce Objective-C. Nejdůležitější funkcí frameworku UIKit je rozhraní pro dotykové ovládání aplikací a rozpoznávání gest. (10) Jazyk Cocoa je používán pro tvorbu aplikací, určených pro provoz v prostředí systému iOS. Cocoa není programovací jazyk v původním významu. Je to jen nástroj, s jehož pomocí vývojáři upravují své aplikace tak, aby bylo sjednoceno grafické rozhraní a ovládací prvky. Vrstva multimédií obsahuje grafické, video a audio nástroje pro správné zpracování multimediálního obsahu. Obsahuje grafické knihovny OpenGL a OpenAL, Core Graphics Framework pro zpracování 2D a 3D grafiky, knihovnu Assets pro zpracování fotografií a videí, knihovny pro zpracování zvukových a video formátů. (10) Součástí vrstvy služeb jsou systémové služby, podporující správnou funkci a instalaci aplikací, cloudové úložiště, správu vnitřní paměti zařízení, databázové nástroje, nástroje pro zpracovávání skriptů a mechanismy pro zabezpečení zařízení. (10) Jádro systému zajišťuje bezproblémový provoz systému iOS na hardwaru zařízení. Obsahuje ovladače k hardwarovým modulům pro grafiku, procesor, operační paměť a síťové připojení. Jádro systému je šifrované a dešifrování je možné pouze při znalosti šifrovacího klíče a tzv. AES inicializačního vektoru. Šifrovací klíč i inicializační vektor jsou dále šifrovány s využitím GID klíče, který je pro každé zařízení se systémem iOS unikátní. (3 s. 249)
2.2 Model bezpečnosti systému iOS Bezpečnost systému iOS je navržena s pomocí základního modelu bezpečnosti, na kterém je založena bezpečnost všech verzí systému iOS. Bezpečnostní model rozděluje bezpečnost systému do čtyř základních komponent. Komponenty bezpečnostního modelu systému iOS jsou bezpečnost zařízení, datová bezpečnost, síťová bezpečnost a bezpečnost aplikací. (11 s. 5)
2.2.1 Bezpečnost zařízení Komponenta bezpečnosti zařízení pomáhá ochránit zařízení před zneužitím neautorizovanou stranou. Nejběžnějším mechanismem komponenty je PIN kód a heslo pro uzamčení zařízení. Od verze iOS 7.0 bylo nově k heslu zařízení zařazeno snímání otisku prstu, které je implementované do domovského tlačítka zařízení iPhone 5S. Společnost Apple umožňuje podnikovým zákazníkům využít dalších rozšiřujících mechanismů pro vynutitelnost 10
nastavení hesla zařízení, stanovení jeho minimální délky, povinné využití alfanumerických znaků, či zadávání speciálních znaků. V podnikových podmínkách je možné nastavit dobu expirace hesla. Součástí hesla zařízení je také možnost nastavení blokace zařízení v případě zadání několika chybných pokusů o zadání hesla. Další součástí komponenty jsou profily. Podnikoví zákazníci mohou využívat ověřené bezpečnostní profily pro přístup do chráněné VPN, připojení k WI-Fi, přístup k elektronické poště. Centralizovaná konfigurace zařízení může omezit využívání konkrétních služeb zařízení, např. portálu YouTube, či kamery zařízení. Omezena může být také možnost instalace aplikací třetích stran. (11 s. 5)
2.2.2 Datová bezpečnost Komponenta datové bezpečnosti zahrnuje metody, sloužící k ochraně citlivých dat v zařízení, včetně jejich ochrany v případě odcizení zařízení. Mechanismus ochrany dat zahrnuje vzdálenou správu zařízení, šifrování a ochranu dat. Vzdálená správa zařízení umožňuje uživateli nalézt zařízení v případě jeho odcizení s pomocí geolokační funkce. Současně je možné zařízení vzdáleně zablokovat, či vymazat jeho obsah. Mechanismus pro šifrování umožňuje šifrovat všechna data, uložená v zařízení. Šifrována jsou také data, která jsou zálohována s pomocí aplikace iTunes. Šifrovací klíč se vytváří v aplikaci iTunes a následně se ukládá v zařízení. Tento šifrovací klíč je následně využíván k šifrování dat v zařízení a také k šifrování zálohovaných dat. Mechanismus pro šifrování využívá harwarové akcelerace od uvedení iPhonu 3GS. Hardwarová akcelerace pro šifrování je dostupná vývojářům aplikací. Účinnost šifrování se zvyšuje při využití hesla zařízení, resp. biometrického otisku prstu, bez kterého není možné dešifrovat data. Apple doporučuje pro maximální účinnost šifrování využívat komplexní hesla zařízení, namísto pouhého PIN kódu, který se prolamuje mnohem rychleji. I přes integrovaný mechanismus pro šifrování existují způsoby, jak odcizit data v zařízení. (11 s. 6)
2.2.3 Síťová bezpečnost Síťová bezpečnost je součástí systému iOS již od jeho první verze. Součástí této komponenty je funkce VPN, šifrování SSL/TLS a bezdrátové šifrování WEP/WPA/WPA2.(11 s. 6) Kromě integrovaných mechanismů pro šifrování podporuje systém iOS využívání certifikátů. Certifikáty je možné využít pro připojení k podnikové VPN, nebo vyhrazené internetové síti. Příkladem může být akademická internetová síť Eduroam, která pro svůj provoz vyžaduje
11
instalaci certifikátu v zařízení. Instalace certifikátů v zařízení se systémem iOS probíhá automaticky.
2.2.4 Bezpečnost aplikací Komponenta bezpečnosti aplikací využívá testovacího prostředí k zabezpečení aplikací. Testovací prostředí, tzv. Sandbox, izoluje aplikaci, jejíž zdrojový kód je považován za nedůvěryhodný, od systémových zdrojů. Sandbox zároveň omezuje množství paměti a cyklů procesoru, které mohou aplikace využívat. Současně je omezen přístup k souborům v zařízení z domovského adresáře aplikace. Společnost Apple umožňuje vývojářům pracovat s moduly pro GPS, kameru, či pohybové sensory. Znemožňuje naopak přístup aplikací k některým modulům přímo. (11 s. 6) Společnost Apple v rámci komponenty pro aplikační bezpečnost využívá podepisování aplikací, které jsou určeny k běhu v prostředí systému iOS. Aplikace může být podepsána přímo společností Apple, nebo jinou certifikační autoritou, která musí být ověřenu u společnosti Apple. Mechanismus pro podepisování aplikací kontroluje binární kód aplikací při běhu v systému. Tento přístup znemožňuje aplikacím měnit svou strukturu. Apple využívá ke kontrole aplikací testy, které zjišťují, zda nebyla v binárním kódu aplikace provedena změna a zda se v aplikaci nevyskytuje nepodepsaný kód. Součástí komponenty je centrální úložiště šifrovacích klíčů. Úložiště umožňuje využití šifrovacích klíčů k nízko úrovňovému čtení a zápisu dat v zařízení. Data v centrálním úložišti jsou oddělena a aplikace nemohou přistupovat k datům ostatních aplikací. Společnost Apple umožňuje vývojářům šifrovat své aplikace pomocí kryptografického API. Architektura kryptografického API využívá šifer AES, 3DES a RC4. Šifrování je navíc navrženo tak, aby využívalo plně hardwarové akcelerace. Šifru AES a SHA1 hash využívá systém iOS jako součást bezpečnosti svého datového rámce. (11 s. 7)
2.3 Upravená útočná vrstva Upravená útočná vrstva je speciální kód, který zpracovává vstupní data. Vrstva funguje na principu vyhledávání zranitelností ve zdrojovém kódu systému. V případě, že útočník nalezne potenciální zranitelnost v systému, nemůže této zranitelnosti využít k tvorbě exploitu, z důvodu průběžné kontroly kódu v systému. Množství kódu, které je potenciálním útočníkům dostupné, je omezené a klíčem k úspěchu této technologie je právě snaha o její minimalizaci. Upravená útočná vrstva se vyskytuje také v klasickém operačním systému pro počítače od 12
společnosti Apple systému Mac OS X. Pro potřeby využití v přenosných zařízeních typu iPhone, nebo iPad, byla značně upravena. Její základní princip zůstal nezměněný. Největším rozdílem je schopnost zpracovávat lokální soubory. Příkladem může být soubor „.psd“. V systému OS X, především ve webovém prohlížeči Safari, je možné spouštět tento typ souborů bez potíží. V mobilní verzi prohlížeče Safari v systému iOS již nelze. Soubory .mov systém OS X běžně podporuje. Naopak systém iOS podporuje pouze jejich upravenou verzi, která je silně okleštěná o původní funkce. (3 s. 6) Známou zajímavostí je neexistence podpory pro technologie Java a Flash v systému iOS. Apple hodnotí tyto dvě technologie z hlediska bezpečnosti jako silně zranitelné a právě z toho důvodu nejsou dostupné pro systém iOS. Tento přístup souvisí s použití upravené útočné vrstvy, která se snaží minimalizovat množství zranitelností v kódu. Java a Flash mají za sebou bohatou historii zranitelností a proto jsou pro systém iOS nedůvěryhodné. Společnost Apple bývá v přístupu k technologiím třetích stran silně nedůvěřivá což má své výhody a nevýhody. Výhodou je maximalizace bezpečnosti systému iOS. Nevýhodou právě nepřítomnost technologií Java a Flash v systému, která způsobuje uživatelům problémy při zobrazování obsahu, který je postaven právě na zmíněných technologií.
2.4 Diverzifikace systému Kromě omezení množství dostupného kódu pro možný útok je systém iOS diverzifikován (Stripped-Down). Snahou je znemožnit nezávislé spouštění různých aplikací v systému, které by mohly následně spouštět další aplikace. Příkladem může být příkazová řádka (Shell) v systému OS X. Útočníci se snaží o tvorbu exploitu, který následně spouští kód právě přes příkazovou řádku. Systém iOS příkazovou řádku neobsahuje a omezuje tak možnosti využití exploitu tímto způsobem. (3 s. 6)
2.5 Oddělování práv Systém iOS využívá při dělení práv stejnou strukturu, jako tradiční systém UNIX, tzn. skupiny uživatelů user, group a root. Nejběžnější využití mají aplikace s udělenými právy „mobile“, které jsou identické k právům „user“. Do této skupiny patří aplikace třetích stran, webový prohlížeč, nebo klient elektronické pošty. Systémové procesy jsou řazeny do skupiny práv „root“. Mezi ně řadíme např. procesy _wireless, nebo _mdnsresponder. V případě napadení webového prohlížeče, je útočník silně limitován skutečností, že webový prohlížeč má 13
pouze práva „mobile“ a nemůže spouštět systémové procesy. Stejně je tomu u aplikací, instalovaných z obchodu AppStore. Všechny instalované aplikace mají přidělená práva „mobile“ a nemohou tak spouštět procesy skupiny práv „root“. (3 s. 6)
2.6 Podepisování kódu Podepisování kódu (Code Signing) je nejdůležitějším bezpečnostním mechanismem, který společnost Apple v systému iOS využívá. Binární kód a knihovny aplikací musí být před spuštěním podepsány důvěryhodnou autoritou. Kód, který není podepsán, nemůže být spuštěn. Uživatelům také není umožněno stahovat a instalovat aplikace z prostředí internetu. Instalovat aplikace mohou pouze z obchodu AppStore, kde jsou aplikace společností Apple kontrolovány a podepsány. Tímto krokem je systém iOS chráněn před malwarem. Aplikace se také nemohou samovolně aktualizovat. Nemožnost stahovat a instalovat kód v prostředí iOS omezuje možnosti využití exploitu, který pro svou funkčnost vyžaduje dodatečné instalace z internetu. (3 s. 7) Podepisování kódu byl také impuls pro pozdější snahu tento bezpečnostní mechanismus obejít. Výsledkem byl vznik tzv. Jailbreaku. Jailbreak je zásah do systému, který umožní uživateli systém upravit podle svých potřeb, především k instalaci aplikací třetích stran, které nejsou podepsány.
2.7 Datová prevence (DEP) Datová prevence, tzv. DEP (Data Execution Prevention), je mechanismus, který brání přístupu kódu k datům v okamžiku, kdy procesor rozpoznává, co je spuštěný kód, a co data. Mechanismus se využívá při exploitu, který se snaží spustit tzv. payload, který uměle zatěžuje procesor. Mechanismus DEP je rozpozná a posoudí jako data, která nemohou být spuštěna. Útočníci se snaží mechanismus DEP obcházet používáním návratově orientovaného programování. Návratově orientované programování, tzv. ROP (Return Oriented Programming) je procedura, kdy útočník zpětně využívá části kódu, které nebyly zpracovány procesorem k ovládnutí systému. Typickým útokem s využitím ROP je tvorba spustitelné a zapisovatelné oblasti v paměti, kterou nemá DEP pod plnou kontrolou. Útočník následně využije vzniklý prostor k exploitu. Problémem při využívání exploitu při obcházení DEP se stává podepisování kódu. Nepodepsaný kód nemůže spustit jinou aplikaci, ani zapisovat data. Právě kombinace mechanismu DEP a podepisování je pro útočníky prakticky neproniknutelná. Jedinou možností, 14
jak systém DEP zcela obejít je využití ROP pro úplné přepsání exploitu, což bývá velmi časově náročné. (3 s. 8)
2.8 Adresní prostor (ASLR) Útočník při využívání ROP potřebuje nutně znát umístění kódu, který se snaží zneužít. V tom mu brání adresní prostor, tzv. ASLR (Address Space Layout Randomization). Adresní prostor náhodně umísťuje objekty v paměti, čímž se pro útočníka stávají nedostupné. V systému iOS jsou takto rozmístěny systémové knihovny, nebo binární kód systému. Mechanismy ASLR společně s DEP pracují od okamžiku spuštění systému. Útočník potřebuje ke zneužití systému znát dvě zranitelnosti. Musí znát, jaký kód je spustitelný a následně jeho umístění v paměti. Právě tomu brání kombinace mechanismů DEP a ASLR. (3 s. 8)
2.9 Testovací prostředí Testovací prostředí, tzv. Sandbox, tvoří bezpečnostní mechanismus, který brání proniknutí malwaru do systému využitím předem stanovených práv. Sandbox pomáhá systému iOS určit, jaká práva by měla být aplikaci přidělena tak, aby aplikace nemohla přistupovat k datům jiných aplikací. Sandbox můžeme považovat za poslední bránu do systému v případě, kdy by se útočníkovi podařilo umístit úspěšně malware do obchodu AppStore. Právě Sandbox zabrání nekontrolovatelnému přístupu k datům jiných aplikací v systému iOS, či spouštění procesů. Mechanismus zabraňuje krádeži osobních dat, např. fotografií, nebo samovolnému posílání sms zpráv. (3 s. 8) Příkladem využití Sandboxu je instalace aplikace Dropbox. Aplikace se po povolení a zadání hesla v obchodě AppStore nainstaluje do zařízení. Aplikace je v Sandboxu posouzena podle vyžadovaných přístupových práv. V případě aplikace Dropbox jsou vyžadována práva pro přístup k fotografiím. Následně je v nastavení systému a sekci „soukromí“ zařazena aplikace Dropbox do záložky „Obrázky“, kde může následně uživatel povolit přístup k fotografiím, či zakázat.
2.10 Šifrování Důležitou součástí zabezpečení systému iOS je šifrování. Společnost Apple využívá k šifrování dat speciální API pro ochranu dat, tzv. Data Protection API, které je současně 15
k dispozici vývojářům aplikací. Cílem API je ochrana citlivých uživatelských dat v zařízení pro případ jeho odcizení. Další metodou pro ochranu dat je využívání bezpečnostních scénářů.
2.10.1 Ochrana dat Jak bylo zmíněno výše, hlavním účelem šifrování dat je jejich ochrana v případě odcizení zařízení. Kromě samotného šifrování existují různé scénáře, podle kterých mohou vývojáři zabezpečit své aplikace. Scénáře můžeme rozdělit do dvou základních skupin, které vychází z již používaného zabezpečení systému iOS. Prvním je šifrování dat a jejich zpřístupnění až po odemčení zařízení uživatelem. Alternativou je dostupnost dat i v případě uzamčeného zařízení. Vývojáři deklarují ve zdrojovém kódu ochranné třídy, tzv. Protection Class, pro rozpoznávání situací, kdy budou data dostupná a kdy nikoliv. Implementace ochranných tříd probíhá s využitím hierarchie klíčů (viz Obrázek 2.2). Základem hierarchie je UID klíč a uživatelské heslo. Každý UID klíč je unikátní pro každé zařízení se systémem iOS. Klíč je vestavěn do šifrovacího akcelerátoru a není dostupný aplikacím v zařízení. Je využíván akcelerátorem k šifrování a dešifrování dat. Po každém odemčení zařízení je uživatelské heslo šifrováno s využitím šifrovacího algoritmu PBKDF2. Výsledkem je vytvoření hesla šifrovacího klíče, který je uchováván v paměti zařízení do jeho uzamčení. UID klíč je používán také k tvorbě šifrovacího klíče zařízení, který je následně využíván k šifrování všech dat v zařízení. (3 s. 47)
UID klíč
Heslo
Klíč zařízení
Klíč třídy NSFileProtectionNone
Souborový klíč
Klíč hesla
Klíč třídy NSFileProtectionCompleteUntilFirstUserAuthentication
Souborový klíč
Souborový klíč
Souborový klíč
Obrázek 2.2 – Hierarchie klíčů, zdroj: (3)
16
Klíč třídy NSProtectionComplete
Souborový klíč
2.10.2 Data Protection API API pro ochranu dat, tzv. Data Protection API je využíváno k ochraně a šifrování dat v zařízení. Je navrženo tak, aby aplikace sami určovali, kdy budou soubory dešifrovány a zpřístupněny. Toho docílí přechodem definovaných ochranných tříd do již existujícího API. Ochranná třída následně informuje systém, kdy dojde k dešifrování souborů. Pro správné použití API k ochraně dat musí každá aplikace nastavit hodnotu atributu NSFileProtectionKey s použitím třídy NSFileManager. (3 s. 48)
17
3 Bezpečnost aplikací Zabezpečení aplikací v systému iOS je částečně odděleno od bezpečnostních mechanismů, které chrání samotný systém iOS. Z výše uvedených bezpečnostních mechanismů se aplikací třetích stran týká především oddělování práv, podepisování kódu a testovací prostředí. Samotné aplikace bývají zabezpečeny systémem šifrování. Důležitým prvkem bezpečnosti aplikací je schvalovací proces, kterému je podrobena každá aplikace, kterou chtějí vývojáři umístit do obchodu AppStore. Kromě schvalovacího procesu je AppStore zabezpečen uživatelskými účty a hesly. V následující kapitole bude popsán schvalovací proces aplikací, umístěných v obchodě AppStore, šifrování a fúze aplikací v systému iOS.
3.1 Schvalovací proces aplikací Běžní uživatelé nemají jinou možnost instalace aplikací, než skrze obchod AppStore. Pokud uživatel zařízení se systémem iOS neprovede zásah do systému, tj. Jailbreak, nemá jinou možnost, jak aplikace třetích stran instalovat. Každá aplikace, která je k dispozici v obchodě AppStore, prochází schvalovacím procesem, při kterém je analyzována a testována před jejím definitivním umístěním v obchodě. Společnost Apple tento krok vysvětluje jako způsob bezplatné antivirové kontroly aplikací, které si uživatelé následně instalují do zařízení. Schvalovací proces se netýká jen potenciálně nebezpečných aplikací, ale také podvodných aplikací, jejíž vývojáři se vydávají za známé mediální, či technologické společnosti a pod falešnou značkou vydávají své aplikace. Zajímavostí je, že i přes poměrně přísný seznam práv a povinností, které jsou sepsány v příručce pro vývojáře, tzv. Guidelines, se v obchodě AppStore někdy vyskytne podobně podvodná aplikace. (12) Samotnému procesu schválení předchází několik povinností pro vývojáře aplikací. Celý proces je naznačen v obrázku (viz Obrázek 3.1). V prvním kroku je nutná registrace vývojářského profilu u společnosti Apple. Po registraci obdrží vývojář certifikát. V dalším kroku obdrží vývojář právo na distribuci aplikace. Před samotným předáním aplikace ke schválení je ještě nutné aplikaci podepsat. Následně je možné aplikaci nahrát v aplikaci iTunes ke schválení. Samotný schvalovací proces vyžaduje přibližně jeden den. V jeho průběhu je aplikace testována, ověřován podpis, recenzována a následně, v případě úspěšného schválení, vložena do obchodu AppStore. (13)
18
Certifikace
Prověření
Podepsání aplikace
Schvalovací proces
Registrace vývojářského profilu Obdržení přechodného certifikátu Obdržení vývojářského certifikátu
Obdržení identifikátoru ID Obdržení prověřeného profilu
Nahrání aplikace Podepsání aplikace
Revize aplikace
Nahrání aplikace ke schválení
Recenze aplikace Předání k vložení do AppStore
Aplikace připravena ke stažení v obchodě AppStore
Obdržení certifikátu distribuce
Obrázek 3.1 – Schvalovací proces aplikací, zdroj: (13)
3.2 Šifrování Šifrování je základní kámen bezpečnosti aplikací v systému iOS. Vývojáři mají k dispozici množství šifrovacích algoritmů a technik, které mohou využít k zabezpečení svých aplikací. Útočníci se při snahách o ovládnutí systému snaží především odcizit uživatelská data a proto je implementace šifrování ze strany vývojářů žádoucí.
3.2.1 Heslo šifrovacího klíče Pro kvalitní implementaci šifrování je nutné použití dostatečně silného hesla šifrovacího klíče. Právě používání hesel vývojáři často podceňují a umožňují tak útočníkům jednodušší proniknutí k datům v aplikaci. Povinností každého vývojáře je stanovení vlastní bezpečnostní politiky pro tvorbu hesla šifrovacího klíče. V odborných publikacích jsou zmiňovány tyto způsoby tvorby bezpečného hesla šifrovacího klíče:
Vysoký počet znaků
Kombinace malých a velkých znaků
Kombinace znaků, která obsahuje číslice
Použití speciálních znaků, např. interpunkce
Zadávání znaků bez předem známé kombinace na klávesnici
Minimalizování využití dohledatelných slov ve slovníku
Nevyužívání strukturovaných dat, např. datum
19
Za silné heslo je považováno takové, které obsahuje minimálně 12 znaků. V minulosti byly zaznamenány útoky na hesla šifrovacích klíčů, které využívali techniky pro vyhledávání způsobů zadávání hesla na klávesnici a následně určování adekvátního pořadí zadaných znaků. Řešením je dodržování zásah tvorby bezpečných hesel. (11 s. 241)
3.2.2 Knihovna Common Crypto Knihovna Common Crypto, známá pod zkratkou CCCrypt, umožňuje nejjednodušší způsob implementace šifrování pro aplikace, určené pro systém iOS. Knihovna obsahuje množství funkcí a algoritmů, které vývojářům usnadňují způsob implementace lepšího zabezpečení jejich aplikací v podobě šifrování. Knihovna podporuje šifrovací algoritmy AES, DES, 3DES a další šifrovací standardy. V závislosti na šifrovacím algoritmu je využívána bloková, či proudová šifra. Bloková šifra rozděluje data do stejně velkých bloků, které následně šifruje. Tento typ šifry využívá nejsilnější šifrování soukromého klíče a využívá se u aplikací, které zpracovávají vstupní data se známou velikostí. Proudová šifra se využívá v případě, že množství dat je tak rozsáhlé, že je není možné šifrovat najednou. Tento typ šifry je rychlejší, než bloková šifra, je ale citlivější na některé druhy softwarových útoků, např. útok bit-flipping. Další funkcí knihovny Common Crypto je řetězení blokové šifry. Řetězení využívá inicializační vektor společně se vstupní hodnotou pro šifrování, použitou u šifrování předešlého bloku. Funkce řetězení znemožňuje útočníkům využít útok typu man-in-the-middle. Útočník nemůže data dešifrovat ani v případě, že získá šifrovací klíč z důvodu přítomnosti inicializačního vektoru, jehož hodnotu nezná. (11 s. 244)
3.2.3 Šifrování Master Key Šifrování Master Key je způsob šifrování šifrovacího klíče. Šifrování využívá mechanismu odvozování KDFs (Key Derivation Functions) pro odvozování klíčů z utajené hodnoty, např. hesla. Právě šifrovací klíč, vytvořený pomocí Master Key, poskytuje výhodu v podobě pružné možnosti měnit heslo šifrovacího klíče. Další výhodou je schopnost upravit heslo tak, aby byl výstupem klíč o požadované velikosti, tj. při použití hesla o čtyřech znacích může být vytvořen klíč o velikosti 128 bitů, 256 bitů, nebo jiné velikosti. Master Key využívá také funkci PBKDF2 (Password Based Key Derivation Function), která je obsažena ve specifikaci šifry RSA a zajišťuje odvození šifrovacího klíče z hesla. (11 s. 252)
20
3.2.4 Geo šifrování Geo šifrování je rozšiřující funkcí pro hesla, zabezpečená s využitím Master Key. Využívá se především v podnikové sféře, kde zaměstnanci využívají slabá hesla. Rozšíření umožňuje šifrovat data na základě geografického umístění uživatele. Funkce odvozuje šifrovací klíč z aktuální geografické pozice zařízení. Nejčastěji ze záznamu GPS umístění. Toto rozšíření brání útočníkům dešifrovat data, pokud neznají koordináty, podle kterých byla data zašifrována. Útočník se musí v prvním kroku zaměřit na zjištění historie geografického umístění zařízení, před přímým pokusem o dešifrování dat. Před použitím Geo šifrování je nutné zablokovat služby, které zaznamenávají polohu zařízení, např. Google Maps. Geo šifrování může být dále rozšířeno s využitím hesla šifrovacího klíče. (11 s. 257)
3.2.5 Rozdělení klíče Vývojáři, jejichž aplikace běží na principu client-server. Tyto aplikace využívají k šifrování dat rozdělený klíč. První klíč je generován uživatelem na zařízení a druhý na straně serveru. Aplikace po spuštění vyžaduje zadání hesla ze strany uživatele a je vytvořena první část klíče. Následně se provede autentizace na straně serveru, kde aplikace obdrží druhou část klíče. (11 s. 266)
3.2.6 Šifrování s veřejným klíčem Šifrování s veřejným klíčem je asymetrická šifra, která využívá oddělené klíče k šifrování a dešifrování dat. Veřejný klíč je využíván pro zlepšení zabezpečení komunikačních kanálů, kde je použito SSL. Šifrování s veřejným klíčem využívají aplikace, zaměřené na finance apod. Zabezpečení prostřednictvím SSL není dostačující v případě, že se chce vývojář vyhnout případné špionáži. S využitím veřejného klíče mohou toto riziko výrazně snížit. (11 s. 266)
3.3 Zabezpečení paměti O zabezpečení paměti systému iOS se stará bezpečnostní mechanismus ASLR, který sám náhodně zapisuje data do úseků paměti tak, aby bylo jejich umístění pro útočníka nedohledatelné. Zabezpečení paměti je nutné z hlediska možné budoucí krádeže zařízení, kdy může útočník získat přístup k fyzickým datům v zařízení. Společně s mechanismem ASLR
21
existuje postup, který se vývojářům doporučuje v případě, že chtějí sami zlepšit zabezpečení paměti zařízení.
Neukládat data a hesla do paměti, dokud nedojde k autentizaci uživatele
Neukládat šifrovací klíče a citlivá data uvnitř instancí jazyka Objective-C
Neukládat ukazatele šifrovacích klíčů uvnitř proměnných v instancích
Smazat citlivá data z paměti, pokud není jejich využití nezbytně nutné
Neukládat citlivá data do paměti, např. šifrovací klíče, nebo čísla kreditních karet, je důležitou součástí bezpečnosti paměti zařízení. Citlivá data by měla být využívána pouze v případě, že je některý program nezbytně vyžaduje. Data nemusí být ukládána ani ve chvíli, kdy program, který je zpracovává, momentálně běží na pozadí. (9 s. 264)
3.4 Zabezpečení běhového prostředí Běhové prostředí systému iOS zajišťuje bezproblémový chod aplikací. Každá aplikace třetích stran, která projde testovacím prostředím, využívá pro svůj chod běhové prostředí. Právě při chodu v běhovém prostředí jsou aplikace třetích stran nejzranitelnější. Odborné publikace popisují několik způsobů, jak aplikaci úspěšně zabezpečit a předcházet jejímu zneužití ze strany útočníka.
3.4.1 Falešná odezva V případě odcizení zařízení se systémem iOS je hlavním cílem útočníka průnik do systému a především k uživatelským datům. Hlavní ochranou bariérou je šifrování, které bylo popsáno v předešlých kapitolách. I přes šifrování může útočník využít nástroje k průniku. Nejjednodušší cestou k uživatelským datům je průnik skrz aplikace třetích stran, které mohou být špatně zabezpečené. Útočníci často využívají specializované nástroje, tzv. Debuggery, k získání plné kontroly nad aplikací. Debugger skenuje aplikaci a zjišťuje její celkový stav. Falešná odezva, tzv. Tamper Response, je mechanismus vestavěný do aplikace, který minimalizuje dopady při jejím narušení. Mechanismus zasílá zpětnou odpověď o stavu aplikace a uchovávaných datech, která se liší od skutečnosti. Útočník tak dostává nepravdivé, nebo neúplné informace o stavu aplikace, což mu komplikuje její zneužití. (11 s. 287)
22
3.4.2 Ochrana uživatelských dat Jak bylo zmíněno výše, útočníka zajímají především uživatelská data. Útočníci si v mnoha případech zálohují zašifrovaná data aplikace pro případ, že by se aplikace pokusila o jejich smazání v případě detekce průniku. Jednou z metod ochrany uživatelských dat je zabudování bezpečnostního mechanismu, který v případě pokusu o vypnutí detektoru průniku upraví data do nečitelné podoby. Tento způsob je použitelný v případě, že útočník neprovede zálohu dat před samotným útokem. V opačném případě je nutné využití kvalitního šifrování dat v aplikaci s využitím šifrovacího klíče a hesla. Změněná data v zařízení mohou být obnovena s využitím šifrovacího klíče. Šifrovací klíč nesmí být před použitím k obnově dat poškozen, jinak jsou data v zařízení trvale neobnovitelná. (11 s. 288)
3.4.3 Vypnutí síťového připojení Aplikace, které mají zabudovaný detektor průniku, považují koncového uživatele v případě narušení za nedůvěryhodného. V případě narušení dojde k přerušení síťového spojení aplikace s koncovými servery. Tento mechanismus zabraňuje zneužití citlivých dat, především čísel platebních karet u aplikací zaměřených na bankovní transakce. V případě detekce narušení aplikace dojde okamžitě k přerušení veškerého spojení a aplikace ohlásí chybu připojení k internetové síti. (11 s. 289)
3.4.4 Zpětná vazba Mechanismus zpětné vazby je využívaný především u podnikových aplikací. Aplikace v případě bezpečnostního incidentu odesílá zprávu na centralizovaný server, kde je zpráva následně vyhodnocena. Součástí zprávy může být popis průniku do aplikace, čas a místo průniku a také IP adresa útočníka, v případě vzdáleného pokusu o proniknutí do aplikace. Útočník může omezit funkci mechanismu zpětné vazby pouze vypnutím síťového připojení, což je velmi složité především z důvodu existence oddělených práv v systému iOS. (11 s. 289)
3.4.5 Logování Implementace logování do aplikace společně s mechanismem zpětné vazby může pomoci zpětně vyhodnotit bezpečnostní incident. Právě logování je důležité pro tvorbu podnikového DRM (Disaster Recovery Management). Záznam všech aktivit v případě 23
bezpečnostního incidentu, např. zasažená data, Wi-Fi připojení, záznam uživatelských aktivit, může zpětně pomoci vyhodnotit pokus o průnik do aplikace a zlepšit tak zabezpečení. (11 s. 289)
3.4.6 Sledování procesů Když útočník využije pro analýzu stavu aplikace nástroj typu Debugger, jádro systému upozorní aplikace. Jen velmi málo vývojářů implementuje do svých aplikací mechanismy pro rozpoznávání zpráv z jádra systému o použití Debuggeru. Včasné upozornění na pokus o skenování aplikace může pomoci vývojářům implementovat různé scénáře. Aplikace může automaticky smazat uživatelská data, upozornit centralizovaný server, odeslat údaje o poloze zařízení, vynutit vypnutí, nebo ukončit proces běhu aplikace. (11 s. 291)
3.4.7 Blokování debuggeru Blokování Debuggeru je další možností, jak zabezpečit aplikace třetích stran. V odborných publikacích se setkáme s množstvím různých technik a návodů, jak aplikaci vylepšit o vlastní mechanismus detekce použití Debuggeru. Ve většině případů k nim autoři přikládají také zdrojové kódy, které mohou vývojáři jednoduše implementovat do svých aplikací. Mechanismus rozpozná, zda byla aplikace skenována a reaguje podle nastaveného scénáře. Většina technik se shoduje ve způsobu reakce na použití debuggeru a to násilným ukončením aplikace, nebo jejím pádem. (11 s. 293)
3.5 Fúze aplikací Fúze aplikací je způsob testování aplikací a vyhledávání potenciálních zranitelností. Při fúzi dochází k nepřerušenému odesílání upravených dat testované aplikaci. Následně je proces vyhodnocen a ve výsledku je možné odhalit zranitelnosti v aplikaci. Fúze je považována za nejsnadnější způsob odhalení chyb v aplikacích v systému iOS a proto je často využívána útočníky pro přípravu exploitu. Při procesu fúze je možné odhalit, jaká data je aplikace schopná přijmout a jaká data následně posílá zpět. Vývojáři mohou také testovat aplikaci pro rozpoznání případných pádů aplikace. Nejčastěji je s pomocí fúze testováno, tzv. přetížení bufferu, kdy jsou odeslána data např. o velikosti 32 bytů. Pokud vývojáři nezahrnuly při vývoji aplikace kontrolu vstupních dat, může dojít v případě změny velikosti přijatých dat k přetížení. Fúze nedokáže odhalit všechny chyby, které mohou po spuštění aplikace vzniknout. U 24
některých aplikací nemůže být odhalen problém s pamětí, nebo kontrolními součty. Proto by neměla být fúze využívána jako jediný nástroj pro analýzu chyb v aplikaci. Pro úspěšné provedení fúze stačí připravit kompatibilní vstupní data, která může aplikace přijmout. (3 s. 139)
3.5.1 Tichá fúze Tichá fúze, tzv. Dumb Fuzzing, je jeden ze způsobů provedení správného otestování aplikace. Tento typ fúze je jednoduchý a zabere pouze několik minut. V prvním kroku je nutné připravit správný vstup pro testovanou aplikaci. Testovanými vstupy mohou být např. soubory .mov, nebo vstup http. Aplikace následně vrací odpověď na platný vstup. V případě neplatného vstupu je odeslána pouze chybová hláška. Vývojáři nemusí v případě použití této fúze znát specifikace formátů a protokolů. (3 s. 141)
3.5.2 Chytrá fúze Chytrá fúze, tzv. Smart Fuzzing, je druhý způsob testování vstupů aplikace. Tento způsob je složitější a vyžaduje hlubší znalosti vývojáře. S využitím chytré fúze je možné vytvářet komplexní vstupy, složené z několika formátů, či protokolů. Vývojáři mohou testovat aplikace s větší pravděpodobností odhalení chyb. Nevýhodou této fúze je nutnost znalosti specifikací formátů, nebo protokolů, které vývojáři používají pro testování vstupu. (3 s. 142)
3.5.3 Analýza výsledků fúze Při použití fúze k testování aplikací je nutné vyhodnotit výstupy, které testovaná aplikace vrací. Jedním ze spolehlivých způsobů analýzy je použití Debuggeru, který vyhodnocuje vrácené výstupy. Vývojáři mají tak možnost rychle a efektivně opravovat chyby, které fúze odhalila a současně opět testovat nové vstupy. Další výhodou použití Debuggeru je možnost sledování otevřených souborů v aplikaci, aktuální využití paměti a další informace o aplikaci. (3 s. 143)
25
4 Typy útoků proti systému iOS Útoky proti systému iOS můžeme rozdělit do dvou kategorií. Malware a Exploit. Malware je obecně software, který dělá v systému něco neočekávaného s úmyslem systém poškodit, nebo zneužít ve prospěch útočníka. V prostředí systému iOS byl zaznamenán výskyt malwaru, který se pokoušel po spuštění získat přístupová práva ke klientu elektronické pošty a rozposílal následně spam. (3 s. 4)Dále byl zaznamenán výskyt malwaru, který získával vzdálenou kontrolu nad zařízením. V neposlední řadě můžeme ve výčtu útoků zmínit tzv. keylogger, který se snažil zaznamenávat uživatelská hesla. Exploit je software, který hledá zranitelnosti ve zdrojovém kódu, které by následně mohl využít útočník k nahrání vlastního kódu, s jehož pomocí může systém zneužít. (3 s. 4)Tvorba exploitu je náročný proces, který útočníkovi zabere množství času. K úspěšné tvorbě exploitu potřebuje útočník znát dvě skutečnosti. Musí vyhledat zranitelnou oblast ve zdrojovém kódu a současně její umístění. Následně do této oblasti nahraje vlastní kód. Snahou společnosti Apple je minimalizovat množství nevyužitého zdrojového kódu a současně existující kód zabezpečit. V ideálním případě by neměl být zdrojový kód přístupný útočníkovi, což není vždy proveditelné. Bezpečnostní mechanismy byly popsány v předchozích kapitolách. V následujících kapitolách budou popsány zdokumentované útoky proti systému iOS.
4.1 Exploit Exploit je jeden z typů softwarových útoků, se kterými se systém iOS potýká. Exploit můžeme charakterizovat jako část zdrojového kódu, která vyhledává zranitelné úseky zdrojového kódu aplikací a snaží se je využít k ovládnutí aplikace, nebo systému. (2 s. 185) Společnost Apple po objevení několika nebezpečných exploitů zařadila do svého bezpečnostního modelu mechanismy DEP a ASLR, jejichž cílem je blokovat snahy útočníků o využívání exploitů k ovládnutí systému. Tvorba exploitu se řídí několika pravidly. Celý proces tvorby je naznačen v obrázku (viz Obrázek 4.1). Proces tvorby můžeme shrnout do těchto bodů (3 s. 186):
Vyhledání zranitelného objektu
Nahrazení zranitelného objektu objektem pod plnou kontrolou útočníka
Použití nového objektu k spuštění upraveného kódu Ani tyto mechanismy nedokáží systém plně ochránit a útočníci vytváří stále složitější a
špatně odhalitelné exploity. V následujících kapitolách jsou popsány exploity s nejčastějším 26
výskytem. V současnosti je většina popsaných exploitů stále aktivní a jejich autoři vyvíjejí novější verze, zaměřené na nové zranitelnosti.
Aplikace uvolní objekt
Zranitelný objekt
Aplikace
Útočník nahradí objekt
Zranitelný objekt
Objekt pod kontrolou útočníka
Aplikace spouští nahrazený objekt
Zranitelný objekt
Aplikace
Objekt pod kontrolou útočníka je používán aplikací
Objekt pod kontrolou útočníka Obrázek 4.1 – Tvorba exploitu, zdroj: (3)
4.1.1 Libtiff Libtiff je systémová knihovna pro čtení a zápis rastrové grafiky ve formátu TIFF. Knihovna Libtiff byla součástí systému iOS od jeho první verze, tj. verze 1.0. Velmi brzy po uvedení první verze zařízení iPhone se systémem iOS 1.0 se objevil první exploit, který využíval zranitelnosti právě v knihovně Libtiff. Tento exploit získal následně pojmenování právě po knihovně, kterou zneužíval. Exploit umožňoval získat přístup k zařízení skrze infikovanou webovou stránku, zobrazenou přes webový prohlížeč Safari. Útočník tak získal vzdálenou kontrolu nad zařízením, navíc s právy „root“. První verze iOS 1.0 neobsahovala oddělování práv. Chyba v systémové knihovně Libtiff byla opravena s verzí systému iOS 1.1.2. V současnosti útočníci naráží na mechanismus datové prevence DEP a adresní prostor ASLR. Nutností je kromě samotné zranitelnosti v systému vyhledávání zranitelností právě v těchto mechanismech. Současně bojují útočníci s omezením v podobě automaticky přidělených práv „mobile“ a testovacím prostředím. (3 s. 9)
27
4.1.2 Fun with SMS Exploit, známý pod názvem Fun with SMS se objevil v roce 2009 a využíval zranitelnosti funkcionality systému iOS, která analyzuje zprávy SMS. Přesněji šlo o chybně určená systémová práva u programu CommCenter, který je zodpovědný právě za zpracovávání SMS zpráv. Tento program měl přidělená práva „root“. Další výhodou pro útočníky byl fakt, že ve verzi systému iOS 2.0, kterého se exploit FUN with SMS týkal, existoval pouze bezpečnostní mechanismus DEP, nikoliv ASLR, který byl implementován později. Neexistence adresního prostoru umožňovala snadné nalezení kódu, který mohl být zneužit. Exploit nebyl dlouhou dobu odhalen především z důvodu jeho tichého chodu. Běžný uživatel si ani nevšiml skutečnosti, že bylo jeho zařízení infikováno. Útočníkovi postačila pouze znalost telefonního čísla zasaženého zařízení, na které mohl následně poslat infikovanou SMS zprávu. (3 s. 10)Ochrana zařízení před tímto typem exploitu byla velmi složitá a pouhé vypnutí zařízení nebylo dostačující. Došlé SMS zprávy se řadí do fronty, kterou zařízení okamžitě po svém probuzení zpracovává. Zranitelnost byla opravena s verzí systému iOS 3.0.1. Program CommCenter byl nově zařazen do skupiny _wireless, místo původní „root“. Skupina _wireless má přístup pouze k systémovým programům, které jsou zodpovědné za bezdrátové služby zařízení.
4.1.3 The Ikee Worm Exploit The Ikee Worm se poprvé objevil po uvedení systému iOS 2.0. Tento exploit je odborníky řazen mezi velmi nebezpečné bezpečnostní hrozby. Hlavním cílem exploitu jsou zařízení, na kterých byl proveden uživatelský Jailbreak, tzn. zásah do systému, při kterém bylo trvale vypnuto podepisování kódu a mechanismus DEP. První verze exploitu The Ikee Worm se zaměřovala na SSH server, který si někteří uživatelé zařízení po zásahu do systému instalovali. Instalovaný SSH server získal po instalaci práva „root“. Snahou útočníka bylo vzdáleně ovládnout zařízení s pomocí výchozího hesla SSH serveru, který si uživatelé ve většině případů neměnili a ponechávali nastavenou výchozí hodnotu. Výchozí hodnota hesla SSH serveru byla všeobecně známá. Útočník následně získával kontrolu nad zasaženým zařízením pouhým připojením k SSH serveru zařízení. Exploit The Ikee Worm se v dalších verzích systému iOS zaměřil na krádež uživatelských dat, uzamčení zařízení, či zneužití zařízení jako součást sítě botnet. (3 s. 10) Exploit bylo poměrně snadné odhalit. V zasaženém zařízení byla upravena tapeta na uzamčené obrazovce, která byla doplněna o větu: „Ikee is never gonna give you up.“
28
4.1.4 Pwn2Own Exploit Pwn2Own se objevil v roce 2010 po uvedení zařízení iPhone 3GS. Využíval zranitelnosti mobilního webového prohlížeče Safari, který v určitých případech umožňoval vzdáleně spouštět kód. Zranitelnost se vyskytovala v systému iOS 3.0, tzn. ve verzi iOS, která neobsahovala mechanismus ASLR. Po vyhledání zranitelného kódu v systému bylo následně možné s využitím ROP otevřít databázi SMS zpráv v zařízení. Tyto zprávy mohly být následně odeslány na vzdálený server. Zranitelnost systému byla ošetřena mechanismem oddělování práv v systému. V případě webového prohlížeče byla následně využívána skupina práv „mobile“, místo původní skupiny „root“. (3 s. 13)
4.1.5 Star Star je název exploitu, známého pod názvem Jailbreakme.com 2. Exploit se poprvé vyskytl v roce 2010 a byl určen především pro zařízení iPhone. K přenosu docházelo po návštěvě webové stránky www.jailbreakme.com. Po návštěvě webové stránky bylo zařízení iPhone vystaveno množství skrytých operací, které provedly postupný Jailbreak, tj. zásah do systému. Útočník v prvním kroku nahrál do zařízení skrz mobilní webový prohlížeč Safari kód. Následně docházelo k přetečení modulu IOKit, který zpracovává vstupní a výstupní operace zařízení. V dalším kroku mohl útočník spouštět svůj kód k ovládnutí jádra systému a následnému vypnutí mechanismu pro podepisování kódu. Společnost Apple v reakci na bezpečnostní hrozbu vydala opravný balíček pro systém iOS ve verzi 4.3.3. (3 s. 14) Webová stránka www.jailbreakme.com je do dnešní doby stále funkční a nabízí uživatelské návody k provedení zásahu do systému.
4.2 Malware Malware je software, který v prostředí systému iOS sbírá uživatelská data, sleduje uživatele, nebo kontroluje některé aplikace. Většina malwaru se vyskytuje v podobě aplikací, které si uživatelé instalují do svých zařízení. (3 s. 4) Uživatel může aplikace instalovat oficiálně pouze z obchodu AppStore, který zastupuje při distribuci aplikací funkci antivirového programu. Instalace neschválených aplikací je možná pouze, pokud uživatel provede Jailbreak a deaktivuje podepisování kódu. Aplikace instalované tímto způsobem obsahují často škodlivý software, např. trojské koně, nebo červy. I přes přísnou kontrolu aplikací v obchodě AppStore se již několika vývojářů podařilo úspěšně umístit malware do obchodu. V následujících 29
kapitolách je pospán malware, který se v posledních třech letech na zařízeních se systémem iOS objevil.
4.2.1 Find & Call Aplikace Find & Call je považována za první objevený malware, určený pro systém iOS a současně systém Android. Byla umístěna v obchodě AppStore začátkem roku 2012. Aplikace po instalaci sbírala data z uživatelského listu kontaktů, která následně odesílala zpět na server vývojáře. Telefonní čísla uživatelů byly následně využity k posílání reklamních sms zpráv. Aplikace byla po několika měsících z obchodu AppStore stažena. (14) Zajímavostí je původní účel aplikace, která byla určena k tvorbě a následnému generování kontaktů.
4.2.2 Storm8 Storm8 je pojmenován po programátorovi her pro systém iOS, který užíval přezdívku Storm8. Malware sbíral telefonní čísla uživatelů zařízení, která následně odesílal zpět na server útočníka. Nejznámější hry, které byly tímto způsobem upraveny, jsou Zombies Live, Vampires Live, či Rockstars Live. Po objevení této zranitelnosti byly všechny hry z dílny programátora Storm8 odstraněny a chyba následně opravena. (3 s. 11) Zajímavostí je úspěch v počtu stažení infikovaných her. Do svého úplného odstranění z obchodu AppStore došlo k více než 20 milionům stažení.
4.2.3 SpyPhone SpyPhone je aplikace, která testuje testovací prostředí pro aplikace v systému iOS. Účelem aplikace je sběr dat o testovacím prostředí, tj. systémové prostředky, přidělovaná práva a činnosti prostředí. SpyPhone využíval shovívavého přístupu testovacího prostředí v podobě přístupu aplikace k uživatelským datům. Zranitelnost testovacího prostředí spočívala ve špatném hodnocení testované aplikace, které v případě využití veřejně dostupného vývojového API, vydaného společností Apple obdržela přístup k uživatelským datům. Přístup byl povolen k telefonnímu číslu zařízení, k seznamu kontaktů, informacím o klientu elektronické pošty, GPS informacím, fotografiím, nebo seznamu názvů přístupových bodů k bezdrátovým sítím Wi-Fi. (3 s. 12)
30
4.2.4 Simply Find It Aplikace Simple Find It je herní aplikace od vývojářského studia Simply Game, která se poprvé objevila v obchodě AppStore v květnu 2013. Aplikace obsahovala trojského koně v podobě hudební znělky hry, která ve zdrojovém kódu mp3 souboru odkazovala na infikované webové stránky. Útočník tak mohl získat plnou kontrolu nad zařízením přes webový prohlížeč, kde mohl využít exploit. (15) Zajímavostí je, že je aplikace zařazena do kategorie zpoplatněného softwaru. U tohoto softwaru se předpokládá větší kvalita a bezpečnost. Aplikace je stále i přes objev trojského koně umístěna v obchodě AppStore a uživatel si ji může stáhnout za 3,59€. Infikovaná mp3 skladba byla odstraněna. I přesto uživatelé ztratili o aplikace studia Simply Game zájem.
4.2.5 Jekyll Jekyll je aplikace, vyvinutá skupinou vývojářů Georgia Tech v polovině roku 2013. Snahou vývojářů bylo dokázat společnosti Apple, že schvalovací proces a následné bezpečné spuštění aplikace v testovacím prostředí není dostatečně účinné. Aplikace byla úspěšně umístěna v obchodě AppStore a následně nainstalována v zařízení. Vývojářům se podařilo získat přístup k aplikacím pro SMS zprávy, emailovému klientu, posílání zpráv na sociální síť Twitter a pořizování fotografií. Hlavním úspěchem vývojářů byla skutečnost, že přístup k ostatním aplikacím získali už v testovacím prostředí. Společnost Apple v reakci na úspěch vývojářů výrazně zpřísnila pravidla pro aplikace, spuštěné v testovacím prostředí a současně zavedla přísnější pravidla pro schvalovací proces aplikací. (16)
31
5 Zásahy do systému Zásah do systému je proces změny chování, struktury, či zabezpečení samotného systému za účelem vlastních modifikací a kontroly systému. V případě systému iOS je proces zásahu do systému označován pojmem Jailbreak. Jailbreak je softwarový nástroj k odemčení zařízení se systémem iOS. Existuje mnoho důvodů, proč uživatelé provádí zásah do systému. Když vynecháme případy z minulosti, kdy byla některá zařízení vystavena skrytému Jailbreaku při návštěvě infikované webové stránky, je hlavní motivací uživatelů snaha více systém otevřít. Nabízí se srovnání se systémem Android, který je distribuován převážně s otevřeným zdrojovým kódem, tzn. pod open-source licencí. Takový systém je možné dále upravovat, nebo jinak kontrolovat. Systém iOS je distribuován pouze na zařízeních od společnosti Apple, se kterými je pevně svázán a je uzavřený. Uživatel nemůže volně systém upravovat, ani instalovat neschválené aplikace třetích stran. Právě snaha otevřít systém úpravám a instalaci nepodepsanému softwaru je hlavní motivací pro provedení Jailbreaku.
5.1 Typy Jailbreaku Existuje několik typů Jailbreaku. Samotný Jailbreak je vyvíjen na základě sledovaných zranitelností v systému iOS. Nové verze se objevují přibližně měsíc po každém uvedení nové verze systému iOS. Jailbreak může být považován za exploit právě z důvodu vyhledávání zranitelností v systému iOS a jejich využívání k ovládnutí systému. Společnost Apple reaguje na vydávání nových verzí Jailbreaku bezpečnostními aktualizacemi, které jsou implementovány do systému iOS v každé nové verzi. Ne vždy se podaří vyřešit zranitelnost v systému iOS pouhou softwarovou záplatou. V těchto případech je nutné uplatnit změny také v hardwaru zařízení. Takové změny se projeví až s uvedením nové verze zařízení se systémem iOS. (3 s. 298) Pravidelné vydávání nových verzí Jailbreaku se změnilo v roce 2014 s vydáním verze systému iOS 7.1. Ani dva měsíce po vydání této verze nebyl vyvinut použitelný Jailbreak, který by bylo možné použít na všech zařízeních s verzí iOS 7.1. Všechny dostupné metody pro Jailbreak systému iOS verze 7.0 jsou značně nespolehlivé. Společnosti Apple se tak daří stále lépe zabezpečit systém proti uživatelským zásahům.
32
5.1.1 Jailbreak podle odolnosti Jailbreak je dělen do dvou základních kategorií. První kategorií je odolnost Jailbreaku, která je vázána na schopnost odolat restartu zřízení a vymazání jeho obsah. Kategorie odolnosti dělí Jailbreak na dva typy, tj. na vázaný Jailbreak a nevázaný jailbreak. (3 s. 299)
5.1.1.1 Vázaný Jailbreak Vázaný Jailbreak, označován pojmem Tethered Jailbreak, je typ Jailbreaku, který je možné smazat z upraveného zařízení úplným restartem a uvedením do továrního nastavení. Slovo vázaný je odvozeno od způsobu provádění tohoto typu Jailbreku, který souvisí s nutností připojení zařízení přes USB kabel k počítači. Tento Jailbreak je vyvíjen na základě nalezených zranitelností v ovladači USB modulu, nebo s využitím exploitu limera1n. (3 s. 299)
5.1.1.2 Nevázaný Jailbreak Nevázaný Jailbreak, označován pojmem Untethered Jailbreak, je druhý typ Jailbreaku, řazený z hlediska odolnosti. Tento Jailbreak není možné odstranit z upraveného zařízení pouhým restartem. Tento typ je mnohem efektivnější a vyžaduje vyhledávání více specifických zranitelností, např. zranitelnosti přímo v jádře systému. V současnosti je výskyt zranitelností v systému iOS limitován integrovanými bezpečnostními mechanismy, které brání vyhledávání zranitelností. Z toho důvodu nejsou současné verze Jailbreaku tak kvalitní, jako jejich první verze. Jailbreak je využíván v podobě exploitu, který upraví souborový systém tak, aby bylo odstraněno právo „root“. Následně je možné zasahovat do jádra systému a deaktivovat např. mechanismus pro podepisování kódu. (3 s. 299)
5.1.2 Jailbreak typu exploit Jailbreak typu exploit je druhá kategorie Jailbreaku. Je založený na vyhledávání zranitelností v systému iOS, přesněji zajištění přístupu k zařízení na úrovni hardwaru, nebo ovládnutí systému práv v testovacím prostředí. Vyhledané zranitelnosti jsou použity k návrhu Jailbreaku. (3 s. 300)
33
5.1.2.1 Jailbreak úrovně Bootrom Jailbreak úrovně Bootrom využívá zranitelnosti hardwarového modulu Bootrom. Zranitelnost v modulu umožňuje přístup k paměti ve chvíli, kdy je nahráváno jádro systému. Následně je možné upravit argumenty, které jsou pamětí načteny z jádra. Velkou výhodou pro tvůrce Jailbreaku je skutečnost, že nalezená zranitelnost v modulu Bootrom nemůže být opravena na úrovni softwaru, ale úplným nahrazením novou verzí modulu. Proto je tento typ Jailbreaku mezi vývojáři velmi oblíbený. (3 s. 300)
5.1.2.2 Jailbreak úrovně iBoot Jailbreak na úrovni iBoot využívá zranitelnosti v softwarové komponentě iBoot, která zajišťuje plynulé nahrávání dat do paměti. Jailbreak na této úrovni není příliš efektivní. Nalezené zranitelnosti mohou být rychle opraveny vydáním opravné verze softwaru. (3 s. 300)
5.1.2.3 Jailbreak na úrovni uživatelské aplikace Jailbreak na úrovni uživatelské aplikace využívá zranitelnosti v uživatelských procesech. Snahou je využít uživatelských práv „root“, nebo „mobile“ k odstranění bezpečnostních mechanismů. Jailbreak využívá dvou exploitů. První exploit umožní svévolné spouštění kódu. Druhý upravuje přístupová práva tak, aby došlo k vypnutí bezpečnostních mechanismů, chránících jádro systému. Posledním krokem je vypnutí podepisování kódu. Zranitelnosti, využívané u tohoto typu Jailbreaku, jsou velmi rychle opravovány bezpečnostními aktualizacemi. (3 s. 301)
5.2 Proces zavedení Jailbreaku K samotnému provedení Jailbreaku zařízení je nutné připravit aplikace na straně počítače, které Jailbreak provedou. K dispozici je velké množství aplikací k provedení Jailbreaku, např. redsn0w (3 s. 301), nebo evisi0n (17). Správnému povedení Jailbreaku předchází zálohování obsahu zařízení v iTunes. Následně je nutné vypnout všechny běžící aplikace na pozadí v systému iOS a vypnout heslo zařízení. Před samotným spuštěním nástroje pro Jailbreak musí být uzavřen program iTunes a zařízení musí být uvedeno do stavu DFU (Device Firmware Upgrade). Stav DFU docílí uživatel současným přidržením tlačítka pro vypnutí zařízení a tlačítka zpět po dobu deseti vteřin. Po deseti vteřinách je nutné pustit tlačítko pro vypnutí a dalších deset vteřin přidržet tlačítko zpět. Po spuštění aplikace pro Jailbreak zařízení 34
je uživatel dotázán, zda chce provézt Jailbreak. Po potvrzení je spuštěn proces Jailbreaku. V posledním kroku je na domovské obrazovce zařízení se systémem iOS zobrazena hláška ke spuštění aplikace pro Jailbreak. Po kliknutí je Jailbreak úspěšně proveden. Na domovské obrazovce se objeví aplikace „Cydia“, která umožňuje instalaci aplikací třetích stran, které nebyly schváleny společností Apple. Proces zavedení jailbreaku je naznačen v obrázku (viz Obrázek 5.1).
Nástroj pro Jailbreak Změna přístupových práv Zastavení mechanismu pro podepisování kódu Ovládnutí jádra systému DFU Instalace aplikace pro zavedení Jailbreaku
Odemčené zařízení
Instalace aplikace pro instalaci aplikací třetích stran Záloha v iTunes
Obrázek 5.1 – Proces zavedení Jailbreaku, zdroj: autor
5.3 Detekce Jailbreaku Jak bylo popsáno v kapitolách výše, Jailbreak zařízení deaktivuje bezpečnostní mechanismy, které chrání systém iOS a s ním spojené aplikace a uživatelská data. Zařízení, na kterém byl použit Jailbreak se tak stává velmi jednoduchým terčem pro potenciální útočníky. Takové zařízení může být napadeno škodlivým softwarem, můžou být odcizena uživatelská data, nebo může být sledováno. Z těchto důvodů je důležitá správná detekce použití Jalbreaku v zařízení. Detekce je žádoucí u zařízení, která byla zakoupena v bazarech, internetových aukčních portálech, nebo přes inzertní centra.
35
5.3.1 Test souborového systému Aplikace, která zajišťuje Jailbreak v zařízení, existuje v podobě aplikace třetích stran a je instalována v zařízení. Takovou aplikací je např. Cydia. Pokud je aplikace zobrazena mezi instalovanými aplikacemi na domovské obrazovce, byl v zařízení použit Jailbreak. Existuje možnost aplikaci pro Jailbreak na domovské stránce skrýt. Pro tyto případy existuje nástroj pro test souborového systému, který vyhledá soubory s názvem Cydia v souborovém systému. (11 s. 329)
5.3.2 Evidence symbolických odkazů Disk, který využívá systém iOS je rozdělen do dvou oblastí. Menší oblast je určena systémovým souborům a má práva pouze pro čtení. Větší oblast je určena pro uživatelská data. Oblast pro systémové soubory je přepisována pouze při aktualizaci softwaru zařízení. Její součástí je složka /Applications, která je výchozí složkou pro instalované aplikace. Jailbreak zařízení přemístí složku /Applications do větší oblasti disku. Tímto krokem získají aplikace třetích stran větší prostor na disku. S využitím funkce lstat je možné ověřit aktuální umístění složky /Applications a ověřit tak možné předchozí manipulace. (11 s. 331)
5.3.3 Test integrity testovacího prostředí Test integrity testovacího prostředí ověřuje omezení, která testovací prostředí uděluje instalovaným aplikacím. Jailbreak upraví předělovaná práva v testovacím prostředí tak, aby aplikace třetích stran měly přímý přístup k systémovým souborům s právy „root“. Ve výchozím nastavení práv testovacího prostředí mají aplikace přidělená práva „mobile“. Tento test je složitější a vyžaduje hlubší znalosti funkce fork(). (11 s. 328)
36
6 Srovnání bezpečnosti mobilních platforem Bezpečnost mobilních platforem se v mnoha ohledech liší. Mobilní platformy jsou rozdílné v použitém bezpečnostním modelu, uzavřenosti zdrojového kódu, distribuce aplikací, nebo v množství softwarových útoků, se kterými se potýkají. Zabezpečení platformy iOS byla věnována první část práce. V následujících kapitolách bude zabezpečení systému iOS srovnáno s bezpečností mobilních platforem Android a Windows Phone.
6.1 Mobilní platformy Android a Windows Phone Bezpečnost systému iOS bude srovnávána se systémy Android a Windows Phone. Výběr těchto platforem nebyl náhodný. Na trhu se v současnosti nachází několik operačních systému, které pohání přenosná zařízení. V pozadí velkých platforem iOS, Android a Windows Phone
jsou menší operační systémy, které jsou vyvíjeny komerčními subjekty, nebo
komunitně. Mezi takové systémy patří Firefox OS (18), Tizen OS (19), Sailfish OS (20), nebo Blackberry OS (21). Uvedené platformy si dlouhodobě udržují pouze zanedbatelné procento trhu přenosných zařízení a proto je zbytečné tyto systémy a jejich zabezpečení srovnávat s většinovými systémy. Základní informace o systémech Android a Windows Phone byly čerpány z bakalářských prací, které se vybraným systémům věnovaly. V následujících odstavcích je představena historie vývoje systémů Android a Windows Phone, společně s jejich základní architekturou.
6.1.1 Android Historie operačního systému Android se začala psát v roce 2003 založením společnosti Android Inc. V roce 2005 byla společnost Android Inc. odkoupena společností Google, která z ní následně vytvořila svou dceřinou společnost. Po této akvizici byl systém Android vyvíjen na linuxovém jádře. V roce 2007 bylo založeno uskupení Open Handset Aliance, sdružující společnosti, věnující se výrobě telefonů, čipů, procesorů a aplikací. Snahou uskupení bylo vytvořit nový otevřený operační systém pro přenosná zařízení. 5. listopadu 2007 bylo ohlášeno první oficiální vydání systému Android, určeného pro širokou škálu přenosných zařízení. (22 s. 5) Systém Android byl postupně vydán v jedenácti verzích, které se shlukují do čtyř hlavních vývojových verzí. (23 s. 14) Nejaktuálnější dostupnou verzí je Android 4.4 Kitkat.
37
Architekturu systému Android je tvořena pěti vrstvým modelem (viz Obrázek 6.1). Struktura modelu se shoduje ve všech zdrojích, které se tematikou architektury systému Android zabývají. (22 s. 6, 23 s. 17) Základní model architektury tvoří vrstva aplikací, Framework, knihovny, běhové prostředí a linuxové jádro. Systém Android je dlouhodobě vyvíjen pod licencí open-source. Zdrojový kód systému je z velké části otevřený. Open-source licence umožňuje vývojářům svobodně systém dále upravovat, či přidávat další vylepšení.
Aplikace Home
Kontakty
Telefón
Prohlížeč
...
Framework aplikací Správce aktivit Správce balíčků
Zajištění obsahu
Správce oken
Správce telefónu
Správce zdrojů
Systém náhledu Správce upozornění
Správce polohy
Knihovny
Běhové prostředí
Správce rozhraní
Framework médií
SQLite
Systémové knihovny
OpenGL | ES
FreeType
WebKit
Virtuální stroj Dalvik
SQL
SSL
libc
Linuxové jádro Grafický ovladač
Ovladač kamery
Ovladač paměti flash
IPC ovladač
Ovladač klávesnice
Ovladač Wi-Fi
Zvukový ovladač
Správa napájení
Obrázek 6.1 – Architektura systému Android, zdroj: (23)
6.1.2 Windows Phone Počátky operačního systému Windows Phone se datuje do roku 2000. Společnost Microsoft na veletrhu CES představila operační systém pro kapesní počítače Windows CE. Systém byl v následujících letech vyvíjen pod názvem Windows Mobile a jeho posední verze 6.5 byla vydána 6. října 2009. Ve své době byl systém Windows Phone určen pro provoz přenosných kapesních počítačů typu Pocket PC. V roce 2009 po nástupu vlny chytrých telefonů s rozměrnými displeji a uživatelským rozhraním přizpůsobeným ovládání dotyky byl vývoj Windows Mobile postupně ukončen a nahrazen nástupcem v podobě Windows Phone. První verze Windows Phone 7 spatřila světlo světa v dubnu 2010. Windows Phone 8 byl představen 29. října 2012. (24 s. 6)Nejaktuálnější verzí je Windows Phone 8.1. 38
Model architektura systému Windows Phone je složena ze tří vrstev (viz Obrázek 6.2). Základní vrstvy jsou vrstva aplikací, vrstva služeb a vrstva služeb operačního systému. Vrstva aplikací dále rozděluje aplikace na klíčové a uživatelské. (25) Systém Windows Phone je vyvíjen s uzavřeným zdrojovým kódem a je distribuován na zařízeních smluvních partnerů společnosti Microsoft.
Uživatelská aplikace
Klíčová aplikace
Zvolená aplikace
Nativní aplikace
Managed Frameworks (Microsoft.* & Systém.*)
Windows Runtime Frameworks (Windows.*)
Windows Runtime Frameworks (Windows.*)
Win32 APIs
Služby Správce spouštění
Správce balíčků
Server navigace
Správce zdrojů
Služby operačního systému Síť
Úložiště
Multimédia
Sensory
Obrázek 6.2 – Architektura systému Windows Phone, zdroj: (25)
6.2 Metodika pro srovnání bezpečnosti Vyhodnocení bezpečnosti mobilních platforem je uskutečněno na principu několika úrovňového srovnání. Každá srovnávaná úroveň je před samotným srovnáním představena. V prvním kroku je stručně připomenuta vybraná oblast zabezpečení systému iOS. Následně je představena srovnávaná oblast u systému Android a poté u systému Windows Phone. Všechny zjištěné poznatky jsou zaneseny v závěrečné tabulce. Tabulka je rozdělena do oblastí, které odpovídají srovnávaným úrovním. Sloupce tabulky reprezentují srovnávané systémy. Řádky reprezentují klíčové vlastnosti zabezpečení srovnávané oblasti v podobě atributů. V případě shody existence klíčové vlastnosti v systému je do tabulky zanesena hodnota v podobě křížku. V případě neshody je pole tabulky ponecháno volné. Do celkového hodnocení bezpečnosti byly zařazeny následující úrovně bezpečnosti:
39
Model bezpečnosti
Bezpečnost systému
Bezpečnost aplikací
Zásahy do systému
6.3 Srovnání bezpečnostních modelů Bezpečnostní model systému iOS se skládá ze čtyř základních komponent (viz kapitola 2.2). Základní model bezpečnosti je centralizovaný a uplatňuje se u všech verzí systému iOS. Pro připomenutí, čtyři základní komponenty bezpečnostního modelu systému iOS jsou:
Bezpečnost zařízení
Datová bezpečnost
Síťová bezpečnost
Bezpečnost aplikací Systém Android není vyvíjen na základě centralizovaně stanoveného bezpečnostního
modelu. I přes využití množství bezpečnostních mechanismů není základní model bezpečnosti k dispozici. Tato skutečnost souvisí pravděpodobně s otevřeností systému, která dává vývojářům, či technologickým společnostem možnosti dalších úprav systému. V takovém případě nemá smysl využívat centralizovaný model bezpečnosti. V případě systému Windows Phone existuje základní model bezpečnosti. Společnost Microsoft nevyužívá pojem model bezpečnosti, ale bezpečnostní cíle. Cíle bezpečnosti jsou téměř identické s bezpečnostním modelem systému iOS. Liší se pouze v rozsáhlejším dělení bezpečnosti systému. Základní komponenty bezpečnosti systému Windows Phone jsou (26):
Integrita systému
Bezpečnost platformy
Datová bezpečnost
Bezpečný přístup
6.4 Srovnání zabezpečení systémů Systém iOS je zabezpečen s využitím bezpečnostních mechanismů a šifrování tak, aby bylo minimalizované riziko proniknutí do systému. Za nejdůležitější bezpečnostní mechanismus systému iOS je považováno podepisování kódu a současně šifrování. Použité bezpečnostní 40
mechanismy (viz kapitola 2) se od chvíle vydání první verze systému iOS stále rozrůstají. Bezpečnostní mechanismy systému iOS jsou:
Upravená útočná vrstva
Diverzifikace systému
Oddělování práv
Podepisování kódu
Datová prevence
Adresní prostor
Testovací prostředí
Šifrování Systém Android je v základu zabezpečen několika mechanismy. Většina zdrojů se
shoduje v důležitosti existence tzv. Sandboxu, což je obdoba testovacího prostředí v systému iOS. Sandbox v prostředí systému Android zajišťuje oddělenost dat aplikací od samotných aplikací. Mezi dalšími bezpečnostními mechanismy je zmiňován Framework aplikací, který zajišťuje šifrování dat. Dále je v systému Android obsažena technologie ASLR, která je navržena velmi podobně, jako mechanismus ASLR v prostředí systému iOS. Důležitým mechanismem je šifrování souborového systému, které chrání data při případné ztrátě zařízení. V systému Android je také obsažen mechanismus pro oddělování práv. Mezi další klíčové bezpečnostní mechanismy systému Android patří mechanismy ProPolice, NX, OpenBSD dlmalloc, nebo OpenBSD calloc. (27) Systém Android obsahuje také obdobu podepisování kódu, resp. aplikací. V případě systému Android je vyžadováno digitální podepsání aplikace s využitím certifikátu, jehož soukromí klíč vlastní vývojář. Odlišností od systému iOS je skutečnost, že certifikát nemusí být podepsaný certifikační autoritou. Mechanismus tedy nezabraňuje instalaci škodlivého softwaru, ale pouze určuje identitu vývojáře konkrétní aplikace. (28) Windows Phone využívá bezpečnostní mechanismy, které se snaží naplňovat bezpečnostní cíle systému. Za klíčový bezpečnostní mechanismus je považována technologie Secure Boot. Technologie zajišťuje načtení pouze validního obrazu systému Windows Phone. Všechny klíčové komponenty, které zajišťují plynulý start systému Windows Phone, jsou digitálně podepsány a ověřovány s pomocí technologie UEFI (Unified Extensible Firmware Interface). K zabezpečení systému je využíván tzv. komorový koncept, který je založený na principu použití minimálních práv a oddělitelnosti. Každá komora je navržena a implementována s využitím bezpečnostní politiky. Windows Phone obsahuje také upravenou útočnou vrstvu, která je navržena identicky, jako v systému iOS. V systému je dále obsaženo 41
oddělování práv a mechanismus pro izolaci, který můžeme přirovnat k diverzifikaci v systému iOS. Obsažen je také mechanismus SDL, což je proces, který zajišťuje kontrolu životního cyklu systému. Windows Phone využívá šifrování k zabezpečení systému a dat AES, které je zajištěno technologií BitLocker. V systému Windows Phone je také obsažena obdoba mechanismu datové prevence, konkrétně DLP (Data Leak Prevention). Windows Phone využívá podobně, jako systém iOS, mechanismus pro podepisování kódu, které brání provozování softwaru, který nebyl ověřen společností Microsoft. Součástí zabezpečení systému Windows Phone je také Sandbox, tzn. testovací prostředí pro instalované aplikace. Systém obsahuje také technologii ASLR (26).
6.5 Srovnání zabezpečení aplikací Pro bezpečnost aplikací v prostředí systému iOS (viz kapitola 3) je klíčová existence schvalovacího procesu. Každá aplikace, která je určená k instalaci pro systém iOS musí projít schvalovacím procesem a následně musí být umístěna v obchodě AppStore. Jiným způsobem není možné aplikaci oficiálně nainstalovat. Důležitým atributem bezpečnosti aplikací v systému iOS je implementace kvalitního šifrování. Další formy implementace bezpečnosti jsou žádoucí, v případě tvorby kvalitní a bezpečné aplikace. Způsoby zabezpečení aplikací v systému iOS můžeme shrnout do následujících úrovní:
Schvalovací proces aplikací
Šifrování
Zabezpečení paměti
Zabezpečení běhového prostředí
Fúze aplikací Vývoj aplikací pro systém Android není zatížen schvalovacím procesem, jako aplikace
pro systém iOS. Umístění aplikace do obchodu Google Play je jednoduché a vývojář musí provézt pouze registraci vývojářského účtu. Před samotným umístěním aplikace do obchodu musí vývojář provézt podepsání aplikace vlastním certifikátem. Tyto kroky nejsou nezbytně nutné k instalaci aplikací v systému Android. Aplikaci je možné nainstalovat mimo obchod Google Play po povolení v nastavení systému, „Zabezpečení“ a „Neznámé zdroje“. Implementace šifrování je obdobně, jako u systému iOS, plně v režii vývojáře. Rozdílem je jen skutečnost, že špatně provedené šifrování může znamenat v systému iOS neschválení aplikace. V systému Android je možné takovou aplikaci umístit do obchodu Play. Nicméně v současnosti je situace kolem šifrování již srovnatelná se systémem iOS. Za zlepšením stojí především 42
samotní vývojáři, kteří vyvíjejí zpoplatněné aplikace, u kterých je kvalitní šifrování žádoucí, nebo velké společnosti, které vyvíjí aplikace pro více platforem současně. Aplikace pro systém Android jsou vyvíjeny převážně v jazyce Java. S jazykem Java souvisí doporučené využívání Unit testů, které můžeme přirovnat k fúzi aplikací v systému iOS. Vývojářům je doporučeno vypínat při vývoji aplikace všechny funkce, které by mohli být následně využity Debuggerem. O bezpečnost paměti a ostatních hardwarových komponent se stará převážně linuxové jádro systému. (29) Aplikace, určené pro Windows Phone, musí projít schvalovacím procesem (30), podobně jako u systému iOS. Vývojář si zaregistruje vývojářský účet a následně umístí aplikaci do obchodu, kde je před zveřejněním uskutečněn schvalovací proces. Rozdílem mezi schvalovacím procesem systému iOS a Windows Phone je dostupnost nástroje Windows Phone Test Kit (31), který vývojářům nabízí bezplatnou možnost otestovat aplikaci před jejím předáním ke schválení. Vývojáři jsou tak předem informování, z jakých důvodů by aplikace nemohla být schválena a mohou efektivně aplikaci upravit. K šifrování je dostupné API pro ochranu dat (Data Protection API), které nabízí nástroje k implementaci šifrovacích algoritmů AES, RSA, SHA1 aj. Vývojářům aplikací je stejně jako u platforem iOS a Android doporučeno zamezení výskytu symbolů ve zdrojovém kódu, které by mohli být následně zneužity Debuggerem. Paměť je zabezpečena s využitím komorového konceptu TCB (Trusted Computing Base) a LPC (Least Privilege Chamber). (32)
6.6 Možnosti zásahů do systémů Systém iOS neumožňuje uživatelům svévolné zásahy do systému, ani instalaci neschválených aplikací. Právě k odemčení zařízení slouží proces, zvaný Jailbreak (viz kapitola 5). Po správném provedení Jailbreaku je možné systém svévolně upravovat a instalovat neschválené aplikace. Nevýhodou Jailbreaku je především nestabilita a možné pády celého systému. U vázaného Jailbreaku existuje také velké riziko ztráty záruky na zařízení se systémem iOS, kde byl Jailbreak proveden. Systém Android je i přes svou otevřenost částečně uzavřen. Do této kategorie patří především aplikace a funkce, které jsou předinstalované výrobcem zařízení. Uživatelé zařízení se systémem Android mohou systém plně odemknout provedením procesu, zvaného „Root zařízení“. Provedení procesu je velmi jednoduché. Uživatelé mohou využít velké množství aplikací, které jsou dostupné přímo v obchodě Google Play, nebo jiných internetových zdrojích. Root zařízení je také nezbytný, pokud chce uživatel provézt nahrazení systému Android jiným 43
operačním systémem, nebo novou verzí systému Android, kterou výrobce dosud oficiálně nevydal. Ztráta záruky při provedení Rootu zařízení není zaručená. Někteří výrobci ji nabízí i přes provedení zásahu do systému. (33) Uživatelé zařízení s Windows Phone nemají tak rozsáhlé možnosti zásahů do systému. Současnou verzi systému Windows Phone 8 se podařilo prolomit teprve nedávno. V dubnu 2014 oznámili vývojáři z XDA-Developers úspěšné prolomení systému. Proces není vůbec snadný. Zásah do systému se neobejde bez zásahu do hardwaru zařízení, což činí tento krok neproveditelný pro běžné uživatele a také pro větší část odborné veřejnosti. Proces vyžaduje rozebrání zařízení a připojení komponenty Advanced Turbo Flasher Box. Komponenta je následně připojena k základní desce zařízení. Proces umožňuje přímí zápis do flash paměti zařízení, čímž se uživatel plně vyhne zabezpečení systému. Po provedení procesu je možné také instalovat neschválené aplikace. (34)
6.7 Vyhodnocení srovnání zabezpečení Hodnocené systémy se příliš neliší v použitých mechanismech pro zabezpečení systému, způsobu zabezpečení aplikací, použitém šifrování, ani v možném zásahu do systému. Výrazně se liší pouze v možnosti instalace neschválených aplikací, nebo v použití centralizovaného modelu bezpečnosti. Tabulka 6.1 zobrazuje přehledně zjištěné poznatky o použitém modelu bezpečnosti, způsobu zabezpečení systému, způsobu zabezpečení aplikací a možnostech zásahu do systému.
44
Hodnocení bezpečnosti mobilních platforem Model bezpečnosti Existence modelu bezpečnosti
Zabezpečení systému
iOS
Android
X iOS
Windows Phone
X Android
Windows Phone
Kontrola vstupních dat
X
Systém práv
X
X
X
Podepisování kódu
X
X
X
Datová prevence
X
Šifrování
X
X
X
Adresní prostor
X
X
X
Testovací prostředí
X
X
X
Zabezpečení aplikací
iOS
Android
Windows Phone
Schvalovací proces aplikací
X
Šifrování
X
X
X
Zabezpečení paměti
X
X
X
Zabezpečení běhového prostředí
X
X
X
Možnosti testování
X
X
X
iOS
Android
Windows Phone
Zásahy do systému
X
X
X
X
Zvýšená odolnost proti zásahu
Tabulka 6.1 - Hodnocení bezpečnosti mobilních platforem, zdroj: autor
Tabulka hodnocení bezpečnosti hodnotí bezpečnost mobilních platforem z hlediska zjištěných poznatků o způsobech zabezpečení. Poznatky jsou rozděleny do atributů, které se snaží nalézt společnou podobu napříč systémy. Systém iOS splňuje všechny atributy 45
bezpečnosti, až na atribut zásahu do systému. V této kategorii existuje zásah do systému v podobě procesu Jailbreak. Odolnost systému proti použití Jailbreaku je velmi slabá. Bezpečnost systému Android není vytvářena na základě bezpečnostního modelu. Bezpečnostní model neexistuje pravděpodobně z důvodu otevřenosti systému. V systému Android není implementovaný žádný mechanismus pro kontrolu vstupních dat v podobě upravené útočné vrstvy. Není zde přítomný ani mechanismus pro datovou prevenci v podobě DEP. V kategorii zabezpečení aplikací není zaveden schvalovací proces pro aplikace, který by v systému představoval primární kontrolu aplikací. Odolnost proti zásahu do systému je mizivá. V tomto případě existuje proces rootu zařízení. V případě systému Android není zásah do systému považován za bezpečnostní hrozbu kvůli možné další modifikaci systému, případně uskutečnění rozsáhlé diagnostiky. Zabezpečení systému Windows Phone obstálo v hodnocení ve všech atributech. Systém je navržen na základě bezpečnostního modelu, systém je zabezpečen s využitím bezpečnostních mechanismů, aplikace jsou zabezpečeny schvalovacím procesem, šifrováním a současně existuje možnost jejich testování. Systém je také vysoce odolný proti zásahu do systému, který není možné uživatelsky provézt. Z celkového hodnocení můžeme konstatovat, že systém Windows Phone je z hodnocených mobilních platforem nejbezpečnější. Systém iOS nesplňuje pouze jediný atribut hodnocení bezpečnosti a to atribut zásahů do systému. Systém Android nesplňuje pět atributů hodnocení bezpečnosti a je v celkovém hodnocení platforem nejméně bezpečný.
46
Závěr Cílem mé práce bylo představení zabezpečení systému iOS a následně porovnat se zabezpečením konkurenčních platforem. V první části práce bylo podrobně zmapováno zabezpečení, které je implementováno do systému iOS. Zdokumentován byl model bezpečnosti, na jehož základě je bezpečnost systému navržena. Zmapovány byly také bezpečnostní mechanismy systému iOS upravená útočná vrstva, diverzifikace systému, oddělování práv, podepisování kódu, použité šifrování, datová prevence, adresní prostor a testovací prostředí. Z hlediska zabezpečení aplikací, určených pro systém iOS, byl představen schvalovací proces pro aplikace, šifrování, zabezpečení paměti, zabezpečení běhového prostředí a testování aplikací v podobě fúze aplikací. Popsány byly také softwarové útoky v podobě malwaru a exploitu. Pozornost byla zaměřena také na možné zásahy do systému. Společnost Apple zabezpečila systém iOS bezpečnostními mechanismy, založenými na bezpečnostním modelu systému iOS. Může se zdát, že systém iOS s využitím mechanismů pro podepisování kódu, oddělování práv, či testovacího prostředí je pro útočníka nedosažitelný. I přes velmi silný systém bezpečnostních mechanismů a šifrování existují exploity, které mohou systém zneužít. Bezpečnost systému iOS se od verze 1.0 do dnešní verze 7.1 značně zlepšila. Součástí systému iOS verze 1.0 byly z výše zmíněných bezpečnostních mechanismů pouze upravená útočná vrstva a diverzifikace systému. Oddělování práv, podepisování kódu, mechanismus DEP, mechanismus ASLR a testovací prostředí byly implementovány až v následujících verzích systému iOS. Součástí zařízení iPhone 5S byl nově také snímač otisků prstu integrovaný do centrálního tlačítka. Osobně očekávám snahy útočníku o útoky proti tomuto bezpečnostnímu mechanismu a současně snahu společnosti Apple o integraci dalších bezpečnostních mechanismů, mezi kterými může být v budoucnosti biometrický snímač sítnice uživatele aj. V druhé části práce bylo zabezpečení systému iOS srovnáno se systémy Android a Windows Phone. Zjištěné poznatky byly zaneseny do tabulky. Ze zjištěných poznatky byl vyhodnocen jako nejbezpečnější systém pro mobilní zařízení Windows Phone. Systém iOS jen mírně ztrácí a v porovnání se systémem Windows Phone je poražen pouze v možném zásahu do systému. Systém Android v porovnání se systémy iOS a Windows Phone výrazněji ztrácí, což je dané z velké části především otevřeností systému, která brání tvorbě centralizovaného bezpečnostního modelu.
47
Zabezpečení mobilních platforem se výrazněji neliší. Ze srovnávaných mobilních platforem je v použitém zabezpečení mírně odlišný systém Android. Jak bylo zmíněno výše, systém Android je distribuován s otevřenou licencí, což umožňuje výrobcům přenosných zařízení systém dále upravovat, případně implementovat vlastní vylepšení. Tato skutečnost otevírá cestu k tvorbě vlastního zabezpečení systému, které doplňuje již používané bezpečnostní mechanismy v základním kódu systému Android. Platformy iOS a Windows Phone jsou v tomto ohledu odlišné. Systém iOS je distribuován pouze na zařízeních, vyrobená společností Apple, což jakékoliv další úpravy systému vylučuje. Systém Windows Phone je distribuován na zařízeních smluvních partnerů, kteří využívají systém na svých zařízeních v původní distribuci. Všechny platformy mají společnou ochranu uživatelských dat, kterou většina zdrojů zmiňuje jako nejdůležitější prvek bezpečnosti. Systémy využívají různé šifrovací algoritmy k šifrování uživatelských dat s využitím dostupných knihoven. Aplikace třetích stran využívají v hojné míře šifrování také. Současně jde o doporučení všem vývojářům aplikací třetích stran, kteří chtějí ochránit jejich uživatele a zároveň zlepšit kvalitativní úroveň samotné aplikace. Používání šifrování a s tím spojená zvýšená odolnost aplikace proti softwarovému útoku může výrazně zlepšit celkovou reputaci vývojáře, jehož aplikace můžou být následně vyhledávanější.
48
Zdroje 1. Mobile malware, mainly aimed at Android devices, jumps 614% in a year. Computerworld [online]. 12. červenec 2013 [vid. 7. květen 2014]. Dostupné z: http://www.computerworld.com/s/article/9240772/Mobile_malware_mainly_aimed_at_ Android_devices_jumps_614_in_a_year 2. About Apple. Apple [online]. [vid. 19. březen 2014]. Dostupné z: http://www.aboutapple.com/ 3. MILLER, Charles. iOS hacker’s handbook. Indianapolis, IN: Wiley, 2012. ISBN 978-1-118-20412-2. 4. WHITE, David a ehow CONTRIBUTOR. iPod Description. eHow [online]. [vid. 19. březen 2014]. Dostupné z: http://www.ehow.com/facts_6962556_ipod-description.html 5. Apple iPhone Basics and Features. About.com iPhone / iPod [online]. [vid. 19. březen 2014]. Dostupné z: http://ipod.about.com/od/introductiontotheiphone/a/iphone-basicsa.htm 6. The Apple iPad -- Description and first impressions. iPhone Life magazine [online]. [vid. 19. březen 2014]. Dostupné z: http://www.iphonelife.com/blog/340/apple-ipad-descriptionand-first-impressions 7. MOSKOVCIAK, Matthew. Apple TV. CNET [online]. [vid. 20. březen 2014]. Dostupné z: http://reviews.cnet.com/apple-tv-review/ 8. iOS Version History: The Evolving iPad/iPhone OS. About.com iPad [online]. [vid. 20. březen 2014]. Dostupné z: http://ipad.about.com/od/ipad_details/ss/iOS-Version-HistoryFeatures.htm 9. iOS vs. Android vs. Windows Phone Market Share 2013: Google Smartphones OS Hits 78 Percent Globally As Apple Inc. Drops Despite Strong iPhone Sales. Latin Post [online]. [vid. 24. březen 2014]. Dostupné z: http://www.latinpost.com/articles/7356/20140215/ios-vsandroid-windows-phone-market-share-2013-google-smartphones.htm 10. Exploring the iOS SDK - Tuts+ Code Tutorial. Code Tuts+ [online]. [vid. 10. duben 2014]. Dostupné z: http://code.tutsplus.com/tutorials/exploring-the-ios-sdk--mobile-13959 11. ZDZIARSKI, Jonathan A. Hacking and securing iOS applications. Sebastopol: O’Reilly Media, 2012. ISBN 978-1-449-31874-1. 12. App Store - jak ve skutečnosti probíhá schvalovací proces aplikací? Jablíčkář.cz [online]. [vid. 2. duben 2014]. Dostupné z: http://jablickar.cz/podvody-kontrola-aplikaci-v-appstore/ 13. BOB. Submit your app to the App Store. Cocos2d Tutorials [online]. [vid. 2. duben 2014]. Dostupné z: http://bobueland.com/cocos2d/2012/how-to-publish-your-app-on-the-appstore/
49
14. First iOS malware hits App Store. Forbes [online]. [vid. 9. duben 2014]. Dostupné z: http://www.forbes.com/sites/adriankingsleyhughes/2012/07/06/first-ios-malware-hitsapp-store/ 15. iOS app contains potential malware. Macworld [online]. 2. květen 2013 [vid. 9. duben 2014]. Dostupné z: http://www.macworld.com/article/2037099/ios-app-containspotential-malware.html 16. Infosecurity - Jekyll Malware Turns Benign Apple iOS Apps into Evildoers. Infosecurity [online]. [vid. 9. duben 2014]. Dostupné z: http://www.infosecuritymagazine.com/view/34041/jekyll-malware-turns-benign-apple-ios-apps-into-evildoers/ 17. How to Jailbreak Your iOS Device. wikiHow [online]. [vid. 14. duben 2014]. Dostupné z: http://www.wikihow.com/Jailbreak-Your-iOS-Device 18. Firefox OS — přizpůsobitelný telefon — skvělé funkce, aplikace a nejen to. Mozilla [online]. [vid. 17. duben 2014]. Dostupné z: http://www.mozilla.org/cs/firefox/os/ 19. Tizen | An open source, standards-based software platform for multiple device categories. Tizen OS [online]. [vid. 17. duben 2014]. Dostupné z: https://www.tizen.org/ 20. SailfishOS.org. Sailfish OS [online]. [vid. 17. duben 2014]. Dostupné z: https://sailfishos.org/ 21. BlackBerryCzech » BlackBerry OS [online]. [vid. 17. duben 2014]. Dostupné z: http://blackberryczech.cz/category/blackberry-os/ 22. PETROVIČ, Marko. Platforma Android v. 4 : Bakalářská práce. Praha : Vysoká škola ekonomická v Praze, Fakulta informatiky a statistiky, 2012 23. UJBÁNYAI, Miroslav. Programujeme pro Android. Vyd. 1. Praha: Grada Publishing, 2012. Průvodce. ISBN 978-80-247-3995-3. 24. ŽENÍŠEK, Jan. Mobilní platforma Windows phone 8 : Bakalářská práce. Praha : Vysoká škola ekonomická v Praze, Fakulta informatiky a statistiky, 2013 25. Windows Phone Architecture. Developer Interior [online]. [vid. 21. duben 2014]. Dostupné z: http://chimera.labs.oreilly.com/books/1234000001853/ch01.html#_windows_phone_arc hitecture 26. MICROSOFT CORPORATION. Windows Phone 8 Security Overview [online]. B.m.: Microsoft Corporation. 2012. Dostupné z: http://blogs.msdn.com/cfsfilesystemfile.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-5506/8272.20_2C00_206.01_5F00_WP8_5F00_SecurityOverview_5F00_102912_5F00_CR.pdf 27. Security Tips | Android Developers [online]. [vid. 25. duben 2014]. Dostupné z: http://developer.android.com/training/articles/security-tips.html 28. Signing Your Applications | Android Developers [online]. [vid. 25. duben 2014]. Dostupné z: http://developer.android.com/tools/publishing/app-signing.html 50
29. KONEČNÝ, Matěj. Vyvíjíme pro Android: Nahraváme aplikaci na Google Play Store. Zdroják [online]. [vid. 27. duben 2014]. Dostupné z: http://www.zdrojak.cz/clanky/vyvijime-proandroid-nahravame-aplikaci-na-google-play-store/ 30. Windows Phone Dev Center. Publish application in Store [online]. [vid. 27. duben 2014]. Dostupné z: http://dev.windowsphone.com/en-us/publish 31. Windows Phone Store Test Kit for Windows Phone 8. Windows Phone Store Kit [online]. [vid. 27. duben 2014]. Dostupné z: http://msdn.microsoft.com/enus/library/windowsphone/develop/hh394032(v=vs.105).aspx 32. DMITRIY EVDOKIMOV, Andrey Chasovskikh. Windows Phone 8 Application Security [online]. B.m.: HackInParis. 2013. Dostupné z: http://andreycha.info/files/hip13/Windows-Phone-8-application-security-slides.pdf 33. Root andriod telefonu. Cyanogenmod [online]. [vid. 27. duben 2014]. Dostupné z: http://cyanogenmod.cz/root/ 34. Windows Phone 8 prolomeny skrze Interop unlock na Lumii 520 [online]. [vid. 27. duben 2014]. Dostupné z: http://smartmania.cz/bleskovky/windows-phone-8-prolomeny-skrzeinterop-unlock-na-lumii-520-7549
51
Seznam obrázků Obrázek 2.1 – Architektura systému iOS, zdroj: (9) ...................................................................... 9 Obrázek 2.2 – Hierarchie klíčů, zdroj: (2) .................................................................................... 16 Obrázek 4.1 – Tvorba exploitu, zdroj: (2).................................................................................... 27 Obrázek 5.1 – Proces zavedení Jailbreaku, zdroj: autor ............................................................. 35 Obrázek 6.1 – Architektura systému Android, zdroj: (22) .......................................................... 38 Obrázek 6.2 – Architektura systému Windows Phone, zdroj: (24) ............................................. 39
Seznam tabulek Tabulka 1.1 - Tržní podíl mobilních operačních systémů, zdroj: (9) ............................................. 8 Tabulka 6.1 - Hodnocení bezpečnosti mobilních platforem, zdroj: autor .................................. 45
52