Запрет SELinux на загрузку модулей ядра можно обойти через init_module

Запрет SELinux на загрузку модулей ядра можно обойти через init_module

Запрет SELinux на загрузку модулей ядра можно обойти через init_module

Американец Шон Пеше (Sean Pesce) представил свой способ обхода SELinux, позволяющий выполнить любой код на уровне ядра. Опубликован PoC-код, с помощью которого можно отключить все ограничения на доступ, реализуемые через этого охранника.

В Linux для загрузки модулей ядра используются два системных вызова: finit_module и init_module. Как оказалось, дополняющая DAC и ACL система SELinux реагирует только на finit, а использование init не отслеживает.

Это открытие Пеше сделал, когда на досуге экспериментировал с неназванным Linux-устройством архитектуры ARM. Получив шелл-доступ с привилегиями root, исследователь попытался выполнить ряд действий из пространства пользователя (смонтировать файловую систему, получить доступа к определенным файлам и т. п.) и обнаружил, что они невозможны из-за включенной защиты SELinux.

Затем он попытался выполнить кастомный код уровня ядра с помощью утилиты insmod (использует системный вызов finit_module). Правила SELinux заблокировали загрузку, и Пеше решил попытать счастья с загрузкой не с диска, а из буфера в памяти, то есть использовать init_module.

Походящий готовый лоадер нашелся, и после его доработки трюк сработал. Испытатель даже смог с его помощью полностью отключить защиту SELinux. Для демонстрации метода создан PoC-эксплойт, который при наличии ограниченного root-доступа позволяет выполнить код на уровне ядра.

В Android подобный контроль доступа к ресурсам и файлам используется, начиная с версии 4.3. Возможность обхода SELinux недавно была выявлена в шпионском дуэте Predator – Alien.

Шпионская служба Windows 11 оказалась диагностическим комбайном

Сервис Windows Health and Optimized Experiences, который ранее обвинили в слежке за пользователями Windows 11, оказался куда мощнее ожидаемого, но шпионского заговора исследователь не обнаружил.

Реверс-инженер Сюшэн Ли изучил службу whesvc, которая собирает диагностические данные при зависаниях и падении производительности.

Основная логика находится в библиотеке windiag.dll со встроенным интерпретатором Lua 5.4.7. Ещё одна библиотека содержит 84 скомпилированных сценария для разных типов диагностики.

Движку доступны 79 системных функций. Он способен работать с реестром и файлами, запускать процессы, обращаться к WMI, собирать ETW-трассировки, проверять токены безопасности, получать данные о температуре и питании, создавать CAB-архивы и выполнять HTTP-запросы. Всё это работает с привилегиями SYSTEM — набор инструментов солидный даже по меркам Windows.

Однако штатные сценарии используют возможности в основном по назначению. Сервис диагностирует утечки памяти, зависшие приложения, задержки ввода, проблемы с экраном, медленный запуск программ и повышенный расход батареи. Он также может запускать powercfg.exe и wpr.exe.

Знаменитый 15-минутный отчёт действительно создаётся, но сохраняется локально. Автоматической отправки диагностических трассировок Microsoft исследователь не обнаружил. Единственный найденный сетевой адрес ведёт на публичный сервер символов компании, причём на обычных пользовательских системах эта функция отключена.

RSS: Новости на портале Anti-Malware.ru