4/5 - (4 голоса)

C6ee45f2925ab09d45533f76e75bdf85 300x169

Сегодня мы разберемся как с помощью kconfig hardened check вы можете проверить настройку механизмов защиты ядра ОС Linux, которые используются для противодействия эксплойтам. В данный момент, это один из опаснейших инструментов нарушения разграничения доступа и функционирования операционной системы. Разберемся какие модули безопасности и основные параметры компиляции ядра есть в официальном репозитории, и какие наборы механизмов применяются в различных дистрибутивах.

2 слова об инструментах и источниках данных

Исследовать ОС Linux традиционно будем на базе исходного кода из официального репозитория. В качестве инструментов используем:

  • Visual Studio Code;
  • Python 3;

Python будем использовать для построения иерархии директорий, содержащих исходный код. Такой метод верхнеуровневого представления будем использовать как основной для нашего исследования.

Защитные подсистемы

Разграничение уровней доступа и уязвимости, приводящие к повреждению памяти, — это основная проблема в любой операционной системе. При этом, исторически для создания ОС используют языки программирования, имеющие определенные проблемы при неверной обработке памяти.

В Linux для защиты от атак на разграничение доступа и эксплуатацию уязвимостей используются следующие механизмы:

  • LSM фреймворк — механизм перехвата системных функций для обработки расширениями ядра Linux;
  • KASLR — рандомизация адресного пространства ядра;
  • HW-Vuln — митигации и патчи, которые используются против Hardware уязвимостей (Meltdown, Spectre, и т.д.);
  • Параметризация сборки и запуска ядра. Большое количество работающих алгоритмов в ядре — это потенциальный вектор для атаки, поэтому здесь исходят из минимально необходимого функционала, который можно оставить и при этом максимально уменьшить возможности проведения атак.

Большинство этих механизмов противодействия атакам на разграничение доступа и эксплуатации уязвимостей находятся в разделе linux/security:

42ed421effcb6604331d042eaaaea053 300x178

Тут размещены доступные для улучшения механизмов защиты модули ядра. Только важно учитывать, что не все модули имеют совместимость с остальными. В данный момент, не существует метода использования одновременно нескольких модулей LSM. Так что при самостоятельной сборке ядра, вам придется решить какой модуль вам наиболее подойдет.  Всего доступно 11 штук:

25e6d3136e2309161d3fe56783cb1af1 300x132

К примеру, модуль 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:

7221bd618060dee436b90258039309de 300x240

Итого обнаружено 29 опций, которые не используются или не найдены из 111. Довольно хороший результат. Особенно учитывая, что конфиг эталона — параноидальный.

Механизмы защиты Debian

В случае с Debian, мы выбрали модификацию Kali Linux, неофициальный дистрибутив. Это дистрибутив, часто используемый для тестирования на проникновение. Давайте оценим как у него у самого с параметрами безопасности:

5f2921320027cca541a9a249eeedc34e 300x201

Kali Linux несмотря на узкий спектр задач, для которых используется, все таки содержит в себе достаточное количество опций и параметров ядра для противодействия атакам.

Мы продемонстрировали как можно выяснять, как настроен тот или иной дистрибутив, которым вы пользуетесь на базе ядра ОС Linux. Если у вас возникли вопросы или необходима консультация по данной тематике — обращайтесь! Наши специалисты помогут вам разобраться в механизмах защиты и противодействия атакам.

360 F 105690297 dMDratPsJx5kfVeUjYnuVXMl4HmSJERn 300x300 +38 (050) 470-29-17

360 F 105690297 dMDratPsJx5kfVeUjYnuVXMl4HmSJERn 300x300 +38 (094) 710-16-18

Skype outline 318 10566 300x300 vkarabedyants

A9741aa5ce89000ef341872d32e4ba69 Telegram

Images 1 office@itfb.com.ua