Обнаружена уязвимость в подсистеме tty ядра Linux

Исследователи из команды Google Project Zero выпустили недавно через сообщение в блоге новый метод эксплуатации уязвимостей (CVE-2020-29661) в реализации обработчика ioctl TIOCSPGRP из Подсистема tty ядра Linux, а также подробные механизмы защиты, которые могут заблокировать эти уязвимости.

В сообщении упоминается, что проблема вызвана ошибкой в ​​настройках блокировки, что привело к состоянию гонки в коде /tty/tty_jobctrl.c, который использовался для создания условий для доступа к памяти после запуска (use-after-free), эксплуатируемой пользовательским пространством посредством манипуляции с ioct- путем вызова TIOCSPGRP.

Помимо опубликованной информации, также была проведена функциональная демонстрация эксплойта для повышения привилегий в Debian 10 с ядром 4.19.0-13-amd64 и что также не исключает, что это может повлиять на различные дистрибутивы, среди которых, конечно же, есть те, которые основаны на Debian и являются производными от него.

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

Фрагменты кода в этом сообщении блога, относящиеся к эксплойту, взяты из предыдущей версии 4.19.160, поскольку именно на нем основано целевое ядро ​​Debian; некоторые другие фрагменты кода взяты из основной ветки Linux.

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

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

Особый тип терминального устройства - это псевдотерминалы, которые используются, например, когда вы открываете приложение терминала в графической среде или подключаетесь к удаленному компьютеру через SSH. В то время как другие терминальные устройства подключены к какому-либо аппаратному обеспечению, оба конца псевдотерминала управляются пространством пользователя, и псевдотерминалы могут быть свободно созданы пространством пользователя (без привилегий).

Всякий раз, когда / dev / ptmx открывается (сокращение от «псевдотерминальный мультиплексор»), результирующий файловый дескриптор представляет сторону устройства (называемую в документации и исходных текстах ядра «главным псевдотерминалом») устройства. Новый псевдотерминал -Терминал.

 Соответствующее оконечное устройство (к которому обычно подключается оболочка) автоматически создается ядром в / dev / pts / .

При рассмотрении того, что может иметь значение в долгосрочной перспективе, упор делается на использование расширенных статических парсеров или использование безопасных для памяти языков, таких как диалекты Rust и C с расширенными аннотациями (например, проверенный C), для создания средств проверки статуса, блокировок и т. Д. объекты и указатели. В методах защиты также упоминается включение режима panic_on_oops, что делает структуры ядра доступными только для чтения и ограничивает доступ к системным вызовам с помощью таких механизмов, как seccomp.

Ошибка, вызывающая проблему это было исправлено в ядре Linux 3 декабря прошлого года. Проблема проявляется в ядрах до версии 5.9.13, но большинство дистрибутивов устранили проблему в обновлениях пакетов ядра, которые предлагались в прошлом году.

Также упоминается аналогичная уязвимость (CVE-2020-29660), которая была обнаружена одновременно в реализации вызова TIOCGSID ioctl, но также была везде удалена.

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


Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.

Будьте первым, чтобы комментировать

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

Ваш электронный адрес не будет опубликован.

*

*

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

bool (истина)