Ограда вокруг игровой площадки
Песочница, sandbox, это изолированная среда, в которой программа выполняется с урезанными правами и не может свободно затронуть остальную систему. Название пришло из детской площадки: играть можно, но песок остаётся внутри ограды. Если запущенная в ней программа окажется вредоносной или просто ошибётся, ущерб ограничен границами песочницы.
Изоляция достигается ограничениями: доступ к файлам разрешён только в выделенной папке, обращение к сети закрыто или контролируется, вызовы к системе фильтруются, вмешательство в чужие процессы запрещено. Чем строже набор ограничений, тем меньше вреда, но и тем меньше полезного программа может сделать.
Из чего строят изоляцию
Существует несколько уровней. Процессный уровень использует средства операционной системы: ограничение прав, отдельные учётные записи, фильтры вызовов, контейнерные механизмы ядра. Виртуальная машина изолирует сильнее, потому что внутри неё работает собственная операционная система на виртуальном оборудовании. Эмуляция и анализ вредоносного кода используют специально подготовленные среды, где программа выполняется под наблюдением.
Каждый уровень даёт свой компромисс. Виртуальная машина тяжелее и медленнее стартует, но граница между гостем и хозяином надёжнее. Процессная песочница быстрее и легче, поэтому именно её используют в повседневных программах, где запускать отдельную виртуальную машину на каждую вкладку было бы неразумно.
Где песочница встречается на практике
Самый массовый пример это браузер. Каждая вкладка и модуль отрисовки работают в отдельных ограниченных процессах, так что ошибка в разборе страницы не даёт прямого доступа к вашим файлам. Похожий подход применяют программы для просмотра документов, мессенджеры, приложения на мобильных платформах: на телефоне каждое приложение получает собственную область и просит разрешения на остальное.
Антивирусные и почтовые системы запускают подозрительные вложения в песочнице автоматически, наблюдая, не пытается ли файл изменить систему, обратиться к серверу или зашифровать документы. Для обычного пользователя есть и намеренный вариант: одноразовые окружения, виртуальные машины, контейнеры, встроенные режимы изоляции некоторых версий операционных систем.
Границы защиты
Песочница не абсолютна. Если в самом механизме изоляции есть ошибка, вредоносный код может выйти за её пределы: такие «побеги из песочницы» составляют вторую ступень многих сложных цепочек атак, о которых рассказано на странице про эксплойты. Кроме того, программа внутри песочницы может видеть и передавать всё, что ей разрешено: если вы дали доступ к папке с документами, они внутри области досягаемости.
Некоторые вредоносные программы умеют определять, что запущены в анализирующей среде, и ведут себя безобидно, пока за ними наблюдают. Поэтому песочница входит в набор мер, но не заменяет обновления, антивирус и осторожность с вложениями.
Как воспользоваться самому
Самые простые способы: открывать непроверенные файлы не на основном компьютере, а в виртуальной машине без общих папок и с отключаемой сетью; использовать отдельный профиль браузера для незнакомых сервисов; на смартфоне следить за разрешениями приложений и отзывать лишние.
Проверить, что изоляция включена, можно в настройках. В браузере есть страница со сведениями о процессах, а в мобильной системе в разделе разрешений видно, какие данные доступны каждому приложению. Всё, что просит доступ к контактам, сообщениям или микрофону без очевидной причины, стоит ограничить.
Песочница в разработке и администрировании
Разработчики и администраторы используют изоляцию не только ради безопасности, но и ради воспроизводимости. Контейнеры и виртуальные машины позволяют запускать программу в предсказуемой среде, не влияя на основную систему, и легко удалять результаты. Чтобы проверить сомнительное обновление, достаточно снимка состояния виртуальной машины: если что-то пошло не так, систему возвращают к нему за секунды.
В веб-разработке действует политика изоляции контента: атрибут sandbox у встроенных фреймов ограничивает выполнение скриптов, отправку форм и всплывающие окна для стороннего содержимого. Это пример того, как идея песочницы применяется на уровне отдельного элемента страницы, а не целой программы, и как разрешения выдаются по необходимости, а не по умолчанию.
Проверяя сомнительный файл в виртуальной машине, отключите общие папки и буфер обмена между гостем и хозяином, а после работы верните систему к чистому снимку. Иначе изоляция остаётся формальной.