Многие пользователи проходят путь от Ubuntu до Arch или Gentoo в надежде найти идеальную систему, однако Linux по своей природе не способен обеспечить требуемый уровень безопасности. Фундаментальные проблемы этой ОС требуют не косметических исправлений, а принципиально иного архитектурного подхода. Несмотря на постоянное развитие, Linux остается открытой системой, изначально не создававшейся с прицелом на изоляцию и строгий контроль.

Архитектурные уязвимости монолитного ядра
Одной из ключевых проблем Linux является монолитная архитектура ядра. Большинство сервисов, включая драйверы и модули, функционируют в пространстве ядра (ring 0). В то же время пользовательские приложения работают в пространстве ring 3. Код в ring 0 обладает полным доступом к аппаратному обеспечению, за исключением технологий вроде TPM и management engine. Любая критическая ошибка на уровне ядра означает полную компрометацию всей системы. Учитывая огромный масштаб Linux и тысячи модулей, работающих с привилегиями уровня ring 0, поверхность атаки оказывается критически большой.
Дополнительную слабость представляет модель «окружающих полномочий» (ambient authority). Процессы получают разрешения на основе роли или личности пользователя, при этом они «видят» среду, в которой работают. Дополнительные уровни защиты, такие как SELinux, лишь ограничивают этот доступ, но не скрывают систему полностью. В модели дискреционного управления доступом (DAC) значительные части ОС остаются открытыми, а атаки на повышение привилегий часто приводят к полному захвату контроля. Проблема усугубляется тем, что даже в Docker-контейнерах права суперпользователя на хосте часто могут быть получены изнутри контейнера. Попытки исправить ситуацию с помощью ASLR, PIE/PIC, стековых канареек, seccomp или chroots являются лишь защитными мерами, устраняющими последствия, а не первопричины.
Изоляция как способ достижения безопасности
Попытки усилить безопасность Linux с помощью контейнеризации или bwrap не решают проблему exposing-ядра. Оптимальным решением на данный момент является использование Qubes OS, которая сочетает удобство Linux с архитектурой, основанной на принципах безопасности с использованием возможностей (capability-based security model). В такой системе компоненты не обладают информацией об окружении, кроме явно предоставленных ресурсов, что напоминает работу в темной комнате.
Qubes позволяет разделять сферы деятельности, такие как банковские операции и веб-серфинг, по различным доменам. Даже в случае взлома вредоносное ПО оказывается ограничено рамками отдельной виртуальной машины, которая не содержит ценных данных. Например, можно изолировать почтовый клиент, ограничив его доступ к одному удаленному провайдеру, а все вложения открывать в изолированной от сети виртуальной машине.

Перспективы операционных систем нового поколения
На смену первому поколению систем, основанных на компартментализации, приходят новые проекты. Spectrum OS нацелена на улучшение использования ресурсов путем помещения каждого приложения в облегченную микровиртуальную машину (microVM). Система строится на базе гипервизора Cloud Hypervisor, что теоретически позволяет запускать гостевые системы за 100 мс. Другим перспективным направлением является Sculpt OS на базе фреймворка Genode. В этой системе каждый компонент работает в иерархическом «песочнице». Родительский процесс передает дочернему лишь необходимые ресурсы, полностью скрывая остальное содержимое системы. Sculpt OS использует микроядро, производное от NOVA, и поддерживает seL4, код которого частично прошел математическую верификацию. Использование микроядер позволяет вынести большинство модулей в пространство ring 3, радикально затрудняя повышение привилегий.
Хотя проекты уровня Spectrum и Sculpt OS все еще находятся на этапе долгосрочной разработки, Qubes OS готова к повседневному использованию уже сегодня. Для тех, кому важна максимальная защита, оптимальным компромиссом станет отказ от попыток настройки параметров безопасности внутри стандартного Linux в пользу использования сильной изоляции виртуальных сред.

Фундаментальные архитектурные просчеты Linux
Проблема «окружающих полномочий» (ambient authority) глубоко укоренена в архитектуре Linux. По своей сути, когда пользователь запускает процесс, последний автоматически наследует привилегии его учетной записи в силу «окружающей» среды. В такой модели ничто не скрыто от процесса, существуют лишь ограничения на действия. Использование защитных надстроек, таких как SELinux, — это лишь попытка наложить дополнительные правила на систему, где субъект по определению осведомлен о своем окружении. В результате, многие критические компоненты всё ещё требуют прав суперпользователя (root) для работы, что делает систему крайне уязвимой: достаточно всего одного или двух недочетов, чтобы защита рухнула окончательно.

Важно понимать, что все внедренные за многие годы механизмы безопасности — ASLR, PIE/PIC, стековые канарейки, seccomp, NX — лишь «заплатки», которые решают проблемы уже после того, как они были обнаружены. Безопасность в Linux всегда была вторична по отношению к функциональности и удобству открытой системы.
«После пары лет экспериментов я пришел к выводу, что никакая настройка Linux не даст нужного результата. Даже если вы используете контейнеры или bwrap, ядро все равно предоставляет системе слишком много информации. Даже SELinux не станет панацеей, ведь в такой сложной платформе, где поверх архитектуры лишь наслоены правила, всегда будут уязвимые места», — отмечает автор.
Концепция «темной комнаты» и будущее изоляции
Qubes OS использует своего рода модель безопасности, основанную на возможностях (capability-based security model). В идеальной реализации такой системы субъекты — будь то виртуальные машины или процессы — ничего не знают о своей операционной среде, кроме того, что им явно предоставлено через своего рода «почтовый ящик». Это можно сравнить с нахождением в темной комнате, куда подаются только строго необходимые ресурсы. Хотя Qubes не является эталонной реализацией этой модели, принципы «песочниц» здесь работают эффективно, позволяя минимизировать риски при работе с финансами, социальными сетями или деловой перепиской.

Развитие этого направления продолжается. В то время как Qubes считается первым поколением систем, основанных на компартментализации, новые проекты стремятся устранить его недостатки, в частности, избыточное потребление ресурсов:
- Spectrum OS — проект, который на текущий момент оборачивает приложения в полноценные виртуальные машины, но в будущем планирует использовать микровиртуальные машины (microVM) на базе Cloud Hypervisor, способные загружаться за 100 мс.
- Sculpt OS — операционная система, созданная на базе фреймворка Genode. В отличие от Qubes, здесь используются не виртуальные машины, а иерархические мини-песочницы. Каждый дочерний процесс получает доступ лишь к тем ресурсам, которые передает ему родительский компонент. Зловредному PDF-файлу крайне сложно скомпрометировать систему, о которой он не имеет никакой информации.
Техническое преимущество таких решений заключается в использовании микроядерной архитектуры. В таких системах, как Sculpt OS (использующей микроядро, производное от NOVA, или поддержку seL4 с математически верифицируемым кодом), практически все модули вынесены в пространство пользователя (ring 3), что делает любую попытку повышения привилегий крайне затруднительной задачей по сравнению с монолитным Linux.






