Опасная уязвимость обнаружена в большинстве дистрибутивов Linux: 732 байта кода откроют любому root-права
Разработчики основанного на алгоритмах искусственного интеллекта средства безопасности Xint Code обнаружили в ядре Linux и, соответственно, в большинстве популярных дистрибутивов опасную уязвимость, которая получила название Copy Fail и номер CVE-2026-31431. Эксплуатируя эту уязвимость, любой пользователь без особых привилегий может получить права администратора (root) практически на любом сервере или ПК под управлением Linux. Для этого достаточно кода размером всего 732 байта на Python.
Уязвимость Copy Fail связана с тем, как Linux работает с файлами — ОС не считывает данные жёсткого или твердотельного диска при каждом обращении к файлу, а записывает его содержимое в особую область оперативной памяти — страничный кеш (Page Cache), который разбивается на фрагменты (страницы) размером по 4 кбайт. Этот кеш является общим для всей системы — даже если речь идёт о процессах внутри контейнеров Docker на серверах, обращение идёт к одному и тому же кешу. Для эксплуатации уязвимости используется программа su (Switch User или Substitute User), которая позволяет обычному пользователю получить права администратора, введя его пароль, поэтому она является излюбленной целью для хакеров.
Скрипт, который требует наличия в системе Python 3.10 и более поздних версий и имеет размер всего 732 байта, позволяет изменить всего четыре байта внутри программы su или любой другой, причём обращение он производит не к соответствующему файлу на диске, а к её копии в страничном кеше оперативной памяти — и её выполнение производится с правами root. Это оказалось возможным за счёт трёх особенностей Linux: интерфейса AF_ALG, который позволяет обращаться к криптографическим алгоритмам в ядре Linux; функции splice(), которая позволяет производить обращение к ядру ОС из страничного кеша любого файла, если пользователь имеет право хотя бы читать этот файл; а также алгоритма authencesn в системе защищённых сетевых соединений IPsec, который во время работы использует часть выделенной ему памяти в качестве «черновика» и как раз записывает вышеупомянутые четыре байта прямо в страницы кеша su. Сам файл данной программы на диске остаётся нетронутым, поэтому средства защиты этого изменения не замечают.
Опасность предложенной схемы в том, что она не требует особых условий и срабатывает с первого раза; один актуальный для всех дистрибутивов скрипт действует скрытно и остаётся незамеченным; наконец, атакующий имеет возможность выйти за пределы контейнеров Docker или Kubernetes на уровень сервера. Чтобы устранить эту уязвимость, выявившие её специалисты разработали патч, отменяющий одну из оптимизаций Linux, выпущенную ещё в 2017 году. При его установке фрагменты страничного кеша перестают попадать в область памяти, доступную для записи. Администраторам систем под Linux рекомендуется оперативно обновить ядро системы до последней доступной версии; в качестве временного решения можно также отключить опасный модуль algif_aead в интерфейсе AF_ALG.
Источник: xint