App Sandbox — een isolatiemechanisme dat de toegang van een applicatie tot het bestandssysteem, gegevens van andere applicaties en systeembronnen van het besturingssysteem beperkt. Elke applicatie werkt in een eigen geïsoleerde omgeving met minimale privileges en vraagt toegang tot extra mogelijkheden via machtigingen. Volgens Apple Security Documentation (2025) is Sandbox een fundamenteel element van gegevensbescherming op mobiele platforms. App Sandbox voorkomt ongeautoriseerde toegang tot gebruikersgegevens, zelfs als een afzonderlijke applicatie wordt gecompromitteerd.
Belangrijkste punten
App Sandbox — een architectonisch beveiligingsmechanisme dat elke applicatie isoleert in een eigen uitvoeringsomgeving met beperkte toegang tot systeembronnen. De term komt van het concept van een “zandbak” voor kinderen — een veilige ruimte waarin een kind kan spelen zonder toegang tot gevaarlijke objecten. Analoog werkt de applicatie in een beperkte omgeving, zonder toegang tot gegevens van andere applicaties of kritieke systeemcomponenten.
Het hoofddoel van Sandbox is de implementatie van het principe van minimale privileges: elke applicatie krijgt alleen de rechten die nodig zijn om de gedeclareerde functies uit te voeren. Zelfs als een aanvaller een kwetsbaarheid in de applicatie vindt, staat de sandbox geen toegang toe tot gegevens van andere applicaties, foto's, contacten of systeembestanden. De schade blijft beperkt tot één enkele applicatie.
Mobiele besturingssystemen hebben sandboxes eerder geïmplementeerd dan desktop-systemen. iOS gebruikt Sandbox sinds de eerste SDK-versie (2008), Android — sinds versie 1.0 (2008), maar met versterking in Android 4.3 (2013) via SELinux. Desktop-systemen halen in: macOS implementeerde Sandbox in 2012, Windows — geïsoleerde UWP-applicaties in Windows 8.
Isolatie in de sandbox wordt bereikt door een combinatie van verschillende mechanismen op verschillende niveaus van het besturingssysteem. Op het niveau van het bestandssysteem krijgt elke applicatie een eigen beveiligde directory waartoe alleen zij volledige toegang heeft. Op processniveau wordt een unieke gebruikersidentificatie (UID) voor elke applicatie gebruikt. Op kernelniveau wordt verplichte toegangscontrole (MAC) toegepast via SELinux of vergelijkbare mechanismen.
Elke applicatie krijgt een eigen rootdirectory op het bestandssysteem van het apparaat. In iOS is dit de directory /var/mobile/Containers/Data/Application/{UUID}, in Android — /data/data/{package_name}. De applicatie kan alleen bestanden lezen en schrijven binnen deze directory. Toegang tot bestanden buiten deze directory wordt geblokkeerd op kernelniveau van het besturingssysteem.
Het systeem biedt ook speciale gedeelde directories met beperkte toegang. In iOS zijn dit de Documents-directory voor gebruikersgegevens, Library voor instellingen en Caches voor tijdelijke bestanden. In Android — interne opslag (getFilesDir) en externe opslag (getExternalFilesDir), waarvoor geen aanvullende machtigingen nodig zijn.
In Android wordt elke applicatie gestart als een apart Linux-proces met een uniek UID (User ID). Het UID wordt toegewezen bij de installatie van de applicatie en blijft onveranderd gedurende de hele levenscyclus. Processen met verschillende UIDs zijn van elkaar geïsoleerd op kernelniveau — ze hebben geen toegang tot elkaars geheugen of bestanden. Een vergelijkbaar mechanisme werkt in iOS via de XNU-kernel en het beveiligingssysteem.
Een extra beveiligingslaag in Android wordt geboden door SELinux (Security-Enhanced Linux) in enforcing-modus sinds Android 4.3. SELinux implementeert verplichte toegangscontrole (MAC): elke actie van een proces wordt gecontroleerd op conformiteit met het beveiligingsbeleid, ongeacht de rechten van de bestandseigenaar. Zelfs als een applicatie met root-UID draait, kan SELinux de toegang tot bepaalde bronnen blokkeren.
De iOS-sandbox wordt beschouwd als een van de strengste onder mobiele besturingssystemen. Elke applicatie wordt geïsoleerd op het niveau van een container — een beveiligd gebied van het bestandssysteem dat ontoegankelijk is voor andere applicaties. iOS gebruikt een combinatie van verplichte toegangscontrole via Sandbox Kernel Extension (Sandbox.kext) en het entitlement-mechanisme voor het verlenen van uitgebreide rechten.
De container van een iOS-applicatie bestaat uit verschillende directories met verschillende toegangsniveaus. Documents — voor gebruikersgegevens die worden bewaard bij back-up via iCloud en iTunes. Library — voor configuratiebestanden en cache. tmp — voor tijdelijke gegevens die het systeem op elk moment kan verwijderen. AppName.app — de applicatiebundel zelf, die alleen-lezen is.
Toegang tot gegevens van andere applicaties is categorisch verboden. iOS biedt geen API om bestanden uit de container van een andere applicatie te lezen. De enige manier om gegevens uit te wisselen is via systeemmechanismen: UIActivityViewController voor delen, UIPasteboard voor klembord, App Groups voor applicaties van dezelfde ontwikkelaar. Elk van deze mechanismen werkt onder controle van het besturingssysteem.
Uitgebreide mogelijkheden buiten de standaard sandbox worden geboden via Entitlements — digitale handtekeningen die worden toegevoegd aan de codehandtekening van de applicatie. Bijvoorbeeld, de entitlement com.apple.security.application-groups stelt applicaties uit een groep in staat een gedeelde container te hebben. Pushmeldingen, iCloud, Apple Pay — al deze functies vereisen de juiste entitlements.
Het is belangrijk op te merken dat entitlements in iOS niet hetzelfde zijn als machtigingen (permissions). Machtigingen worden tijdens runtime aan de gebruiker gevraagd (bijvoorbeeld toegang tot de camera), terwijl entitlements door het systeem worden gecontroleerd in de installatiefase en niet door de gebruiker kunnen worden gewijzigd. De entitlement wordt bepaald door de ontwikkelaar en ondertekend door Apple tijdens het beoordelingsproces van de applicatie.
Android gebruikt een gelaagd sandbox-model gebaseerd op de Linux-kernel. Elke applicatie werkt als een aparte Linux-gebruiker met een uniek UID, wat basisisolatie op proces- en bestandsniveau biedt. Aanvullende lagen — SELinux voor verplichte toegangscontrole en Permissions voor toegangscontrole tot systeem-API's.
SELinux in Android werkt in enforcing-modus, wat de gedwongen toepassing van beveiligingsbeleid betekent. Elke applicatie krijgt een beveiligingscontext (security context) toegewezen en alle systeemaanroepen worden gecontroleerd op conformiteit met het beleid. SELinux in Android bevat meer dan 1500 regels die het bestandssysteem, interprocescommunicatie, sockets en systeemaanroepen dekken.
UID-isolatie voorkomt directe toegang van een applicatie tot bestanden van een andere applicatie. Bijvoorbeeld, applicatie A met UID 10001 kan geen bestanden lezen van applicatie B met UID 10002, zelfs als beide namens dezelfde telefoongebruiker draaien. Dit is het basisprincipe van multi-gebruikersbeveiliging van Linux, aangepast voor mobiele apparaten.
// Toegang tot de eigen directory van de applicatie in Android
File appDir = context.getFilesDir();
File cacheDir = context.getCacheDir();
File externalDir = context.getExternalFilesDir(null);
// Poging tot toegang tot andermans directory veroorzaakt SecurityException
// File otherApp = new File("/data/data/com.other.app/shared_prefs/");
// Gebruik van FileProvider voor veilig delen van bestanden
Uri contentUri = FileProvider.getUriForFile(
context, "com.example.fileprovider", file
);
Android biedt aanvullende mechanismen voor veilige gegevensuitwisseling tussen applicaties. ContentProvider — een Android-component waarmee een applicatie toegang tot haar gegevens aan andere applicaties kan verlenen via een strikt gedefinieerde URI. FileProvider — een veilige manier om bestanden te delen zonder paden van het bestandssysteem bloot te geven.
Hoewel App Sandbox een krachtig beveiligingsmechanisme is, heeft het fundamentele beperkingen. De sandbox beschermt tegen horizontale toegang (applicatie-tot-applicatie), maar niet tegen verticale toegang (malware op kernelniveau of fysieke toegang tot het apparaat). Bij jailbreak of root-toegang kan de sandbox worden omzeild omdat de aanvaller superuser-rechten krijgt.
De tweede beperking — kwaadaardige machtigingen. Als de gebruiker de applicatie toegang geeft tot contacten en microfoon, kan de sandbox het verzamelen van deze gegevens niet voorkomen omdat de applicatie legitieme systeem-API's gebruikt. Bescherming gaat in dit geval over naar het niveau van gebruikersbewustzijn en beoordeling door App Store en Google Play.
De derde beperking — interactie tussen sandboxes. Sommige systeemdiensten (NotificationListenerService, AccessibilityService) hebben uitgebreide toegang tot gegevens van andere applicaties. Een aanvaller kan deze diensten gebruiken om de sandbox te omzeilen als hij de juiste machtigingen krijgt. Google en Apple updaten voortdurend het beleid voor dergelijke diensten.
Ondanks de beperkingen is de sandbox een kritieke beveiligingscomponent van mobiele besturingssystemen. Volgens Android Security Report (2024) voorkomt sandbox-isolatie meer dan 99% van de pogingen tot inter-app-toegang tot gegevens. In combinatie met Code Signing, App Review en runtime-machtigingen vormt Sandbox de gelaagde beveiliging van een modern mobiel apparaat.
Veelgestelde vragen
App Sandbox — een isolatiesysteem waarin elke applicatie in een eigen geïsoleerde ruimte werkt, zonder toegang tot gegevens van andere applicaties zonder expliciete toestemming van de gebruiker.
iOS gebruikt strikte containerisolatie via Sandbox.kext en entitlements. Android gebruikt UID-scheiding op Linux-kernelniveau en SELinux. Het principe is hetzelfde, maar de implementatie en flexibiliteit verschillen.
Omzeiling van de sandbox is alleen mogelijk met jailbreak (iOS) of root-toegang (Android). Op standaardapparaten zonder modificatie van het besturingssysteem is omzeiling van de sandbox niet mogelijk via legitieme API's.
iOS gebruikt UIActivityViewController en App Groups. Android — ContentProvider, FileProvider en Intents. Alle mechanismen werken via systeem-API's met beveiligingscontrole.
Het principe betekent dat de applicatie alleen die rechten krijgt die nodig zijn voor de werking ervan. Toegang tot extra bronnen wordt aangevraagd via machtigingen en verstrekt door de gebruiker.
Samenvatting
We ontwikkelen een mobiele applicatie turnkey
IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.
Lees ook