iOS biztonság 2. - OS Security
Azaz miért bízhatunk meg az iOS operációs rendszerben?
Természetesen szinte minden biztonsági funkciót az operációs rendszer biztosít. Ha azonban az os kompromitálható, akkor elveszne minden biztonsági funkció alapja. Alapvetően meghatározza a biztonságot, hogy kizárólag megbízható operációs rendszer töltődjön be és ne kerülhessen sérült, ártó, vagy elavult kód az informatikai eszközre. Ennek kritikus folyamatai a rendszer betöltődése bekapcsoláskor, a rendszer javítása, és a frissítések letöltése. Nézzük, milyen folyamatok akadályozzák meg az iOS megtámadását.
Secure Boot Chain
LLB – iBoot – iOS Kernel Ez a láncolat biztosítja, hogy kizárólag megbízható operációs rendszer töltődhessen be.
Az iOS eszköz bekapcsolásakor a BootROM a Low-Level Bootloadert (LLB) indítja el. Ez tölti be a boot loadert (iBoot), ami elindítja az iOS kernelt és betölti a Kernel Extension komponenseket. Mindegyik szereplő mielőtt betöltené a következőt, ellenőrzi, hogy megbízható Apple tanúsítvánnyal van-e aláírva. Ha sérült, vagy módosított kódot talál, nem tölti be. Ilyenkor recovery módban indul el az eszköz és a rendszer újratöltését kéri a felhasználótól.
System Software Authorization
DFU mód – iTunes – iCloud – Device ID (ECID) Ezek a kapcsolódó komponensek akadályozzák meg, hogy ne lehessen ártó, vagy elavult kódot rátölteni az iOS eszközre.
Ha a boot állományok megsérülnek, vagy nem megbízható kódot tartalmaznak, az iOS eszköz recovery módba lép a “Connect to iTunes” feliratot kiírva. Ha a LLB is sérült, akkor DFU (Device Firmware Upgrade) módban indítva az eszközt magunk is kezdeményezhetjük a rendszer szoftver felülírását. Mindkét esetben egy számítógéphez csatlakoztatva az Apple iTunes szoftvere segítségével lehet kódot tölteni az eszközre.
Illetéktelen kód feltöltését hármas bizalmi lánc akadályozza: Az eszközön az Apple BootROM DFU funkciója indul el és az eszköz ellenőrzi a számítógépen futó iTunes szoftver digitális aláírását. A hiteles tanúsítvánnyal aláírt iTunes tölti le az Apple cloudból a rendszer szoftvert. Ellenőrzi a letöltött állományok digitális aláírását és áttölti őket a DFU módban csatlakozó iOS eszközre.
Upgrade - Update
Ugyanez a védelmi lánc biztosítja az iOS eszközön futó szoftverek frissítését. Kizárólag Apple által kiadott tanúsítvánnyal rendelkező frissítés telepíthető. Akár az iOS, akár a telepített appok frissítését a már betöltődött, ellenőrzött, megbízható iOS végzi. Akár közvetlenül az iCloud kapcsolaton, vagy management rendszeren keresztül is indítjuk a frissítéseket, a letöltésekor az iOS ellenőrzi az állományok aláírását és sérülésmentességét.
A védelem másik része, hogy az eszköz lejelenti a rajta futó rendszer és az eszköz azonosítóit az Apple update kiszolgálónak. A kiszolgáló azonosítja be, milyen frissítések aktuálisak az adott rendszerre. Így testre szabottan és dedikáltan az adott eszköz azonosítójával (ECID) aláírtan állítja össze a konfiguráció számára az update csomagot. Az eszköz az ECID alapján ellenőrzi, hogy valóban a számára kiajánlott update készletet kapja meg.
Downgrade tiltás
A frissítések várhatóan biztonsági javításokat és fejlettebb funkciókat hoznak. Hogy ne lehessen visszaélni korábbi kódok felfedezett sérülékenységeivel, szükséges védelem a korábbi szoftververzióra visszaállás tiltása. Az eszközön legutóbb használt iOS verzió információit két megbízható forrás biztosítja. Az egyik az iOS kernel, ami nem enged korábbi kód verziókat rátölteni az eszközre. A másik az iCloud, ahol az eszköz azonosítóval el van tárolva a legutóbb futtatott iOS verzió információja és a telepített appok információi.
Az update folyamat nem enged korábbi verziót az eszközre tölteni. Ha DFU módban töltünk fel kódot, akkor is az LLB – iTunes – iCloud láncolat lekérdezi a verzió információkat a cloudból.
Runtime Process Security
Ahogy az appok, az iOS is védetten fut, elkülönítve a felhasználói appoktól. Ráadásul Read-Only módon töltődik be a memóriába és nem is biztosít elérést a rendszer területek módosításához. Tehát a futó operációs rendszer védett az illetéktelen módosításoktól.
Nincs lehetőség módosítani a betöltött processzek futási szintjeit sem az appok, sem az operációs rendszer komponenseinél. Az os nagy része sem kap kiemelt futási szintet, hanem az appok jogosultsági szintjén működik. Minden funkció a kódjában meghatározott jogosultságú. Mivel az Apple teszteli publikálás előtt az appokat, és vélhetően ☺ az operációs rendszert is, nincs létjogosultsága olyan kódnak az iOS eszközön, ami ellenőrizetlen módosításra képes akár a szoftverek kódjában, akár jogosultságaikban.
Talán jól körvonalazódik a szoftverek védettsége az iOS eszközökön. Digitális aláírások, azonosítók és ellenőrzési láncok biztosítják, hogy sem az appok, sem az os nem tartalmazhat ellenőrizetlen kódot és nem tud illetéktelen műveleteket végezni. Biztonsági szempontból még két nagy kérdés van hátra:
- Meg lehet-e törni az Apple eszközt nem hivatalos eszközökkel, és le lehet-e cserélni a rajta futó kódot olyanra, amiben kiirtottuk, vagy megakadályoztuk az ellenőrzési műveleteket? Vagy más oldalról megközelítve, lehet-e rést nyitni a hardver oldaláról illetéktelen kód elhelyezésére, vagy illetéktelen adatelérésre?
- Tudja-e az iOS megfelelően védeni a változó felhasználói adatainkat, ahol nem lehet kikötni, hogy Apple digitális aláírással legyen ellátva az általunk készített adat?
Jövő héten innen folytatjuk.
Ugrás a sorozat elejére: Apple iOS Biztonsági Funkciók
Szeptember 28-án Apple Eszközök Vállalati környezetben címmel rendezvényt tartunk, ahol személyesen is találkozhatunk. A rendezvény ingyenes, de regisztrációhoz kötött.