Уязвимость более 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. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.