Хотите разработчики subgraph?
Компания Merehead занимается веб разработкой. Свяжитесь с нами и получите бесплатную консультацию!
Поговорить с Менеджером
Опишем операционную систему и другие продукты Subgraph. Расскажем о преимуществах и недостатках запуска собственных решений на базе Subgraph.
Subgraph — это операционная система, ориентированная на максимальную безопасность и конфиденциальность. Она использует песочницы-контейнеры и другие технологии, чтобы ограничить права доступа программам и защитить данные пользователей от хакеров и вредоносного ПО. Дальше мы расскажем, как работает система безопасности Subgraph, насколько она надежна и какие есть плюсы и минусы в разработке приложений для этой операционной системы.
Что такое Subgraph
More information: |
OS Type |
Linux |
Based on |
Debian |
Origin |
USA |
Architecture |
x86_64 |
Desktop |
GNOME |
Category |
Desktop, Live Medium, Privacy, Security |
Status |
Active |
Операционная система Subgraph — это «устойчивая к взлому вычислительная платформа», над созданием которой трудится
команда разработчиков с более чем 50-летним опытом в области информационной безопасности и конфиденциальности. Разработку Subgraph OS финансирует государственный фонд США Open Technology Fund, который также инвестировал в Tor, Tails и Open Whisper Systems. Кроме того, Subgraph поддержал Эдвард Сноуден, который выделил ее среди других проектов, ориентированных на безопасность, и заявил, что
будет сам ее использовать.
Разработчики Subgraph позиционируют свой проект как первое решение для постоянного использования, которое предоставляет инструменты обеспечения безопасности и конфиденциальности, сохраняя при этом высокий уровень удобства для пользователя. За удобство отвечает свободная среда рабочего стола GNOME, за безопасность — дистрибутив Linux на Debian, который обеспечивает несколько функций безопасности, анонимного просмотра веб-страниц и усиления защиты.
Ядро Subgraph построено с использованием
grsecurity / PaX (общесистемный патч для
защиты от эксплойтов и повышения привилегий) и RAP (разработанный для предотвращения атак с повторным использованием кода на ядро для защиты от современных методов эксплуатации). Его ключевая особенность — запуск программ в песочницах Oz, которые сильно ограничивают права этих приложений.
Другие функции безопасности Subgraph включают:
- Большая часть кода написана на безопасном языке Golang.
- Профили AppArmor, охватывающие системные утилиты и приложения.
- Аппаратные ключи YubiKey с одноразовыми паролями.
- Сервис фильтров порта управления Roflcoptor.
- Безопасный почтовый клиент Subgraph Mail.
- Прозрачное проксирование через Tor.
- Анонимный мессенджер OnionShare.
- Доверенная загрузка.
- Шифрование диска.
- Прочее.
Как работают песочницы Subgraph
Как мы выше писали, главная особенность операционной системы Subgraph —
возможность запуска приложений в специальных песочницах-контейнерах, которые блокируют то, что они могут делать. Это означает, что если запущенное на Subgraph приложение или сайт взломают, то злоумышленник (его вредоносное ПО), застрянет в песочнице с очень ограниченным доступом к системе, файлам и железу.
Для этого Subgraph задействует подсистему
Oz, которая похожа на Firejail. Она состоит из демона (специальный сервис), получающего запросы на создание / запуск песочниц, X-сервера Xpra и набора специальных утилит. Для изоляции запущенных программ Oz применяет
пространства имен, дополнительно ограничивая доступные софту системные вызовы с помощью механизма безопасности ядра seccomp-bpf.
Общение программы, запущенной в песочнице, с графической подсистемой осуществляется посредством виртуального X-сервера
Xpra. Он запускается внутри каждой песочницы: X-сервер Subgraph подключается к Xpra и выводит изображение запущенной программы на экран. Это важно, поскольку обычно запуск графических приложений в песочницах-контейнерах происходит путем прокидывания сокета X-сервера /tmp/.X11-unix/X0 в саму песочницу, что открывает хакерам и вирусам не только возможность выводить собственное изображение на экран пользователя и обрабатывать события устройств ввода (клавиатура, мышь), но и позволяет получать доступ к окну любого другого запущенного приложения и перехватывать любые события устройств ввода. В Subgraph эта угроза устранена.
В целом запуск приложения в среде Subgraph выглядит примерно так:
- Пользователь операционной системы запускает приложение с помощью иконки на рабочем столе или командной строки (на самом деле он запускает не настоящий исполняемый файл, который находится в каталоге /usr/bin-oz/, а всего лишь символическую ссылку этого приложения на /bin/oz).
- Управление получает Oz. Подсистема читает имя программы в первом аргументе и через сокет отдает сервису oz-daemon команду запустить ее.
- Демон читает профиль приложения, где четко прописано, что ему запрещено и разрешено, какие файлы домашнего каталога приложению доступны и т.п.
- Демон создает каталог /srv/oz/rootfs/, подключает к нему каталоги основной системы /bin, /lib, /lib64, /usr и /et, создает другие необходимые каталоги (/var, /tmp, /mnt и прочие), создает минимальный набор нужных для работы приложения файлов-устройств в /dev, подключает другие приложения, файлы и каталоги, а затем демон выполняет chroot в этот каталог и создает новые пространства имен, запирающие запущенное приложение в песочницу.
- Демон выделяет для созданной песочницы новый виртуальный сетевой интерфейс и сразу подключает его к виртуальному свитчу, который подсоединен к внешнему сетевому интерфейсу машины.
- Демон запускает oz-init, который в свою очередь запускает Xpra и использует seccomp-bpf для настройки запретов и разрешений для системных вызовов.
- В конце Oz-init запускает приложение из каталога /usr/bin-oz/.
Вот как это процесс выглядит схематически:
Схема процесса запуска приложения в Subgraph. Источник
Если запущенное в песочнице приложение скомпрометировано (то есть система «заметила», что приложение обращается к файлам, процессам и устройствам вне его прав доступа), оно не сможет выбраться из своей песочницы и навредит основной системе. Информация также будет в безопасности, поскольку хакер сможет получить доступ разве что к
конфигам приложения и кешей. К примеру, если вы используете просмотрщик PDF Evince для просмотра файла «Документ1», то он получит доступ только к тому файлу-документу, для просмотра которого он был запущен.
Другие функции безопасности Subgraph
Дизайн архитектуры безопасности операционной системы Subgraph. Источник
Проксирование через Tor. Вторая важная особенность системы безопасности Subgraph — проксирование всего исходящего трафика через Tor (The Onion Router). По умолчанию Tor не поддерживают подобную конфигурацию и представляет собой лишь SOCKS-прокси, т.е. требует, чтобы программное обеспечение поддерживало SOCKS, а юзер самостоятельно настроил проксирование программы через Tor.
Но команда Subgraph сумела обойти это ограничение посредством протокола
Metaproxy, который перенаправляет весь переданный на его порт трафик на адрес нужного HTTP- или SOCKS-прокси (в данном случае это Tor), и простого алгоритма для брандмауэра, перенаправляющего весь исходящий трафик на порт Metaproxy. Исключение делается только для сайтов аутентификации публичных сетей Wi-Fi.
Окно с настройками брандмауэра Subgraph
В качестве основного интернет-браузера платформа использует обычный Tor Browser. Это единственное приложение Subgraph, которое использует прокси Tor напрямую, все остальные передают трафик Metaproxy. Передачи ICMP (Internet Control Message Protocol) запрещены в любую сторону, так что Subgraph не только не отвечает на пинги, но и не позволяет пропинговать другой хост.
Безопасность системы и ядра. Операционная система Subgraph также усилена PaX и Grsecurity. PaX — это набор обновлений ОС, разработанных для устранения «дыр» безопасности в ядре Linux, связанных с переполнением буфера и ошибками повреждения памяти в приложениях и ядре. Grsecurity — это также набор патчей, но он направлен на устранение «дыр», связанных с дефектами повреждения памяти. Помимо этого Grsecurity включает в себя ряд других мер безопасности:
- запрет на изменение актуального времени и даты;
- ограничения для программ и протоколов, исполняемых в chroot;
- запрет на исполнение бинарных файлов, не принадлежащих юзеру с root;
- скрытие информации в файловой системе /proc, выводе dmesg;
- ограничения на использование FIFO-каналов и сокетов;
- прочие меры безопасности.
Полное шифрование диска (FDE). Еще Subgraph по умолчанию предлагает полное шифрование диска, которое позволяет использовать теневое шифрование для защиты важных ПЗУ (постоянное запоминающее устройство). Это обеспечивает защиту данных на дисках и флешках, даже если они будут украдены, потеряны или забыты в сервисном центре. Кроме того, Subgraph OS полностью форматирует диск перед своей установкой, чтобы защититься от атак холодной загрузки. Это хакерские атаки, в которых используются данные, находящиеся в ячейках DRAM и SRAM, в течение нескольких секунд вскоре после выключения питания.
Безопасные почтовые службы. Еще по умолчанию операционная система использует почтовое приложение Subgraph Mail, которое интегрировано с системой шифрования электронной почты OpenPGP. Другая особенность Subgraph Mail в том, что аутентификация и проверка целостности реализованы таким образом, что даже если некоторые части приложения будут скомпрометированы, хакер по-прежнему не будет иметь доступа к остальным электронным письмам или ключам шифрования. Кроме того, в Subgraph Mail намеренно исключена поддержка веб-браузера из почтового клиента, чтобы исключить веб-эксплойты из электронных писем.