Cайт веб-разработчика, программиста Ruby on Rails ESV Corp. Екатеринбург, Москва, Санкт-Петербург, Новосибирск, Первоуральск

10 строк кода, 732 байта — и root на любом Linux

Copy Fail меняет код в памяти ядра, поэтому системы мониторинга не видят подмены.

В Linux нашли уязвимость, которая позволяет обычному локальному пользователю получить root-доступ через изменение кэша страниц. Проблему назвали Copy Fail, уязвимость получила идентификатор CVE-2026-31431 и уже закрывается в крупных дистрибутивах.

Ошибка связана с криптографическим шаблоном authencesn в ядре Linux. Исследователи Theori объяснили, что непривилегированный пользователь может записать четыре контролируемых байта в кэш страниц (page cache) любого файла, доступного на чтение. Затем злоумышленник может использовать подменённые данные при запуске программы и повысить права до root.

Кэш страниц хранит копии данных из файлов, чтобы ядро быстрее обращалось к содержимому. Когда Linux запускает исполняемый файл, ядро читает данные именно из кэша. Поэтому изменение кэшированной копии фактически меняет исполняемый код на момент запуска, хотя файл на диске остаётся прежним. Защиты, которые следят за событиями файловой системы, например inotify, такую подмену могут не заметить.

Theori опубликовала демонстрационный эксплойт: Python-скрипт занимает 10 строк и 732 байта. По словам исследователей, скрипт может изменить исполняемый файл с флагом setuid и получить root почти в любых Linux-дистрибутивах, выпущенных с 2017 года.

Copy Fail сравнивают с Dirty Cow и Dirty Pipe, двумя известными уязвимостями для локального повышения привилегий. Авторы находки подчёркивают, что новая ошибка не требует выигрывать гонку потоков и потенциально работает шире.

Удалённо использовать Copy Fail напрямую нельзя. Для атаки нужен локальный доступ к системе, поэтому уязвимость особенно опасна после других компрометаций: через удалённое выполнение кода (RCE) в веб-приложении, взломанный сервер сборки, украденный SSH-доступ или запуск недоверенного кода на сервере.

Главный риск возникает в многоарендных Linux-системах, контейнерных средах с общим ядром и инфраструктуре CI/CD. Theori также считает Copy Fail возможным техническим приёмом для выхода из контейнера, поскольку кэш страниц разделяется между хостом и контейнерами. В Kubernetes проблема может затронуть узлы, где разные нагрузки используют одно ядро.

Debian, Ubuntu и SUSE уже выпустили исправления. Red Hat сначала планировала отложить патч, но затем изменила рекомендации и решила закрывать уязвимость вместе с другими дистрибутивами. CVE-2026-31431 получила высокий уровень опасности и оценку 7,8 из 10.

Уязвимость нашёл исследователь Theori Тхэян Ли при помощи Xint Code, собственного инструмента компании для ИИ-поиска ошибок безопасности. Находка хорошо вписывается в общий тренд: автоматизированные системы всё чаще помогают исследователям находить баги в крупном ПО, а программы раскрытия уязвимостей уже сталкиваются с резким ростом числа отчётов.

Dustin Childs из Trend Micro Zero Day Initiative ранее связывал рост количества сообщений об ошибках с тем, что команды безопасности всё активнее используют ИИ-инструменты для поиска уязвимостей. Он писал об этом в разборе апрельских обновлений безопасности. Похожая нагрузка уже вынудила программу Internet Bug Bounty временно приостановить выплаты, пока организаторы разбираются, как обрабатывать поток новых отчётов.

SecurityLab