Aplikační sandbox v mobilním vývoji — co to je, mechanismus a princip fungování

Autor: IT Sectr Publikováno: 2026-05-18 Doba čtení: 8 min

Aplikační sandbox (App Sandbox) — izolační mechanismus, který omezuje přístup aplikace k souborovému systému, datům jiných aplikací a systémovým prostředkům operačního systému. Každá aplikace pracuje ve vlastním izolovaném prostředí s minimálními oprávněními a žádá o přístup k dalším možnostem prostřednictvím povolení. Podle Apple Security Documentation (2025) je Sandbox základním prvkem ochrany dat na mobilních platformách. App Sandbox zabraňuje neoprávněnému přístupu k uživatelským datům i v případě kompromitace jednotlivé aplikace.

Hlavní body

  • App Sandbox — izolační mechanismus aplikací omezující přístup k souborovému systému, procesům a datům jiných aplikací na úrovni operačního systému.
  • Princip fungování — každá aplikace získá vlastní adresář s omezenými právy a spouští se s minimálními oprávněními prostřednictvím povinné kontroly přístupu (MAC).
  • iOS — používá přísnou izolaci na úrovni jádra: každá aplikace pracuje ve vlastním prostředí podobném chroot s unikátním UID.
  • Android — uplatňuje izolaci pomocí SELinux a oddělení UID, každá aplikace se spouští jako samostatný uživatel Linuxu s vlastním procesem a daty.
  • Výjimky — přístup ke sdíleným zdrojům (kontakty, fotky, geolokace) je možný pouze prostřednictvím systémových API s výslovným souhlasem uživatele.

Co je App Sandbox?

Aplikační sandbox (App Sandbox) — architektonický bezpečnostní mechanismus, který izoluje každou aplikaci v jejím vlastním spouštěcím prostředí s omezeným přístupem k systémovým zdrojům. Termín pochází z koncepce „pískoviště“ pro děti — bezpečného prostoru, kde si dítě může hrát bez přístupu k nebezpečným předmětům. Analogicky aplikace pracuje v omezeném prostředí, bez přístupu k datům jiných aplikací nebo kritickým systémovým komponentům.

Hlavním cílem Sandboxu je implementace principu minimálních oprávnění: každá aplikace získá pouze ta práva, která jsou nezbytná pro provádění deklarovaných funkcí. I když útočník najde zranitelnost v aplikaci, sandbox mu neumožní přístup k datům jiných aplikací, fotkám, kontaktům nebo systémovým souborům. Škoda je omezena na rámec jedné aplikace.

Mobilní operační systémy zavedly sandboxy dříve než desktopové. iOS používá Sandbox od vydání první verze SDK (2008), Android — od verze 1.0 (2008), ale s posílením v Android 4.3 (2013) prostřednictvím SELinuxu. Desktopové systémy dohánějí: macOS zavedl Sandbox v roce 2012, Windows — izolované aplikace UWP v systému Windows 8.

Jak funguje izolace v sandboxu?

Izolace v sandboxu je dosažena kombinací několika mechanismů na různých úrovních operačního systému. Na úrovni souborového systému je každé aplikaci přidělen vlastní chráněný adresář, ke kterému má pouze ona plný přístup. Na úrovni procesů se pro každou aplikaci používá jedinečný identifikátor uživatele (UID). Na úrovni jádra se uplatňuje povinná kontrola přístupu (MAC) prostřednictvím SELinuxu nebo podobných mechanismů.

Izolace souborového systému

Každá aplikace získá vlastní kořenový adresář v souborovém systému zařízení. V iOS je to adresář /var/mobile/Containers/Data/Application/{UUID}, v Androidu — /data/data/{package_name}. Aplikace může číst a zapisovat soubory pouze v rámci tohoto adresáře. Přístup k jakýmkoli souborům mimo tento adresář je blokován na úrovni jádra operačního systému.

Systém rovněž poskytuje speciální sdílené adresáře s omezeným přístupem. V iOS jsou to adresář Documents pro uživatelská data, Library pro nastavení a Caches pro dočasné soubory. V Androidu — interní úložiště (getFilesDir) a externí úložiště (getExternalFilesDir), k jejichž přístupu není potřeba dalších povolení.

Izolace procesů a UID

