Уязвимость более 15 лет назад в Netfilter позволила повысить привилегии

Несколько дней назад появилась новость о том, что в Netfilter обнаружена уязвимость (подсистема ядра Linux, используемая для фильтрации и изменения сетевых пакетов), которая позволяет локальному пользователю получить привилегии root в системедаже находясь в изолированном контейнере.

Уязвимость CVE-2021-22555 это проблема, которая существует с ядра 2.6.19, запущен 15 лет назад и вызвано ошибкой в ​​драйверах IPT_SO_SET_REPLACE и IP6T_SO_SET_REPLACE, что вызывает переполнение буфера при отправке специально оформленных параметров через вызов setsockopt в режиме совместимости.

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

Например, поддержка пространств имен непривилегированных пользователей есть в ядре 3.8. Кроме того, в некоторых дистрибутивах есть патч, который добавляет sysctl для отключения непривилегированных пользовательских пространств имен.

В нормальных условиях только пользователь root может вызывать compat_setsockopt (), Но необходимые разрешения совершить атаку они также могут быть получены непривилегированным пользователем в системах с включенными пространствами имен пользователей.

CVE-2021-22555 - это уязвимость записи вне стека в Linux Netfilter 15-летней давности, которая достаточно мощная, чтобы обойти все современные меры безопасности и добиться выполнения кода ядра.

Таким образом, описывается, что локальный пользователь может создать контейнер с отдельным пользователем root и использовать уязвимость оттудая. Например, «пространства имен пользователей» по умолчанию включены в Ubuntu и Fedora, но не в Debian и RHEL.

Этой уязвимостью можно воспользоваться, частично перезаписав m_list->nextуказатель msg_msgструктура и достижение свободного после использования. Этого достаточно, чтобы заставить код вашего ядра работать в обход KASLR, SMAP и SMEP.

Также проблема возникает в функции xt_compat_target_from_user () из-за некорректного расчета размера памяти при сохранении структур ядра после преобразования из 32-битного в 64-битное представление.

Таким образом, упоминается, что ошибка позволяет записать четыре «нулевых» байта в любую позицию вне буфера назначен, ограничен смещением 0x4C. В связи с этим упоминается, что этой возможности оказалось достаточно, чтобы создать эксплойт который позволяет получить права root: удалив указатель m_list-> next в структуре msg_msg, были созданы условия для доступа к данным после освобождения памяти (use-after-free), которые затем использовались для получения информации об адресах и изменениях в другие структуры, манипулируя системным вызовом msgsnd ().

Что касается отчета об ошибке, как и любой обнаруженной уязвимости, это включает процесс и отчет, который был направлен разработчикам ядра в апреле, с помощью которого он был исправлен в течение нескольких дней, а также патч, который включен во все поддерживаемые дистрибутивы, поэтому эта информация об ошибке может быть опубликована позже.

В проектах Debian, Arch Linux и Fedora уже были созданы обновления пакетов. Начиная с Ubuntu, в разработке находятся обновления RHEL и SUSE. Поскольку ошибка серьезная, ее можно использовать на практике. и позволяет вырваться из контейнера, Google оценил свое открытие в 10,000 XNUMX долларов и удвоил награду. исследователю, обнаружившему уязвимость, и за определение метода, позволяющего избежать изоляции контейнеров Kubernetes в кластере kCTF.

Для тестирования подготовлен рабочий прототип эксплойта. который обходит механизмы защиты KASLR, SMAP и SMEP.

В конце концов если вам интересно узнать об этом больше, вы можете проверить детали По следующей ссылке.


Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: AB Internet Networks 2008 SL
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.