iOS
Společnost
Apple
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ý.
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.
Zařízení
poháněná syst. 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. 5 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. 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í.
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. 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č. 6 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.
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. 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í. 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í.
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 7 aktualizace zařízení a aplikace iMessage pro textovou
komunikaci s ostatními majiteli zařízení se systémem iOS. 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í. 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.
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.
Architektura bezpečnosti iOS
Architektura
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.
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. 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
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, 10 které jsou v systému iOS předinstalované. 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. 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ů. 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í.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í.
Model
bezpečnosti 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í.
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 11 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.
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í.
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.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 12 instalaci certifikátu v
zařízení. Instalace certifikátů v zařízení se systémem iOS probíhá automaticky.
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.
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.
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 13 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.
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í.
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.
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á 14 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“.
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. 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.
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í, 15 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é.
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.
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. 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.
Š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ě 16 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ářů.
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í.
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.
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. 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.
Š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í.
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
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.
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á.
Š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.
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.
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.
Š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.
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 22 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í.
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.
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í.
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)
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.
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.
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ě 24
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í.
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.
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.
Fúze aplikace
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 25 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.
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ů.
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.
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.
Exploit
Ú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. 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. 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.
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ů
·
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 27 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.
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.
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.
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í.
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. 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.“
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“.
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.
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.
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 30 kapitolách je pospán malware, který se v posledních třech
letech na zařízeních se systémem iOS objevil.
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. Zajímavostí je původní účel aplikace, která byla
určena k tvorbě a následnému generování kontaktů.
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. 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í.
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.
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.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.
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í.
Zásahy do systému
Typy Jailbreaku
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.
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.
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.
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.
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.
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.
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.
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ý.
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.
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.
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, nebo evisi0n . 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í 35 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)
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.
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.
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.
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()
Žádné komentáře:
Okomentovat