Хабрахабр

Карта средств защиты ядра Linux

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

Итак, карта содержит следующие объекты:

  • классы уязвимостей;
  • техники их эксплуатации для проведения атак;
  • механизмы выявления ошибок;
  • технологии защиты.

В свою очередь технологии защиты ядра разнородны. Одни входят в состав ванильного ядра Linux, другие поставляются отдельно по различным причинам (например, есть коммерческие средства обеспечения безопасности). Существуют механизмы защиты ядра, которые требуют поддержки аппаратного обеспечения. 

Каждая линия, соединяющая объекты на карте, обозначает их взаимное влияние, суть которого следует выяснять в документации. Таким образом, тема безопасности ядра Linux достаточно обширна, и разработанная карта помогает в ее изучении и анализе. На схеме 1 представлены свойства безопасности технологии STACKLEAK. Данный принцип может быть проиллюстрирован на фрагменте общей карты.

Свойства безопасности технологии STACKLEAK Схема 1.

Карта содержит идентификаторы данных классов уязвимостей (CWE, Common Weakness Enumeration). PAX_MEMORY_STACKLEAK — это коммерческая технология защиты ядра Linux, противодействующая эксплуатации следующих типов уязвимостей: переполнение стека в глубину, использование неинициализированных переменных и утечка информации в пользовательское пространство.

Есть также механизм отладки KMSAN, позволяющий обнаружить при тестировании ядра использование неинициализированных переменных и утечку информации в пользовательское пространство. Технология STACKLEAK была привнесена в ванильное ядро Linux, что отражено на схеме.

В сущности, отключение почти любого функционала, уменьшающее размер исполняемого файла, сокращает и периметр атаки. Стоит отметить, что данная карта не затрагивает вопрос уменьшения периметра атаки для ядра. А в данном проекте основное внимание направлено на средства безопасности, обеспечивающие самозащиту ядра Linux против эксплуатации уязвимостей.

1 (по клику изображение откроется в полном размере). На схеме 2 представлена полная карта для ядра версии 5.

Карта средств защиты ядра Linux v5.
Схема 2. 1

Поэтому удобно иметь исходник в текстовом виде и вести его в системе контроля версий. Карта постоянно развивается, ее нужно обновлять как минимум каждый релиз ядра. Кроме того, чтобы не приходилось вручную расставлять объекты с минимальным количеством пересечений связей, для создания карты был выбран язык DOT, а схема автоматически генерируется пакетом GraphViz с помощью следующей команды:

dot -Tpng linux-kernel-defence-map.dot -o linux-kernel-defence-map.png

Карта средств защиты ядра Linux — это открытый проект, лицензированный согласно GPL v3.0. Репозиторий расположен на GitHub. Данный проект крайне полезен для:

  • отслеживания актуального состояния безопасности ядра,
  • разработки моделей угроз ИС на базе GNU/Linux,
  • выбора соответствующих средств защиты.

Кроме того, карта средств защиты ядра Linux призвана помочь в изучении исходного кода, документации и других источников информации по данной теме:
А для автоматизации проверки опций безопасности в конфигурационном файле ядра Linux я создал проект kconfig-hardened-check, который активно развивается благодаря открытой коллективной работе. Утилита поддерживает архитектуры x86_64, arm64, x86_32 и arm.

Приглашаю к участию в разработке карты средств защиты ядра Linux и утилиты kconfig-hardened-check.  

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть