Добавить в корзинуПозвонить
Найти в Дзене
IT - это просто

Что такое sandbox? Песочница для программ. Простыми словами

Здравствуйте, дорогой читатель! Сегодня — третья часть большого разговора о том, как цифровой мир учится изолировать опасное от безопасного. В предыдущих статьях цикла Автор уже разобрал два мощных уровня защиты: виртуализацию, где каждая гостевая система живёт в собственном доме со своим фундаментом (ядром ОС), и контейнеризацию, где на общем фундаменте появляются аккуратные, лёгкие коробки для отдельных процессов. Но есть ещё один уровень. Самый тонкий, самый массовый и, возможно, самый незаметный для обычного пользователя. Это песочницы, или sandbox. Автор не использует сложные термины без необходимости. Всё, что будет здесь рассказано, — это честный взгляд на технологии, которые каждый день защищают ваш смартфон и браузер. Автор сразу сделает важную оговорку: песочницы не пришли на смену виртуализации или контейнерам. Они решают другую задачу. Если виртуализация нужна, чтобы запустить Windows на Linux, а контейнеризация — чтобы упаковать микросервис, то песочница создана для одного
Оглавление

Здравствуйте, дорогой читатель! Сегодня — третья часть большого разговора о том, как цифровой мир учится изолировать опасное от безопасного. В предыдущих статьях цикла Автор уже разобрал два мощных уровня защиты: виртуализацию, где каждая гостевая система живёт в собственном доме со своим фундаментом (ядром ОС), и контейнеризацию, где на общем фундаменте появляются аккуратные, лёгкие коробки для отдельных процессов.

Но есть ещё один уровень. Самый тонкий, самый массовый и, возможно, самый незаметный для обычного пользователя. Это песочницы, или sandbox.

Автор не использует сложные термины без необходимости. Всё, что будет здесь рассказано, — это честный взгляд на технологии, которые каждый день защищают ваш смартфон и браузер.

Автор сразу сделает важную оговорку: песочницы не пришли на смену виртуализации или контейнерам. Они решают другую задачу. Если виртуализация нужна, чтобы запустить Windows на Linux, а контейнеризация — чтобы упаковать микросервис, то песочница создана для одного: безопасно запустить непроверенный код прямо внутри работающей системы, не дав ему навредить.

Виртуализация, контейнеризация и песочница — три взгляда на изоляцию.
Виртуализация, контейнеризация и песочница — три взгляда на изоляцию.

История: как появились песочницы

Автор предлагает взглянуть на историю. Песочницы не были изобретены вчера — они эволюционировали вместе с интернетом.

Конец 1990-х — Java Applets

В эпоху, когда интернет только начинал шуметь модемами, в браузерах появились Java-апплеты. Это был код, который приходил на компьютер из сети и запускался тут же. Чтобы пользователь не остался без системы после визита на сомнительный сайт, этот код запускали в «безопасной среде выполнения» — первой массовой песочнице. У апплета были игрушки (память), но не было доступа к файлам на диске или к системе.

Java-апплеты: код из сети запускался в песочнице, чтобы не навредить компьютеру.
Java-апплеты: код из сети запускался в песочнице, чтобы не навредить компьютеру.

2000-е — BSD Jail и chroot

Параллельно в мире серверов зрела идея изоляции на уровне ОС. Команда chroot (change root) позволяла ограничить видимость процесса: он видел только свою папку, думая, что это и есть вся система. А в FreeBSD появились jail («тюрьмы») — уже более продвинутая изоляция процессов.

BSD Jail: процесс видит только свою «тюрьму» и не может выбраться за её пределы.
BSD Jail: процесс видит только свою «тюрьму» и не может выбраться за её пределы.

2009–2012 — Эра мобильных ОС

Когда появились первые iPhone и Android-смартфоны, архитекторы поняли: приложения нельзя пускать в общий доступ к системе. И песочницы стали не просто функцией, а архитектурной основой. Каждое приложение на Android или iOS получает свой уникальный идентификатор (UID) и живёт в собственной песочнице. Оно не может просто так заглянуть в данные соседнего приложения. Это стало переломным моментом — именно благодаря этому мы сегодня спокойно устанавливаем десятки приложений, не боясь, что одно из них «уронит» весь смартфон.

В Android и iOS каждое приложение живёт в своей песочнице.
В Android и iOS каждое приложение живёт в своей песочнице.

