Пясъчна кутия за приложения в мобилното разработване — какво е това, механизъм и принцип на работа

Автор: IT Sectr Публикувано: 2026-05-18 Време за четене: 8 мин

Пясъчна кутия за приложения (App Sandbox) — механизъм за изолация, който ограничава достъпа на приложението до файловата система, данните на други приложения и системните ресурси на операционната система. Всяко приложение работи в собствена изолирана среда с минимални привилегии, като иска достъп до допълнителни възможности чрез разрешения. Според Apple Security Documentation (2025), Sandbox е основен елемент за защита на данните на мобилните платформи. App Sandbox предотвратява неоторизиран достъп до потребителски данни дори при компрометиране на отделно приложение.

Основни точки

  • App Sandbox — механизъм за изолация на приложения, който ограничава достъпа до файловата система, процесите и данните на други приложения на ниво операционна система.
  • Принцип на работа — всяко приложение получава собствена директория с ограничени права и се стартира с минимални привилегии чрез задължителен контрол на достъпа (MAC).
  • iOS — използва строга изолация на ниво ядро: всяко приложение работи в собствена среда, подобна на chroot, с уникален UID.
  • Android — прилага изолация чрез SELinux и разделяне на UID, всяко приложение се стартира като отделен Linux потребител със собствен процес и данни.
  • Изключения — достъпът до общи ресурси (контакти, снимки, геолокация) е възможен само чрез системни API с изричното съгласие на потребителя.

Какво е App Sandbox?

Пясъчна кутия за приложения (App Sandbox) — архитектурен механизъм за сигурност, който изолира всяко приложение в собствена среда за изпълнение с ограничен достъп до системни ресурси. Терминът произлиза от концепцията за „пясъчна кутия“ за деца — безопасно пространство, в което детето може да играе, без да има достъп до опасни предмети. Аналогично, приложението работи в ограничена среда, без достъп до данни на други приложения или критични системни компоненти.

Основната цел на Sandbox е прилагането на принципа за минимални привилегии: всяко приложение получава само правата, необходими за изпълнение на декларираните функции. Дори ако нападател открие уязвимост в приложението, пясъчната кутия не му позволява достъп до данни на други приложения, снимки, контакти или системни файлове. Щетата е ограничена до рамките на едно приложение.

Мобилните операционни системи въведоха пясъчни кутии по-рано от десктоп системите. iOS използва Sandbox от пускането на първата версия на SDK (2008), Android — от версия 1.0 (2008), но с усилване в Android 4.3 (2013) чрез SELinux. Десктоп системите наваксват: macOS въведе Sandbox през 2012 г., Windows — изолирани UWP приложения в Windows 8.

Как работи изолацията в пясъчната кутия?

Изолацията в пясъчната кутия се постига чрез комбинация от няколко механизма на различни нива на операционната система. На ниво файлова система на всяко приложение се отделя собствена защитена директория, до която само то има пълен достъп. На ниво процеси се използва уникален идентификатор на потребител (UID) за всяко приложение. На ниво ядро се прилага задължителен контрол на достъпа (MAC) чрез SELinux или подобни механизми.

Изолация на файловата система

Всяко приложение получава собствена коренова директория във файловата система на устройството. В iOS това е директорията /var/mobile/Containers/Data/Application/{UUID}, в Android — /data/data/{package_name}. Приложението може да чете и записва файлове само в тази директория. Достъпът до всякакви файлове извън тази директория се блокира на ниво ядро на операционната система.

Системата също така предоставя специални общи директории с ограничен достъп. В iOS това са директория Documents за потребителски данни, Library за настройки и Caches за временни файлове. В Android — вътрешно хранилище (getFilesDir) и външно хранилище (getExternalFilesDir), достъпът до които не изисква допълнителни разрешения.

Изолация на процеси и UID

В Android всяко приложение се стартира като отделен Linux процес с уникален UID (User ID). UID се задава при инсталиране на приложението и остава непроменен през целия жизнен цикъл. Процесите с различни UID са изолирани един от друг на ниво ядро — не могат да получат достъп до паметта или файловете на другия. Подобен механизъм работи в iOS чрез ядрото XNU и неговата защитна система.

