Недавно в интернете появилась новость об обнаружении новой уязвимости в Linux , которая классифицируется как «высокосерьезная» и затрагивает все ядра, начиная с версии 5.8, а также производные от нее, включая Android.
Эта технология , известная как Dirty Pipe, позволяет перезаписывать данные в файлах, доступных только для чтения, и может привести к повышению привилегий путем внедрения кода в процессы с правами "root".
Хотя она уже была исправлена в основном ядре Linux, ошибка может быть использована в виде эксплойта для повышения привилегий на всех устройствах с ядром Linux версии 5.8 или более поздней.
Это также означает, что несколько недавно выпущенных Android-смартфонов, таких как Samsung Galaxy S22 и Google Pixel 6, также уязвимы, пока каждое устройство не получит соответствующий патч ядра от соответствующего OEM-производителя.
О грязной трубе
Уязвимость была обнаружена исследователем безопасности Максом Келлерманом и внесена в каталог как (CVE-2022-0847); на поиск эксплойта, подтверждающего концепцию уязвимости, потребовалось несколько месяцев.
Уязвимость позволяет непривилегированному пользователю внедрять и перезаписывать данные в файлах, доступных только для чтения, в том числе в процессах SUID, работающих от имени root. Разговорное прозвище, по-видимому, является игрой слов, отсылающей к печально известной ошибке Dirty Cow и механизму Linux, называемому конвейерной обработкой (pipelining), для передачи сообщений между процессами, поскольку последний используется в процессе эксплуатации уязвимости.
Все началось год назад с обращения в службу поддержки по поводу поврежденных файлов. Клиент пожаловался, что загруженные журналы доступа не могут быть распакованы. И действительно, на одном из серверов журналов был поврежден файл журнала; он мог быть несжатым, но gzip сообщил об ошибке CRC. Я не мог объяснить, почему он был поврежден, но я предположил, что процесс ночного разделения потерпел крах и создал поврежденный файл. Я вручную подправил CRC файла, закрыл тикет и вскоре забыл о проблеме.
После нескольких месяцев анализа исследователь наконец обнаружил, что поврежденные файлы клиента были результатом ошибки в ядре Linux. Он нашел способ использовать уязвимость Dirty Pipe, позволяющую любому пользователю с учетной записью, включая менее привилегированные учетные записи типа «nobody», добавить SSH-ключ к учетной записи root.
Чтобы активировать уязвимость, Келлерман поделился своим доказательством концепции, злоумышленник должен иметь права на чтение. Кроме того, прокрутка не должна находиться на границе страницы, запись не должна пересекать границу страницы, а размер файла нельзя изменить.
Чтобы использовать эту уязвимость, вы должны: создать канал, заполнить канал произвольными данными (установив флаг PIPE_BUF_FLAG_CAN_MERGE для всех записей в кольце), очистить канал (оставив флаг установленным для всех экземпляров структуры pipe_buffer в структуре кольца pipe_inode_info), объединить данные из целевого файла (открытого с помощью O_RDONLY) в канал непосредственно перед целевым смещением и записать произвольные данные в канал.
Dirty Pipe также влияет на любую версию Android, основанную на одной из уязвимых версий ядра Linux. Поскольку Android настолько фрагментирован, модели затронутых устройств невозможно отслеживать единообразно.
По словам Келлермана, Google внесла исправление в ядро Android в прошлом месяце, сразу после того, как оно было исправлено при выпуске версий ядра Linux 5.16.11, 5.15.25 и 5.10.102.
Сказав это, нам, вероятно, придется немного подождать, прежде чем OEM-производители начнут выпускать обновления Android, содержащие исправление. Google Pixel 6, например, по-прежнему уязвим, но опытные пользователи могут смягчить эту уязвимость, установив в качестве альтернативы специальное исправленное ядро вторичного рынка.
Разработчики ядра Linux выпустили исправления (5.16.11, 5.15.25, 5.10.102) 23 февраля, а Google внесла изменения в ядро Android 24 февраля. Келлерманн и другие эксперты сравнили эту уязвимость с CVE-2016-5195 «Dirty Cow» и заявили, что её ещё проще использовать.
Наконец, если вас интересует более подробная информация, вы можете найти ее по следующей ссылке.