V Androidu je každá aplikace spuštěna jako samostatný proces Linuxu s jedinečným UID (User ID). UID je přiděleno při instalaci aplikace a zůstává nezměněno po celý životní cyklus. Procesy s různými UID jsou od sebe izolovány na úrovni jádra — nemohou přistupovat k paměti nebo souborům toho druhého. Podobný mechanismus funguje v iOS prostřednictvím jádra XNU a jeho ochranného systému.

Další úroveň ochrany v Androidu poskytuje SELinux (Security-Enhanced Linux) v režimu enforcing od verze Android 4.3. SELinux implementuje povinnou kontrolu přístupu (MAC): každá akce procesu je kontrolována na soulad s bezpečnostní politikou nezávisle na právech vlastníka souboru. I když aplikace běží s UID root, SELinux může zablokovat přístup k určitým zdrojům.

Sandbox v iOS

Sandbox iOS je považován za jeden z nejpřísnějších mezi mobilními operačními systémy. Každá aplikace je izolována na úrovni kontejneru — chráněné oblasti souborového systému, ke které je přístup z jiných aplikací nemožný. iOS používá kombinaci povinné kontroly přístupu prostřednictvím Sandbox Kernel Extension (Sandbox.kext) a mechanismu entitlement pro poskytování rozšířených práv.

Struktura kontejneru iOS

Kontejner aplikace iOS se skládá z několika adresářů s různými úrovněmi přístupu. Documents — pro uživatelská data, která jsou uchovávána při zálohování prostřednictvím iCloudu a iTunes. Library — pro konfigurační soubory a mezipaměť. tmp — pro dočasná data, která může systém kdykoli smazat. AppName.app — samotný balíček aplikace, který je pouze pro čtení.

Přístup k datům jiných aplikací je kategoricky zakázán. iOS neposkytuje API pro čtení souborů z kontejneru jiné aplikace. Jediným způsobem výměny dat je prostřednictvím systémových mechanismů: UIActivityViewController pro sdílení, UIPasteboard pro schránku, App Groups pro aplikace stejného vývojáře. Každý z těchto mechanismů pracuje pod kontrolou operačního systému.

Entitlements a App Sandbox v iOS

Rozšířené možnosti nad rámec standardního sandboxu jsou poskytovány prostřednictvím Entitlements — digitálních podpisů, které jsou přidány k podpisu kódu aplikace. Například entitlement com.apple.security.application-groups umožňuje aplikacím z jedné skupiny mít sdílený kontejner. Push notifikace, iCloud, Apple Pay — všechny tyto funkce vyžadují odpovídající entitlements.

Je důležité poznamenat, že entitlements v iOS nejsou totéž co povolení (permissions). Povolení jsou vyžadována od uživatele za běhu (například přístup ke kameře), zatímco entitlements jsou kontrolována systémem ve fázi instalace a uživatel je nemůže změnit. Entitlement je určen vývojářem a podepsán Apple v procesu kontroly aplikace.

Sandbox v Androidu

Android používá vícevrstvý model sandboxu založený na jádře Linuxu. Každá aplikace pracuje jako samostatný uživatel Linuxu s jedinečným UID, což zajišťuje základní izolaci na úrovni procesů a souborů. Další vrstvy — SELinux pro povinnou kontrolu přístupu a Permissions pro kontrolu přístupu k systémovým API.

SELinux a izolace UID

SELinux v Androidu pracuje v režimu enforcing, což znamená vynucené uplatňování bezpečnostních politik. Každé aplikaci je přiřazen bezpečnostní kontext (security context) a všechna systémová volání jsou kontrolována na soulad s politikou. SELinux v Androidu obsahuje více než 1500 pravidel pokrývajících souborový systém, meziprocesovou komunikaci, sockety a systémová volání.

Izolace UID zabraňuje přímému přístupu aplikace k souborům jiné aplikace. Například aplikace A s UID 10001 nemůže číst soubory aplikace B s UID 10002, i když obě běží jménem stejného uživatele telefonu. To je základní princip víceuživatelské bezpečnosti Linuxu přizpůsobený pro mobilní zařízení.

java
// Přístup k vlastnímu adresáři aplikace v Androidu
File appDir = context.getFilesDir();
File cacheDir = context.getCacheDir();
File externalDir = context.getExternalFilesDir(null);

// Pokus o přístup k cizímu adresáři vyvolá SecurityException
// File otherApp = new File("/data/data/com.other.app/shared_prefs/");