Допълнително ниво на защита в Android осигурява SELinux (Security-Enhanced Linux) в enforcing режим от версия Android 4.3. SELinux прилага задължителен контрол на достъпа (MAC): всяко действие на процес се проверява за съответствие с политиката за сигурност, независимо от правата на собственика на файла. Дори ако приложението работи с root UID, SELinux може да блокира достъпа до определени ресурси.

Пясъчна кутия в iOS

Пясъчната кутия на iOS се счита за една от най-строгите сред мобилните операционни системи. Всяко приложение е изолирано на ниво контейнер — защитена област на файловата система, достъпът до която е невъзможен от други приложения. iOS използва комбинация от задължителен контрол на достъпа чрез Sandbox Kernel Extension (Sandbox.kext) и механизъм entitlement за предоставяне на разширени права.

Структура на iOS контейнера

Контейнерът на iOS приложение се състои от няколко директории с различни нива на достъп. Documents — за потребителски данни, които се запазват при архивиране чрез iCloud и iTunes. Library — за конфигурационни файлове и кеш. tmp — за временни данни, които системата може да изтрие по всяко време. AppName.app — самият пакет на приложението, който е само за четене.

Достъпът до данни на други приложения е категорично забранен. iOS не предоставя API за четене на файлове от контейнера на друго приложение. Единственият начин за обмен на данни е чрез системни механизми: UIActivityViewController за споделяне, UIPasteboard за клипборд, App Groups за приложения на един разработчик. Всеки от тези механизми работи под контрола на операционната система.

Entitlements и App Sandbox в iOS

Разширените възможности извън стандартната пясъчна кутия се предоставят чрез Entitlements — цифрови подписи, които се добавят към подписа на кода на приложението. Например, entitlement com.apple.security.application-groups позволява на приложения от една група да имат общ контейнер. Push известия, iCloud, Apple Pay — всички тези функции изискват съответните entitlements.

Важно е да се отбележи, че entitlements в iOS не са същото като разрешения (permissions). Разрешенията се искат от потребителя по време на изпълнение (например достъп до камера), докато entitlements се проверяват от системата на етапа на инсталиране и не могат да бъдат променяни от потребителя. Entitlement се определя от разработчика и се подписва от Apple в процеса на преглед на приложението.

Пясъчна кутия в Android

Android използва многослоен модел на пясъчна кутия, базиран на ядрото на Linux. Всяко приложение работи като отделен Linux потребител с уникален UID, което осигурява основна изолация на ниво процеси и файлове. Допълнителни слоеве — SELinux за задължителен контрол на достъпа и Permissions за контрол на достъпа до системни API.

SELinux и UID изолация

SELinux в Android работи в enforcing режим, което означава задължително прилагане на политиките за сигурност. На всяко приложение се задава контекст на сигурност (security context) и всички системни извиквания се проверяват за съответствие с политиката. SELinux в Android съдържа над 1500 правила, обхващащи файловата система, междупроцесната комуникация, сокетите и системните извиквания.

UID изолацията предотвратява директния достъп на приложение до файловете на друго приложение. Например, приложение A с UID 10001 не може да чете файлове на приложение B с UID 10002, дори ако и двете работят от името на един и същ потребител на телефона. Това е основният принцип на многопотребителската сигурност на Linux, адаптиран за мобилни устройства.

java
// Достъп до собствената директория на приложението в Android
File appDir = context.getFilesDir();
File cacheDir = context.getCacheDir();
File externalDir = context.getExternalFilesDir(null);

// Опитът за достъп до чужда директория ще предизвика SecurityException
// File otherApp = new File("/data/data/com.other.app/shared_prefs/");

// Използване на FileProvider за сигурно споделяне на файлове
Uri contentUri = FileProvider.getUriForFile(
    context, "com.example.fileprovider", file
);

