Ядро Linux содержит уязвимость, которая позволяет непривилегированному пользователю получить полномочия администратора системы (root) при помощи ряда публично доступных эксплойтов.
Проблема, получившая название Dirty Pipe по аналогии с напоминающей ее ранее устраненной брешью Dirty Cow (2016 г.), выявлена исследователем безопасности Максом Келлерманом (Max Kellerman) из немецкой хостинговой компании Ionos.
Уязвимость затрагивает все актуальные версии ядра, начиная с 5.8. Мобильная операционная система Android, которая основана на Linux, также уязвима для Dirty Pipe. В отличие от Dirty Cow, Dirty Pipe, по словам специалиста, гораздо проще использовать на практике. Эксплуатация Dirty Pipe предполагает использование неименованного канала (anonymous pipe), который в Linux является средством однонаправленного обмена данными между процессами.
Новая уязвимость имеет идентификатор CVE-2022-0847, с ее помощью пользователь ОС на базе Linux (в том числе и nobody, технический пользователь, не имеющий каких-либо прав) может перезаписать содержимое страничного кэша любого файла, в том числе предназначенного только для чтения или имеющего установленный атрибут SUID. Это дает возможность злоумышленнику внедрить произвольный код в root-процессы.
«Уязвимость Dirty Pipe крайне серьезна, так как позволяет злоумышленнику – временно или перманентно – перезаписать файлы, изменять которые тот не должен иметь возможности, – отмечает Кристоф Хебайзен (Christoph Hebeisen), исследователь в сфере информационной безопасности компании Lookout. – Злоумышленники могут воспользоваться этим для того, чтобы изменить поведение привилегированных процессов, таким образом получив возможность выполнять произвольный код с расширенными системными привилегиями».
Келлерманн подготовил демонстрационный эксплойт (proof-of-concept, PoC), который позволяет записать любую строку в выбранный файл. В частности, с помощью программы, написанной на языке C, можно добавить ключи для удаленного доступа через SSH.
Пользователь Twitter Blasty представил альтернативный способ эксплуатации уязвимости, при котором текущий пользователь получает root-доступ к текущей оболочке (shell) благодаря модификации содержимого программы с SUID-битом (в данном случае /usr/bin/su).
Другой микроблогер под псевдонимом Phith0n, называющий себя исследователем в области безопасности, предложил вариант с правкой файла /etc/passwd, в котором в Unix-системах в текстовом виде хранится список пользовательских учетных записей. По его словам, достаточно удалить атрибут “x” в строке пользователя root, чтобы добиться возможности для владельца аккаунта с любым уровнем привилегий выполнять произвольные команды от имени администратора с помощью “su root”.
Несмотря на широкие возможности, которые предлагает Dirty Pipe, некоторые аспекты усложняют его ее эксплуатацию. Например, по словам Келлермана, нельзя модифицировать существующий файл таким образом, чтобы его исходный размер изменился.
Прежде чем опубликовать информацию об уязвимости Келлерман сообщил о ней разработчикам ядра Linux 22 февраля 2022 г., предложив патч. Исправления были приняты три дня спустя. Уязвимость устранена в Linux версий 5.6.11, 5.15.25 и 5.10.102. Корпорация Google, ведущая разработку Android, также устранила уязвимость в ядре своей ОС.
Тем не менее, следует иметь в виду, что скорость «закрытия» бреши в действующих системах зависит как от разработчиков конкретных дистрибутивов – того, насколько быстро те добавят исправления в репозитории, так и от оперативности системных администраторов. То есть некоторые серверы могут по-прежнему оставаться уязвимыми к Dirty Pipe.
Быть начеку следует и владельцам Android-смартфонов. По информации портала Ars Technica, последние сборки Android для гаджетов Google Pixel 6 и Samsung Galaxy S22, к примеру, основаны на Linux 5.10.43, то есть уязвимы. В то же время Pixel 4, работающий на Android 12, использует ядро версии 4.14, то есть его владельцы в безопасности. Пользователям уязвимых устройств следует опасаться приложений сомнительного происхождения.
Ядро Linux версии 5.8 было представлено в августе 2020 г. В ходе подготовки к релизу разработчиками было внесено более 17,6 тыс. изменений, включая 1,04 млн новых строчек кода. В Linux 5.8, в частности, появилась поддержка 28-нанометрого процессора Baikal-T1 российской компании Baikal Electronics.
В январе 2022 г. CNews писал об опасной уязвимости в Polkit – инструментарии для предоставления непривилегированным процессам возможности выполнения действий, требующих повышенных прав доступа.
Брешь под названием Pwnkit (CVE-2021-4034) присутствовала в одном из компонентов Polkit – утилите pkexec – с мая 2009 г. и позволяла злоумышленнику с локальным доступом к Linux-машине получить права администратора системы. Таким образом, Linux-, Solaris- и BSD-системы (за исключением OpenBSD) были уязвимы в течение 12 последних лет.
Нажимая на кнопку, я даю Согласие на обработку персональных данных в соответствии с Политикой обработки.