Mac OS X 10.7 Lev pod kapotou: Sandbox

Mac OS X 10.7 Lev pod kapotou: Sandbox

Apple v Mac OS X 10.7 velmi zlepšil Sandbox, ale stejně jako v Leopardovi, kdy se Sandbox objevil v kernelu, Apple tuto funkci nijak nezdůrazňoval. Kompletní popis Sandboxu je k dispozici na stránkách Sandboxu zde. Stručně řečeno, jedná se o systém, kdy se aplikace dobrovolně vzdá práv, které by normálně měla a uvede pouze ty typy práv, které vyžaduje. Například přístup k internetovým serverům, pokud se jedná o FTP klienta.

Ve Lvovi Apple systém značně vylepšil a nyní jej doporučuje všem aplikacím třetích stran. Lev podporuje okolo 30 různých povolení, které  počínají základními věcmi jako vytváření síťových spojení, přes poslouchání na příslušném portu až po získávání videa nebo obrázků z vestavěné iSight kamery.

Navíc se ve Lvovi objevuje nový proces nazvaný Powerbox. Ten má na starosti všechny práce, které díky sandboxu aplikace nezvládá.  Aplikace může mít zakázáno číst a zapisovat do souborů vlastněných uživatelem. K tomu, aby však mohla uložit data, tento přístup potřebuje. Proto si zavolá démona Powerbox, který pro aplikaci udělá na chvíli díru v sandboxu a dovolí provést specifickou operaci.

Že se nejedná o pouhý výstřel do tmy prozrazuje také další zprávička. Všechny aplikace v Mac App Storu, musí používat Sandbox, počínaje listopadem tohoto roku.

Pokud vám stále ještě není jasný princip Sandboxu, podívejme se na příklad, který uvádí Apple:

Aplikační sandbox znamená, že vývojář příslušné aplikace, nástroje nebo dalšího binárního souboru specifikuje seznam věcí, které jsou běžné při normálním běhu aplikace. Mac OS X pak vyžaduje dodržování tohoto seznamu. Například typický textový editor může potřebovat upravovat soubory na disku, které jsou otevřené uživatelem, ale pravděpodobně nepotřebuje otevírat podpůrné soubory v dalších místech nebo komunikovat po síti. Pokud aplikace obsahuje bezpečnostní díru, která dovoluje spuštění kódu, tento vložený kód pak nemá práva k síťové komunikaci nebo přístupu k podpůrným souborům.

Další částí bezpečnostní architektury je rozdělení práv. Už staří Římané používali "divide et impera" (rozděl a panuj). Stejný přístup volí Lev při práci s komplexními aplikacemi. Rozdělení práv (privilege separation) umožňuje rozdělit aplikaci na kousky (samostatné procesy), které vyžadují menší množství práv. Příkladem je textový editor, který potřebuje aktualizovat soubory s nápovědou. To může vyžadovat stáhnutí souborů z internetu, avšak práva pro zápis mohou být omezena pouze do vnitřního prostoru aplikace. Díky tomu, jakákoliv potencionální chyba v aplikaci, která může být jinak zneužita, bude velmi omezena, protože nebude mít možnost ukládat data mimo prostor nastavený v sandboxu.

V Mac OS X 10.7i tímto způsobem běhá například QuickTime, který deleguje dekódování dat externímu procesu s velmi nízkou úrovní práv (v sandboxu) nazvanému VTDecoderXPCService. A právě XPC je způsob, jakým mohou mezi sebou jednotlivé procesy "hovořit". Další podmínkou, pro zajištění funkce této služby je, aby aplikace byla podepsaná, navíc je služba velmi omezená, protože procesy spuštěné pomocí XPC služby nedědí žádná práva rodičovského procesu, Keychain informace nebo cokoliv jiného.

Odměnou za rozdělení aplikace do sbírky málo privilegovaných částí není jen zvýšená bezpečnost, ale také fakt, že díky pádu jedné komponenty nespadne celá aplikace. Prakticky totéž, co již známe z webových prohlížečů a jejich doplňků. Apple implementovat stejnou funkci na systémovou úroveň.

Poslat Mac OS X 10.7 Lev pod kapotou: Sandbox na facebook
Publikováno 30.11.2010
 

Změna barev | Autorská práva | Kontakt | Podpora | RSS kanály
© 2006 Gandalf, Design by Mirek
Creative Commons License