Sandbox
Sandbox je v informatice označení pro bezpečnostní mechanismus v rámci počítačové bezpečnosti, který slouží pro oddělování běžících procesů.
Sandbox poskytuje procesům, které v něm běží, omezený přístup ke zdrojům hostitelského počítače - přístup k disku je typicky omezen na vybrané adresáře, přístup k síti na vybrané servery a porty apod.
Sandbox je často využíván pro spouštění neotestovaného kódu nebo nedůvěryhodných programů z neověřených třetích stran, od neověřených dodavatelů, či od nedůvěryhodných uživatelů. Sandbox, doslova přeložený jako pískoviště, je vlastně místo, kde se písek nedostane (nemá dostat) mimo vyhrazenou plochu.
Charakteristika
Sandbox typicky poskytuje přísně kontrolovanou množinu zdrojů pro programy v něm spuštěné, jako odkládací prostor na disku a v paměti (typicky se tento prostor po ukončení programu vymaže, takže v něm nelze uchovávat trvalá data). Přístup k síti, možnost nahlížet do systému, v němž program běží nebo číst ze vstupního zařízení je obvykle zakázána nebo silně omezena. V tomto smyslu je Sandbox specifický příklad virtualizace.
Příklady sandboxu
- Applety jsou soběstačné programy, které běží v virtuálním stroji nebo v interpretu skriptovacího jazyka, který provádí takzvaný „sandboxing“. Podle schématu streamingu aplikací (aplikace, kterou není nutné plně nainstalovat, ale její část, pokud je potřeba, může přicházet například z internetu), je applet stáhnut do vzdáleného klienta a může začít jeho vykonávání dříve, než dorazí v plném rozsahu. Applety jsou běžné v internetových prohlížečích, které používají mechanismus bezpečného spouštění nedůvěryhodného kódu vloženého do webových stránek. Tři všeobecně známé implementace appletu – Adobe Flash, applety Java a Silverlight – poskytují (minimálně) obdélníkové okno pro interakci s uživatelem a nějaké trvalé úložiště (se svolením uživatele).
- Jail (vězení) je limitovaná množina zdrojů, kterou programům nabízí jádro operačního systému. Ta může obsahovat omezení velikosti datového I/O toku (například max. 10kib/s), diskové kvóty, omezení přístupu k síti a omezení v systému souborů (kde všude na disku se může program pohybovat – například chroot). Vězení jsou nejběžněji používaná pro virtuální hosting.
- Rule-based Execution (spuštění založené na pravidlech) dává uživatelům plnou kontrolu nad tím, jaké procesy jsou spuštěny, jaké procesy spouští jiné aplikace, nebo jestli mohou vložit kód do jiné aplikace a jestli mají přístup k síti. Také může ovládat zabezpečení souborů (či registrů ve Windows) pro čtení či zápis. Takže bude méně pravděpodobné, že by uživatelův počítač napadl nějaký virus nebo trojský kůň. SELinux a AppArmor security frameworks jsou implementace pro Linux.
- Virtuální stroje, které emulují kompletní hostitelský počítač, na kterém se může jiný operační systém zavést a spustit jako na skutečném hardwaru. Na takovém operačním systému se provádí „sandboxing“ v tom smyslu, že neběží nativně na počítači a přístup ke zdrojům hostitelského počítače má pouze přes emulátor.
- Sandboxing na nativním hostiteli: Bezpečnostní výzkumníci využívají technologii Sandboxu pro analýzu chování malwaru. Vytvořením prostředí, které napodobuje nebo kopíruje cílové prostředí, mohou výzkumníci zhodnotit, jak malware infikuje a ohrožuje cílového hostitele.
- Systémy využívající zabezpečení pomocí „capability“ mohou být považovány za mechanismus „sandboxingu“. Když se v tomto systému program spustí, dostane určité příznaky a podle těchto příznaků poté může vykonávat určité operace. Implementace založené na těchto způsobilostech, mohou pracovat na různých úrovních, od jádra až do uživatelské oblasti. Příkladem sandboxingu založeném na těchto způsobilostech na uživatelské úrovni může být rendering HTML dokumentů v prohlížeči Google Chrome.
- Online hodnotící systémy pro testování programů v soutěžích.
- Nová generace takzvaných pastebins, které uživatelům umožňují vložit na internet ukázku jejich zdrojového kódu a následně ji spustit.
Reference
V tomto článku byl použit překlad textu z článku Sandbox na anglické Wikipedii.