Dirty Pipe: уязвимость, позволяющая перезаписывать данные

Недавно стало известно, что в ядре Linux была обнаружена уязвимость и который уже внесен в каталог под CVE-2022-0847 и который они назвали как "Грязная труба".

Эта уязвимость получила название «Грязная труба».позволяет перезаписать содержимое кеша страницы для любого файла, в том числе установленного только для чтения, открытого с флагом O_RDONLY или расположенного в файловых системах, смонтированных только для чтения.

С практической точки зрения уязвимость может использоваться для внедрения кода в произвольные процессы или поврежденные данные в открытых файлах. Например, вы можете изменить содержимое файла author_keys для процесса sshd.

О грязной трубе

Похоже на критическую уязвимость Dirty COW. идентифицирован в 2016 году, и упоминается, что Dirty Pipe находится на том же уровне, что и Dirty COW с точки зрения опасности, но что этот намного проще в эксплуатации.

Dirty Pipe была выявлена ​​при разборе жалоб на периодическую порчу архивов загружены по сети на систему, загружающую с сервера журналирования сжатые файлы (37 повреждений за 3 месяца на загруженной системе), которые были подготовлены с использованием операции splice() и безымянных каналов.

Уязвимость проявляется с версии ядра Linux 5.8, выпущенный в августе 2020 года.

С другой стороны, можно сказать, что он присутствует в Debian 11, но не влияет на базовое ядро ​​в Ubuntu 20.04 LTS, тогда как для ядер RHEL 8.x и openSUSE/SUSE 15, которые изначально основаны на старых ветках, но это возможно что изменение, вызывающее проблему, было передано им (точных данных пока нет).

Уязвимость связана с отсутствием инициализации значения "buf->flags" в коде функций copy_page_to_iter_pipe() и push_pipe(), несмотря на то, что память не очищается при выделении структуры, и при определенных манипуляциях с безымянными каналы, "buf->flags" может содержать значение из другой операции. С помощью этой функции непривилегированный локальный пользователь может добиться появления значения PIPE_BUF_FLAG_CAN_MERGE во флаге, что позволяет ему перезаписывать данные в кэше страниц, просто записывая новые данные в специально подготовленный безымянный канал.

для атаки можно сделать, нужен целевой файл, который должен быть читабельным а так как права доступа не проверяются при записи в канал, замена может производиться в страничном кэше даже для файлов, расположенных на разделах только для чтения (например, для файлов c CD-ROM).

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

Упоминается, что операция Dirty Pipe сводится к созданию безымянного канала и заполнению его произвольными данными добиться установки флага PIPE_BUF_FLAG_CAN_MERGE на всех связанных с ним кольцевых структурах.

Затем данные считываются из канала, но флаг остается установленным для всех экземпляров структуры pipe_buffer в кольцевых структурах pipe_inode_info. Затем выполняется вызов splice() для чтения данных из целевого файла в безымянный канал, начиная с требуемого смещения. При записи данных в этот безымянный канал флаг PIPE_BUF_FLAG_CAN_MERGE перезапишет данные в кэше страниц вместо создания нового экземпляра структуры pipe_buffer.

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

Также, если вы заинтересованы в иметь возможность следить или знать о публикации обновлений пакетов в основных дистрибутивах, вы можете сделать это с этих страниц: DebianSUSEUbuntuRHELFedoraGentooАрх Линукс.

Упоминается, что предлагаемое исправление уязвимости доступно в версиях ядра Linux 5.16.11, 5.15.25 и 5.10.102, а также исправление включено в ядро, используемое на платформе Android.


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

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

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

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

*

*

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