Сегодня мы разберемся как с помощью kconfig hardened check вы можете проверить настройку механизмов защиты ядра ОС Linux, которые используются для противодействия эксплойтам. В данный момент, это один из опаснейших инструментов нарушения разграничения доступа и функционирования операционной системы. Разберемся какие модули безопасности и основные параметры компиляции ядра есть в официальном репозитории, и какие наборы механизмов применяются в различных дистрибутивах.
2 слова об инструментах и источниках данных
Исследовать ОС Linux традиционно будем на базе исходного кода из официального репозитория. В качестве инструментов используем:
- Visual Studio Code;
- Python 3;
Python будем использовать для построения иерархии директорий, содержащих исходный код. Такой метод верхнеуровневого представления будем использовать как основной для нашего исследования.
Защитные подсистемы
Разграничение уровней доступа и уязвимости, приводящие к повреждению памяти, — это основная проблема в любой операционной системе. При этом, исторически для создания ОС используют языки программирования, имеющие определенные проблемы при неверной обработке памяти.
В Linux для защиты от атак на разграничение доступа и эксплуатацию уязвимостей используются следующие механизмы:
- LSM фреймворк — механизм перехвата системных функций для обработки расширениями ядра Linux;
- KASLR — рандомизация адресного пространства ядра;
- HW-Vuln — митигации и патчи, которые используются против Hardware уязвимостей (Meltdown, Spectre, и т.д.);
- Параметризация сборки и запуска ядра. Большое количество работающих алгоритмов в ядре — это потенциальный вектор для атаки, поэтому здесь исходят из минимально необходимого функционала, который можно оставить и при этом максимально уменьшить возможности проведения атак.
Большинство этих механизмов противодействия атакам на разграничение доступа и эксплуатации уязвимостей находятся в разделе linux/security:
Тут размещены доступные для улучшения механизмов защиты модули ядра. Только важно учитывать, что не все модули имеют совместимость с остальными. В данный момент, не существует метода использования одновременно нескольких модулей LSM. Так что при самостоятельной сборке ядра, вам придется решить какой модуль вам наиболее подойдет. Всего доступно 11 штук:
К примеру, модуль tomoyo невозможно использовать с другими модулями.
Директория «security» содержит инструкции по защите от различных техник, позволяющих использовать уязвимости системы. К примеру, min_addr— это защитный механизм, резервирующий адреса в оперативной памяти, находящиеся рядом с нулевым адресом. Он актуален для предотвращения использования начальных страниц в оперативной памяти для хранения данных эксплойта. Некоторым другим защитным механизмам для запуска требуется использование дополнительных опций запуска ядра и компиляции. Найти эти данные вы можете в hardening конфиге. Информация там представлена исключительно в виде описания отдельных параметров.
Получается, что механизмы защиты доступны, но собрать необходимую конфигурацию придется самостоятельно. Это логично, потому что ядро Linux предоставляется для большого количества дистрибутивов, именно поэтому разработчики отдельных дистрибутивов должны заниматься более тонкой настройкой. Предлагаем разобраться какой функционал доступен в конкретных дистрибутивах.
Механизмы защиты Ubuntu
Ubuntu довольно популярен и как серверный дистрибутив, и как десктопный. Проверку проведем с помощью инструмента — kconfig hardened check. Он тестирует безопасность текущей настройки ядра показывает, параметры установленные при установке системы. Репозиторий регулярно обновляется, так что список подсистем защит и параметров компиляции ядра гораздо обширнее, чем при простом исследовании исходного кода. Для проверки опций в собранном дистрибутиве, в репозитории предоставлен скрипт на Python. Также обращаем ваше внимание, что если эталонный конфиг не использовать, то kconfig hardened check покажет информацию по дистрибутиву, не указывая, что есть. Он показывает, что желательные установленные параметры. Запуск проверки выглядит так:
kconfig-hardened-check -p X86_64 -c kspp-recommendations-x86-64.config
В репозитории содержатся 2 вида конфигов — обычный, созданный для конкретного дистрибутива, и рекомендуемый с точки зрения наибольшего количества безопасных опций. Ресурс kernsec описывает KSSP-конфиг как наиболее параноидальный с точки зрения количества применяемых параметров. Результат для Ubuntu Server 20.04:
Итого обнаружено 29 опций, которые не используются или не найдены из 111. Довольно хороший результат. Особенно учитывая, что конфиг эталона — параноидальный.
Механизмы защиты Debian
В случае с Debian, мы выбрали модификацию Kali Linux, неофициальный дистрибутив. Это дистрибутив, часто используемый для тестирования на проникновение. Давайте оценим как у него у самого с параметрами безопасности:
Kali Linux несмотря на узкий спектр задач, для которых используется, все таки содержит в себе достаточное количество опций и параметров ядра для противодействия атакам.
Мы продемонстрировали как можно выяснять, как настроен тот или иной дистрибутив, которым вы пользуетесь на базе ядра ОС Linux. Если у вас возникли вопросы или необходима консультация по данной тематике — обращайтесь! Наши специалисты помогут вам разобраться в механизмах защиты и противодействия атакам.
+38 (050) 470-29-17
+38 (094) 710-16-18