Одной из самых сильных сторон ядра Linux в первую очередь является его открытая природа, что позволяет заинтересованным сторонам создавать, модифицировать и распространять его таким образом, который соответствует их конкретным потребностям. Но само это преимущество открытого исходного кода действует как обоюдоострый меч, когда дело доходит до поиска незакрытых уязвимостей безопасности и соответствующих сценариев их использования. В то время как разработчики и известные OEM-производители усердно работают над повышением общей безопасности экосистемы Linux (которая также включает Android), продолжают появляться новые уязвимости и эксплойты.
Новейшая ошибка была обнаружена исследователем безопасности Максом Келлерманном. Уязвимость, получившая название “Грязная труба” (Dirty Pipe), позволяет перезаписывать данные в произвольных файлах, доступных только для чтения. Хотя она уже была исправлена в основном ядре Linux, эта ошибка потенциально может быть использована в виде эксплойта для повышения привилегий на каждом устройстве с ядром Linux версии 5.8 или новее. Это означает, что несколько недавно выпущенных Android-смартфонов, таких как Samsung Galaxy S22 и Google Pixel 6, также уязвимы, пока каждое устройство не получит соответствующий патч ядра от соответствующего OEM-производителя.
Происхождение Dirty Pipe
Келлерманн наткнулся на аномалию еще в апреле 2021 года, но ему потребовалось еще несколько месяцев, чтобы придумать экспериментальный эксплойт. Уязвимость, официально зарегистрированная как CVE-2022-0847, позволяет непривилегированному пользователю внедрять и перезаписывать данные в файлы, доступные только для чтения, включая SUID-процессы, запущенные от имени root-пользователя.
Hacked up a quick Dirty Pipe PoC that spawns a shell by hijacking (and restoring) the contents of a setuid binary. https://t.co/q8NtTlbgOZ pic.twitter.com/jxYUKYVCBo
— BLASTY (@bl4sty) March 7, 2022
Насколько серьезна Dirty Pipe для пользователей Android?
Из-за того, что версия ядра Linux 5.8 (или выше) начала использоваться только начиная с Android 12, устаревшие устройства не затронуты. Тем не менее, смартфоны на базе Qualcomm Snapdragon 8 Gen 1, MediaTek Dimensity 8000 и Dimensity 9000, Samsung Exynos 2200 и Google Tensor SoC уязвимы для Dirty Pipe из-за своих сборок ядра.
Easy root! Looks like #dirtypipe is fine and dandy on #Android. Probably going to be patched in the release version but till then make sure you're running < 5.8. pic.twitter.com/qgb1lFCnEu
— Gab̴̯̚i̶̳̇ C̵̯͖̈͗͒͐i̷͖̘̭͑̈͊r̷͙̞̽͛̿ľ̸̢i̴̧̱͓̅ĝ̵͇͍͕̙ (@hookgab) March 7, 2022
Имейте в виду, что “Грязная труба” сама по себе является не эксплойтом, а скорее уязвимостью. Однако эта уязвимость позволяет изменить двоичный файл, используемый привилегированной службой, или создать новую учетную запись пользователя с root-привилегиями. Используя эту уязвимость, вредоносный процесс в пользовательском пространстве технически может получить беспрепятственный root-доступ на устройстве жертвы.
Что Google уже сделал для борьбы с Dirty Pipe?
По словам Келлерманна, в прошлом месяце Google принял его исправление в ядре Android сразу после того, как вышли исправленные версии Linux 5.16.11, 5.15.25 и 5.10.102. Вероятно, нам придется немного подождать, прежде чем OEM-производители начнут выпускать обновления Android, содержащие исправление. Например, собственный Pixel 6 от Google по-прежнему уязвим, но опытные пользователи могут смягчить эту уязвимость, самостоятельно установив обновленное ядро.