Середина 2010-х — Браузеры идут в атаку

Google Chrome и Microsoft Edge сделали следующий шаг: они начали изолировать друг от друга не только разные сайты, но даже отдельные вкладки и, что важнее, движок рендеринга от всей остальной системы. Сегодня каждая вкладка в современном браузере — это маленькая песочница. Если на одном сайте сломается Flash-плеер или сработает вредоносный скрипт, он не утащит за собой другие вкладки и уж тем более не доберётся до ваших паролей.

Современные браузеры изолируют каждую вкладку — сбой в одной не уронит остальные.
Современные браузеры изолируют каждую вкладку — сбой в одной не уронит остальные.

Современность

Сегодня песочницы используются везде: от изоляции микросервисов в облаках до запуска подозрительных PDF-файлов. А технологии вроде gVisor или Firecracker стали гибридами — они создают лёгкие песочницы, которые по уровню изоляции приближаются к виртуальным машинам.

Как это работает?

Автор помнит, как в прошлых частях читатели полюбили образ общего стола — это операционная система. Илья, Алиса и Арина снова помогут Автору разобраться.

  • Виртуализация — это когда у каждого члена семьи свой собственный складной столик с ножками. Илья ушёл с ноутбуком в комнату, Алиса рисует на кухне. Столы не связаны, они полностью независимы. Надёжно, но громоздко.
  • Контейнеризация — это когда все сидят за большим общим столом, но у каждого есть своя пластиковая коробка для обеда. Коробки (контейнеры) стоят рядом, не мешают друг другу, делят общее пространство стола, но еда из коробки Ильи не попадает в коробку Алисы. Легко и быстро.
  • Песочница — это сценарий, который Автор наблюдал на днях. Алиса решила рисовать красками. Чтобы не испачкать весь общий стол (и заодно маленькую Арину, которая всё тянет в рот), Илья дал ей прозрачный пластиковый контейнер с низкими бортиками. Внутрь положил лист бумаги и фломастеры.
Виртуализация (отдельные столы), контейнеризация (коробки на общем столе), песочница (безопасный контейнер для красок).
Виртуализация (отдельные столы), контейнеризация (коробки на общем столе), песочница (безопасный контейнер для красок).

Алиса рисует только внутри этого контейнера. Даже если она случайно опрокинет баночку с водой или вымажет руки в краске — всё останется внутри контейнера. Общий стол чист. Более того, Алиса может безопасно дать этот контейнер малышке Арине. Арина будет стучать фломастерами внутри, но не дотянется до ножниц, которые лежат рядом с контейнером, и не залезет в настройки «общего стола».

Приложение (например, та самая вкладка браузера или игра из Google Play) запускается внутри песочницы. У него есть свои «игрушки» — выделенная память, своя область файлов. Но у него нет доступа к системным настройкам, к данным других приложений, к вашим контактам, пока вы сами не дадите разрешение через специальный «люк» (который контролирует ОС). Если внутри песочницы произойдёт сбой или начнёт буйствовать вредоносный код, пострадает только эта песочница. Всё, что осталось за её пределами, продолжает работать.

Песочница: даже если Алиса прольёт краску, она останется внутри контейнера, а опасные предметы снаружи — вне досягаемости.
Песочница: даже если Алиса прольёт краску, она останется внутри контейнера, а опасные предметы снаружи — вне досягаемости.

В чем отличие от виртуализации и контейнеризации?

Автор часто видит, как эти понятия путают. Давайте разберемся в ключевых отличиях.

Цель.

Виртуализация изолирует железо. Позволяет запускать одну ОС внутри другой.
Контейнеризация изолирует процессы. Позволяет запускать несколько приложений на одном ядре ОС так, чтобы они не мешали друг другу.
Песочница изолирует приложение или его часть внутри той же ОС, ограничивая его доступ к ресурсам.

Ресурсы.

Песочница — это чемпион по экономии. Она потребляет минимум ресурсов, потому что часто работает в рамках того же процесса ОС. Ей не нужно запускать гостевую ОС (как в виртуализации) или поднимать сложную среду выполнения.

Безопасность.

Если виртуализация — это бетонная стена между комнатами, то песочница — это крепкая, но всё же прозрачная перегородка. Она может быть слабее, чем виртуальная машина, если говорить о теоретической возможности побега (эскейпа). Но для 99% повседневных задач — браузер, мобильные приложения, просмотр документов — её надёжности достаточно.