// Použití FileProvider pro bezpečné sdílení souborů
Uri contentUri = FileProvider.getUriForFile(
    context, "com.example.fileprovider", file
);

Android poskytuje další mechanismy pro bezpečnou výměnu dat mezi aplikacemi. ContentProvider — komponenta Androidu, která umožňuje aplikaci poskytnout přístup ke svým datům jiným aplikacím prostřednictvím přesně definovaného URI. FileProvider — bezpečný způsob sdílení souborů bez odhalení cest souborového systému.

Omezení a bezpečnost sandboxu

Přestože je App Sandbox mocným ochranným mechanismem, má zásadní omezení. Sandbox chrání před horizontálním přístupem (aplikace-k-aplikaci), ale ne před vertikálním (malware na úrovni jádra nebo fyzický přístup k zařízení). Při jailbreaku nebo root přístupu může být sandbox obejit, protože útočník získá práva superuživatele.

Druhé omezení — škodlivá povolení. Pokud uživatel udělí aplikaci přístup ke kontaktům a mikrofonu, sandbox nemůže zabránit shromažďování těchto dat, protože aplikace používá legitimní systémová API. Ochrana v tomto případě přechází na úroveň povědomí uživatele a kontroly ze strany App Store a Google Play.

Třetí omezení — interakce mezi sandboxy. Některé systémové služby (NotificationListenerService, AccessibilityService) mají rozšířený přístup k datům jiných aplikací. Útočník může tyto služby využít k obejití sandboxu, pokud získá příslušná povolení. Google a Apple neustále aktualizují politiky pro takové služby.

Navzdory omezením je sandbox kritickým bezpečnostním komponentem mobilních operačních systémů. Podle Android Security Report (2024) izolace sandboxu zabraňuje více než 99 % pokusů o mezipřístup k datům. V kombinaci s Code Signing, App Review a runtime oprávněními tvoří Sandbox vícevrstvou ochranu moderního mobilního zařízení.

Často kladené otázky

Co je App Sandbox jednoduchými slovy?

Aplikační sandbox — izolační systém, ve kterém každá aplikace pracuje ve vlastním izolovaném prostoru, bez přístupu k datům jiných aplikací bez výslovného souhlasu uživatele.

Jaký je rozdíl mezi sandboxem v iOS a Androidu?

iOS používá přísnou kontejnerovou izolaci prostřednictvím Sandbox.kext a entitlements. Android používá oddělení UID na úrovni jádra Linuxu a SELinux. Princip je stejný, ale implementace a flexibilita se liší.

Lze sandbox aplikace obejít?

Obejití sandboxu je možné pouze s jailbreak (iOS) nebo root přístupem (Android). Na standardních zařízeních bez modifikace OS není obejití sandboxu možné prostřednictvím legitimních API.

Jak si aplikace vyměňují data prostřednictvím sandboxu?

iOS používá UIActivityViewController a App Groups. Android — ContentProvider, FileProvider a Intents. Všechny mechanismy fungují prostřednictvím systémových API s bezpečnostní kontrolou.

Co je princip minimálních oprávnění v Sandboxu?

Princip znamená, že aplikace získává pouze ta práva, která jsou nezbytná pro její fungování. Přístup k dalším zdrojům je vyžadován prostřednictvím povolení a poskytován uživatelem.

Shrnutí

  • App Sandbox — základní bezpečnostní mechanismus mobilních OS, který izoluje aplikace od sebe na úrovni souborového systému a procesů.
  • Princip fungování — každá aplikace získává vlastní UID, izolovaný adresář a minimální oprávnění s kontrolou přístupu na úrovni jádra.
  • iOS — přísná kontejnerová izolace prostřednictvím Sandbox.kext, rozšířená práva prostřednictvím entitlements, výměna dat prostřednictvím systémových kontrolerů.
  • Android — oddělení UID Linuxu, SELinux v režimu enforcing, ContentProvider a FileProvider pro bezpečné sdílení.
  • Výjimky — systémové služby (AccessibilityService) a uživatelská povolení (kontakty, mikrofon) mohou částečně obejít izolaci.
  • Omezení — sandbox nechrání před root/jailbreak a před legitimním shromažďováním dat prostřednictvím povolených API.
  • Účinnost — zabraňuje více než 99 % pokusů o mezipřístup k aplikacím podle Android Security Report 2024.

Vyvineme mobilní aplikaci na klíč

IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.

Prodiskutovat projekt

Přečtěte si také