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