Гибкость.

Песочницы можно включать точечно. Не нужно изолировать всю систему. Можно «запесочить» только опасную часть. Например, в браузере изолирована каждая вкладка, а в программе для чтения PDF — только модуль рендеринга.

Песочницы в Android

Автор знает, что многие читатели пользуются смартфонами на Android. И здесь песочницы — это база.

По умолчанию каждое приложение в Android работает в своей песочнице. У него есть уникальный идентификатор (UID), и доступ к файлам других приложений закрыт на уровне ядра системы. Когда вы ставите приложение, система спрашивает разрешения (камера, контакты, геолокация) — это попытка расширить границы песочницы, но только с вашего согласия.

Но есть ещё более интересная фича, доступная обычным пользователям: Рабочий профиль (Work Profile).

Представьте, что на одном смартфоне можно создать вторую песочницу. Это как если бы у Ильи был свой личный контейнер для уроков, а Алиса играла в своём, и они не видели игрушки друг друга, хотя сидят за одним столом.

Как это работает

Вы создаёте рабочий профиль. В нём живут приложения для работы (почта, мессенджер, таск-трекеры). Они изолированы от ваших личных приложений. Даже если работодатель попросит установить приложение с правами администратора, оно будет «сидеть» только в рабочем профиле и не увидит ваши личные фото.

Рабочий профиль — вторая песочница на смартфоне, полностью изолированная от личных данных.
Рабочий профиль — вторая песочница на смартфоне, полностью изолированная от личных данных.

Простая инструкция (для большинства Android)

Чтобы создать рабочий профиль, достаточно зайти в Настройки → Пользователи и учётные записи → Рабочий профиль. Система проведёт вас через короткую настройку. После этого в списке приложений появится вкладка «Рабочие» — это и есть ваша управляемая песочница.

Автор подчёркивает: это не просто «режим гостя». Это полноценная изоляция, которая работает на системном уровне.

Заключение

Автор считает, что три уровня изоляции — виртуализация, контейнеризация и песочницы — не конкурируют друг с другом. Они дополняют друг друга.

  • Виртуализация даёт максимальную изоляцию, когда нужно запустить чуждую систему или обеспечить непроницаемую защиту.
  • Контейнеризация даёт эффективность и скорость, когда нужно управлять сотнями сервисов на одном железе.
  • Песочницы дают гибкость и незаметную, но тотальную безопасность для конечных пользователей.
Виртуализация, контейнеризация и песочницы дополняют друг друга, создавая многослойную защиту.
Виртуализация, контейнеризация и песочницы дополняют друг друга, создавая многослойную защиту.

Каждый раз, когда вы открываете новую вкладку в браузере, устанавливаете приложение из магазина или открываете PDF-файл, внутри работает маленькая «Алиса со своим контейнером». Она рисует, стучит фломастерами, но общий стол — ваша операционная система — остаётся чистым.

Автор призывает подписаться на канал, чтобы не пропустить следующие материалы. Впереди ещё много интересного: Автор планирует разобрать, как работают межсетевые экраны и почему нельзя полагаться только на один уровень защиты.

UPD

Для тех, кто хочет копнуть глубже, Автор оставляет краткую расшифровку терминов, которые были опущены для простоты изложения:

  • UID (User Identifier) — уникальный идентификатор, который система Android присваивает каждому приложению при установке. Именно он служит основой для разграничения доступа.
  • SELinux (Security-Enhanced Linux) — модуль безопасности на уровне ядра, который в Android строго следит, чтобы даже приложение с root-правами не могло нарушить правила песочницы.
  • seccomp-bpf — механизм в ядре Linux, который ограничивает, какие системные вызовы может делать процесс внутри песочницы. Браузеры активно используют его для изоляции вкладок.
  • Рабочий профиль (Managed Profile) — штатный механизм Android для создания изолированной среды для рабочих приложений, управляемый через систему.
  • Island — приложение, создающее изолированную среду на основе рабочего профиля. Позволяет «запесочить» любые приложения и даже «замораживать» их.
  • Samsung Knox — аппаратно-усиленная песочница на устройствах Samsung, изолированная даже на уровне чипа.
  • gVisor / Firecracker — современные технологии из мира облачных вычислений, которые стирают грань между песочницей и виртуализацией, создавая лёгкие «песочные» окружения с высоким уровнем изоляции.