Sandboxul aplicațiilor (App Sandbox) — este un mecanism de izolare care limitează accesul aplicației la sistemul de fișiere, datele altor aplicații și resursele sistemului de operare. Fiecare aplicație rulează în propriul mediu izolat cu privilegii minime, solicitând acces la capacități suplimentare prin permisiuni. Conform Apple Security Documentation (2025), Sandbox este un element fundamental al protecției datelor pe platformele mobile. App Sandbox previne accesul neautorizat la datele utilizatorului chiar și în cazul compromiterii unei aplicații individuale.
Principalele
Sandboxul aplicațiilor (App Sandbox) — este un mecanism arhitectural de securitate care izolează fiecare aplicație în propriul mediu de execuție cu acces limitat la resursele sistemului. Termenul provine din conceptul de „cutie cu nisip” pentru copii — un spațiu sigur în care copilul se poate juca fără a avea acces la obiecte periculoase. Analog, aplicația rulează într-un mediu restricționat, neavând acces la datele altor aplicații sau la componentele critice ale sistemului.
Scopul principal al Sandbox este implementarea principiului privilegiilor minime: fiecare aplicație primește doar drepturile necesare pentru îndeplinirea funcțiilor declarate. Chiar dacă un atacator găsește o vulnerabilitate în aplicație, sandboxul nu îi permite să acceseze datele altor aplicații, fotografii, contacte sau fișiere de sistem. Dauna este limitată la cadrul unei singure aplicații.
Sistemele de operare mobile au implementat sandboxurile mai devreme decât cele desktop. iOS utilizează Sandbox de la lansarea primei versiuni SDK (2008), Android — de la versiunea 1.0 (2008), dar cu întărire în Android 4.3 (2013) prin SELinux. Sistemele desktop recuperează: macOS a implementat Sandbox în 2012, Windows — aplicațiile izolate UWP în Windows 8.
Izolarea în sandbox este realizată printr-o combinație de mai multe mecanisme la diferite niveluri ale sistemului de operare. La nivelul sistemului de fișiere, fiecărei aplicații i se alocă un director protejat propriu la care doar ea are acces complet. La nivelul proceselor se utilizează un identificator unic de utilizator (UID) pentru fiecare aplicație. La nivelul nucleului se aplică controlul obligatoriu al accesului (MAC) prin SELinux sau mecanisme similare.
Fiecare aplicație primește propriul director rădăcină în sistemul de fișiere al dispozitivului. În iOS acesta este directorul /var/mobile/Containers/Data/Application/{UUID}, în Android — /data/data/{package_name}. Aplicația poate citi și scrie fișiere doar în interiorul acestui director. Accesul la orice fișiere în afara acestui director este blocat la nivelul nucleului sistemului de operare.
Sistemul oferă, de asemenea, directoare comune speciale cu acces limitat. În iOS acestea sunt directorul Documents pentru datele utilizatorului, Library pentru setări și Caches pentru fișiere temporare. În Android — stocarea internă (getFilesDir) și stocarea externă (getExternalFilesDir), accesul la care nu necesită permisiuni suplimentare.
În Android, fiecare aplicație rulează ca un proces Linux separat cu un UID unic (User ID). UID este atribuit la instalarea aplicației și rămâne neschimbat pe tot parcursul ciclului de viață. Procesele cu UID diferite sunt izolate unele de altele la nivelul nucleului — nu pot accesa memoria sau fișierele celuilalt. Un mecanism similar funcționează în iOS prin nucleul XNU și sistemul său de protecție.
Un nivel suplimentar de protecție în Android este asigurat de SELinux (Security-Enhanced Linux) în modul enforcing începând cu Android 4.3. SELinux implementează controlul obligatoriu al accesului (MAC): fiecare acțiune a procesului este verificată pentru conformitatea cu politica de securitate, independent de drepturile proprietarului fișierului. Chiar dacă aplicația rulează cu UID root, SELinux poate bloca accesul la anumite resurse.
Sandboxul iOS este considerat unul dintre cele mai stricte dintre sistemele de operare mobile. Fiecare aplicație este izolată la nivelul containerului — o zonă protejată a sistemului de fișiere la care accesul este imposibil din alte aplicații. iOS utilizează o combinație de control obligatoriu al accesului prin Sandbox Kernel Extension (Sandbox.kext) și mecanismul entitlement pentru acordarea de drepturi extinse.
Containerul aplicației iOS constă din mai multe directoare cu niveluri diferite de acces. Documents — pentru datele utilizatorului care se păstrează la backup prin iCloud și iTunes. Library — pentru fișiere de configurare și cache. tmp — pentru date temporare pe care sistemul le poate șterge oricând. AppName.app — pachetul aplicației în sine, care este disponibil doar pentru citire.
Accesul la datele altor aplicații este categoric interzis. iOS nu oferă API pentru citirea fișierelor din containerul altei aplicații. Singura modalitate de schimb de date este prin mecanismele de sistem: UIActivityViewController pentru partajare, UIPasteboard pentru clipboard, App Groups pentru aplicațiile aceluiași dezvoltator. Fiecare dintre aceste mecanisme funcționează sub controlul sistemului de operare.
Capabilitățile extinse dincolo de sandboxul standard sunt oferite prin Entitlements — semnături digitale care sunt adăugate la semnătura de cod a aplicației. De exemplu, entitlement-ul com.apple.security.application-groups permite aplicațiilor dintr-un grup să aibă un container comun. Notificările Push, iCloud, Apple Pay — toate aceste funcții necesită entitlements corespunzătoare.
Este important de menționat că entitlements în iOS nu sunt același lucru cu permisiunile (permissions). Permisiunile sunt solicitate de la utilizator în runtime (de exemplu, accesul la cameră), iar entitlements sunt verificate de sistem în faza de instalare și nu pot fi modificate de utilizator. Entitlement-ul este determinat de dezvoltator și semnat de Apple în procesul de revizuire a aplicației.
Android utilizează un model de sandbox multistrat bazat pe nucleul Linux. Fiecare aplicație rulează ca un utilizator Linux separat cu un UID unic, ceea ce asigură izolarea de bază la nivel de procese și fișiere. Straturi suplimentare — SELinux pentru controlul obligatoriu al accesului și Permissions pentru controlul accesului la API-urile sistemului.
SELinux în Android funcționează în modul enforcing, ceea ce înseamnă aplicarea obligatorie a politicilor de securitate. Fiecărei aplicații i se atribuie un context de securitate (security context), iar toate apelurile de sistem sunt verificate pentru conformitatea cu politica. SELinux în Android conține peste 1500 de reguli care acoperă sistemul de fișiere, comunicarea interproces, socket-urile și apelurile de sistem.
Izolarea UID previne accesul direct al unei aplicații la fișierele altei aplicații. De exemplu, aplicația A cu UID 10001 nu poate citi fișierele aplicației B cu UID 10002, chiar dacă ambele rulează în numele aceluiași utilizator al telefonului. Acesta este principiul de bază al securității multi-utilizator Linux, adaptat pentru dispozitive mobile.
// Accesul la propriul director al aplicației în Android
File appDir = context.getFilesDir();
File cacheDir = context.getCacheDir();
File externalDir = context.getExternalFilesDir(null);
// Încercarea de acces la directorul altcuiva va genera SecurityException
// File otherApp = new File("/data/data/com.other.app/shared_prefs/");
// Utilizarea FileProvider pentru partajarea sigură a fișierelor
Uri contentUri = FileProvider.getUriForFile(
context, "com.example.fileprovider", file
);
Android oferă mecanisme suplimentare pentru schimbul securizat de date între aplicații. ContentProvider — o componentă Android care permite aplicației să ofere acces la datele sale altor aplicații printr-un URI strict definit. FileProvider — o modalitate sigură de partajare a fișierelor fără dezvăluirea căilor sistemului de fișiere.
Deși App Sandbox este un mecanism puternic de protecție, are limitări fundamentale. Sandboxul protejează împotriva accesului orizontal (aplicație-la-aplicație), dar nu și împotriva celui vertical (software malițios la nivelul nucleului sau acces fizic la dispozitiv). La jailbreak sau acces root, sandboxul poate fi ocolit, deoarece atacatorul obține drepturi de superutilizator.
A doua limitare — permisiunile malițioase. Dacă utilizatorul acordă aplicației acces la contacte și microfon, sandboxul nu poate preveni colectarea acestor date, deoarece aplicația utilizează API-uri de sistem legitime. Protecția în acest caz trece la nivelul conștientizării utilizatorului și al revizuirii App Store și Google Play.
A treia limitare — interacțiunea între sandboxuri. Unele servicii de sistem (NotificationListenerService, AccessibilityService) au acces extins la datele altor aplicații. Un atacator poate folosi aceste servicii pentru a ocoli sandboxul dacă obține permisiunile corespunzătoare. Google și Apple actualizează constant politicile pentru astfel de servicii.
În ciuda limitărilor, sandboxul este o componentă critică de securitate a sistemelor de operare mobile. Conform Android Security Report (2024), izolarea sandbox previne peste 99% din încercările de acces inter-aplicații la date. În combinație cu Code Signing, App Review și permisiunile runtime, Sandbox formează protecția multistrat a unui dispozitiv mobil modern.
Întrebări frecvente
Sandboxul aplicațiilor — este un sistem de izolare în care fiecare aplicație rulează în propriul spațiu izolat, neavând acces la datele altor aplicații fără permisiunea explicită a utilizatorului.
iOS utilizează izolarea strictă prin container cu Sandbox.kext și entitlements. Android utilizează separarea UID la nivelul nucleului Linux și SELinux. Principiul este același, dar implementarea și flexibilitatea diferă.
Ocolirea sandboxului este posibilă doar cu jailbreak (iOS) sau acces root (Android). Pe dispozitive standard fără modificarea sistemului de operare, ocolirea sandboxului este imposibilă prin API-uri legitime.
iOS utilizează UIActivityViewController și App Groups. Android — ContentProvider, FileProvider și Intents. Toate mecanismele funcționează prin API-uri de sistem cu control de securitate.
Principiul înseamnă că aplicația primește doar acele drepturi care sunt necesare pentru funcționarea sa. Accesul la resurse suplimentare este solicitat prin permisiuni și acordat de utilizator.
Concluzii
Vom dezvolta o aplicație mobilă la cheie
IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.
Citiți și