Команды исследователей из компаний и Theori обнаружили серьёзную уязвимость в ядре Linux, которой присвоен идентификатор CVE-2026-31431 и неофициальное название Copy Fail. Оценка по шкале CVSS составила 7.8, что соответствует высокому уровню опасности. Брешь относится к классу Local Privilege Escalation и позволяет обычному непривилегированному пользователю получить полные права root практически на любом дистрибутиве Linux.

Уязвимость затрагивает криптографическую подсистему ядра, конкретно модуль
Результат этой записи предельно конкретен: злоумышленник получает возможность вписать ровно четыре контролируемых байта в page cache любого читаемого файла в системе. Четыре байта звучат незначительно, но на практике этого достаточно, чтобы испортить кэшированную копию setuid-бинарника и внедрить в неё произвольный шеллкод.
Весь эксплойт умещается в 732-байтовый Python-скрипт. Последовательность атаки состоит из четырёх шагов. Сначала открывается сокет
Особенность Copy Fail в том, что эксплойт работает надёжно и не требует ни гонки состояний, ни знания смещений ядра. Один и тот же скрипт без каких-либо модификаций срабатывает на разных дистрибутивах. Представитель в комментарии для The Hacker News отметил, что данная уязвимость сочетает в себе четыре свойства, которые почти никогда не встречаются вместе: она портабельна, компактна, незаметна и обладает кросс-контейнерным эффектом.
Кросс-контейнерный аспект заслуживает отдельного внимания. Поскольку page cache является общим для всех процессов в системе, атака способна выходить за пределы контейнерной изоляции. Это превращает её из локальной проблемы в потенциальный инструмент обхода sandbox-окружений, что критично для облачных сред и систем совместного использования.
Уязвимость затрагивает все дистрибутивы Linux, вышедшие начиная с 2017 года. Официальные предупреждения уже выпустили Amazon Linux, Arch Linux, CloudLinux, Debian, Gentoo, Red Hat Enterprise Linux, SUSE и Ubuntu. Удалённая эксплуатация невозможна — для атаки нужен локальный доступ к системе, однако это ограничение не делает уязвимость менее опасной в реальных сценариях: скомпрометированный непривилегированный аккаунт, взломанный контейнер или вредоносный инсайдер превращают Copy Fail в прямой путь к полному контролю над хостом.
Специалисты проводят параллель с уязвимостью Dirty Pipe, известной под номером CVE-2022-0847. Оба случая используют один и тот же класс примитива: сплайсинг данных в page cache файлов с правами только на чтение с последующей перезаписью чувствительных файлов и выполнением произвольного кода. Принципиальное отличие в том, что Copy Fail живёт в другой подсистеме ядра и оставалась незамеченной на несколько лет дольше. Учитывая, что Dirty Pipe в своё время наделала немало шума, Copy Fail по степени практической эксплуатируемости выглядит не менее, а в каком-то смысле и более тревожно — из-за своей переносимости и минимального размера эксплойта.

Изображение носит иллюстративный характер
Уязвимость затрагивает криптографическую подсистему ядра, конкретно модуль
algif_aead. Логическая ошибка была внесена в исходный код ещё в августе 2017 года и с тех пор незаметно присутствовала во всех основных дистрибутивах. Эксперт по безопасности Дэвид Брумли из компании Bugcrowd объяснил механизм следующим образом: оптимизация 2017 года в algif_aead позволяет странице кэша страниц оказаться в записываемом scatterlist ядра при выполнении AEAD-операции через сокет AF_ALG. После этого процесс может использовать команду splice() для небольшой, но точечной записи в кэш страниц файла, которым атакующий не владеет. Результат этой записи предельно конкретен: злоумышленник получает возможность вписать ровно четыре контролируемых байта в page cache любого читаемого файла в системе. Четыре байта звучат незначительно, но на практике этого достаточно, чтобы испортить кэшированную копию setuid-бинарника и внедрить в неё произвольный шеллкод.
Весь эксплойт умещается в 732-байтовый Python-скрипт. Последовательность атаки состоит из четырёх шагов. Сначала открывается сокет
AF_ALG и выполняется привязка к authencesn(hmac(sha256),cbc(aes)). Затем формируется полезная нагрузка с шеллкодом. После этого инициируется запись в кэшированную копию файла /usr/bin/su. Последний шаг — вызов execve("/usr/bin/su"), который загружает внедрённый шеллкод и выполняет его с правами root. Особенность Copy Fail в том, что эксплойт работает надёжно и не требует ни гонки состояний, ни знания смещений ядра. Один и тот же скрипт без каких-либо модификаций срабатывает на разных дистрибутивах. Представитель в комментарии для The Hacker News отметил, что данная уязвимость сочетает в себе четыре свойства, которые почти никогда не встречаются вместе: она портабельна, компактна, незаметна и обладает кросс-контейнерным эффектом.
Кросс-контейнерный аспект заслуживает отдельного внимания. Поскольку page cache является общим для всех процессов в системе, атака способна выходить за пределы контейнерной изоляции. Это превращает её из локальной проблемы в потенциальный инструмент обхода sandbox-окружений, что критично для облачных сред и систем совместного использования.
Уязвимость затрагивает все дистрибутивы Linux, вышедшие начиная с 2017 года. Официальные предупреждения уже выпустили Amazon Linux, Arch Linux, CloudLinux, Debian, Gentoo, Red Hat Enterprise Linux, SUSE и Ubuntu. Удалённая эксплуатация невозможна — для атаки нужен локальный доступ к системе, однако это ограничение не делает уязвимость менее опасной в реальных сценариях: скомпрометированный непривилегированный аккаунт, взломанный контейнер или вредоносный инсайдер превращают Copy Fail в прямой путь к полному контролю над хостом.
Специалисты проводят параллель с уязвимостью Dirty Pipe, известной под номером CVE-2022-0847. Оба случая используют один и тот же класс примитива: сплайсинг данных в page cache файлов с правами только на чтение с последующей перезаписью чувствительных файлов и выполнением произвольного кода. Принципиальное отличие в том, что Copy Fail живёт в другой подсистеме ядра и оставалась незамеченной на несколько лет дольше. Учитывая, что Dirty Pipe в своё время наделала немало шума, Copy Fail по степени практической эксплуатируемости выглядит не менее, а в каком-то смысле и более тревожно — из-за своей переносимости и минимального размера эксплойта.