Android предоставя допълнителни механизми за сигурен обмен на данни между приложения. ContentProvider — компонент на Android, който позволява на приложение да предостави достъп до своите данни на други приложения чрез строго определен URI. FileProvider — сигурен начин за споделяне на файлове без разкриване на пътищата на файловата система.

Ограничения и сигурност на пясъчната кутия

Въпреки че App Sandbox е мощен защитен механизъм, той има фундаментални ограничения. Пясъчната кутия защитава от хоризонтален достъп (приложение-към-приложение), но не и от вертикален (зловреден софтуер на ниво ядро или физически достъп до устройството). При jailbreak или root достъп, пясъчната кутия може да бъде заобиколена, тъй като нападателят получава права на суперпотребител.

Второто ограничение — зловредни разрешения. Ако потребителят предостави на приложението достъп до контакти и микрофон, пясъчната кутия не може да предотврати събирането на тези данни, тъй като приложението използва легитимни системни API. Защитата в този случай преминава на ниво осведоменост на потребителя и преглед от App Store и Google Play.

Третото ограничение — взаимодействие между пясъчни кутии. Някои системни услуги (NotificationListenerService, AccessibilityService) имат разширен достъп до данни на други приложения. Нападателят може да използва тези услуги за заобикаляне на пясъчната кутия, ако получи съответните разрешения. Google и Apple непрекъснато актуализират политиките за такива услуги.

Въпреки ограниченията, пясъчната кутия е критичен компонент за сигурност на мобилните операционни системи. Според Android Security Report (2024), изолацията на sandbox предотвратява над 99% от опитите за междуприложен достъп до данни. В комбинация с Code Signing, App Review и разрешения по време на изпълнение, Sandbox формира многослойната защита на съвременното мобилно устройство.

Често задавани въпроси

Какво е App Sandbox с прости думи?

Пясъчна кутия за приложения — система за изолация, в която всяко приложение работи в собствено изолирано пространство, без достъп до данни на други приложения без изричното разрешение на потребителя.

Каква е разликата между пясъчната кутия в iOS и Android?

iOS използва строга контейнерна изолация чрез Sandbox.kext и entitlements. Android използва UID разделяне на ниво Linux ядро и SELinux. Принципът е същият, но имплементацията и гъвкавостта се различават.

Може ли да се заобиколи пясъчната кутия на приложение?

Заобикалянето на пясъчната кутия е възможно само при jailbreak (iOS) или root достъп (Android). На стандартни устройства без модификация на ОС, заобикалянето на пясъчната кутия е невъзможно чрез легитимни API.

Как приложенията обменят данни чрез пясъчната кутия?

iOS използва UIActivityViewController и App Groups. Android — ContentProvider, FileProvider и Intents. Всички механизми работят чрез системни API с контрол на сигурността.

Какъв е принципът на минималните привилегии в Sandbox?

Принципът означава, че приложението получава само тези права, които са необходими за неговата работа. Достъпът до допълнителни ресурси се иска чрез разрешения и се предоставя от потребителя.

Резюме

  • App Sandbox — основен механизъм за сигурност на мобилни ОС, който изолира приложенията едно от друго на ниво файлова система и процеси.
  • Принцип на работа — всяко приложение получава собствен UID, изолирана директория и минимални привилегии с контрол на достъпа на ниво ядро.
  • iOS — строга контейнерна изолация чрез Sandbox.kext, разширени права чрез entitlements, обмен на данни чрез системни контролери.
  • Android — Linux UID разделяне, SELinux в enforcing режим, ContentProvider и FileProvider за сигурно споделяне.
  • Изключения — системни услуги (AccessibilityService) и потребителски разрешения (контакти, микрофон) могат частично да заобиколят изолацията.
  • Ограничения — пясъчната кутия не защитава от root/jailbreak и от легитимно събиране на данни чрез разрешени API.
  • Ефективност — предотвратява над 99% от опитите за междуприложен достъп, според Android Security Report 2024.

Ще разработим мобилно приложение под ключ

IT Sectr създава iOS и Android приложения за стартъпи и бизнеси от 2017 г. Ще ви консултираме и ще предложим най-доброто решение.

Обсъдете проекта

Прочетете също