22 июля раскрыта уязвимость CVE-2026-64600 (RefluXFS) в ядре Linux: состояние гонки в подсистеме XFS reflink позволяет непривилегированному локальному пользователю перезаписать файлы, принадлежащие root, и получить постоянный привилегированный доступ. Баг присутствует в ядрах начиная с версии 4.11 (2017 год). По данным исследователей Qualys, условия эксплуатации выполняются на стандартных установках Red Hat Enterprise Linux и производных дистрибутивов, Fedora Server и Amazon Linux. Исправление влито в основную ветку ядра 16 июля, вендоры начали выпускать обновлённые ядра. Публичный PoC-эксплойт доступен, но эксплуатация в дикой природе на момент раскрытия не зафиксирована. Единственная эффективная мера — обновление ядра с последующей перезагрузкой.
Механизм уязвимости
Уязвимость относится к классу TOCTOU (time-of-check-to-time-of-use) — ошибка проверки-затем-использования через цикл блокировки. Атакующий клонирует файл, принадлежащий root, в свой рабочий файл при помощи системного вызова FICLONE, для которого достаточно права на чтение исходного файла. Механизм XFS reflink использует копирование при записи (copy-on-write): оба файла первоначально ссылаются на одни и те же физические блоки диска.
Ядро считывает маппинг данных (data-fork mapping) под блокировкой инода и передаёт его функции xfs_reflink_fill_cow_hole(), которая снимает эту блокировку для резервирования транзакционного пространства. В этот промежуток второй параллельный писатель может завершить операцию copy-on-write и переназначить клонированный файл на новый блок. Когда первый писатель повторно захватывает блокировку, он обновляет COW-форк, но продолжает использовать устаревший адрес блока из data-fork.
Как описано в патче: «маппинги становятся устаревшими, как только мы повторно захватываем ILOCK». Устаревший адрес теперь указывает на блок, принадлежащий исключительно оригинальному защищённому файлу. XFS считает блок неразделяемым и разрешает прямую запись — данные, предназначенные для клона атакующего, попадают в целевой файл root.
Критически важно: запись через Direct I/O обходит страничный кэш и целевой инод целиком, поэтому метаданные файла — владелец, права, временные метки, бит setuid — остаются нетронутыми. По данным исследователей, модифицированный setuid-root бинарный файл продолжает выполняться с правами root. Тесты не выявили ни предупреждений ядра, ни записей в журналах. На тестовой машине гонка, как сообщается, выигрывалась менее чем за десять секунд.
Патч затрагивает две функции — xfs_reflink_fill_cow_hole() и xfs_reflink_fill_delalloc(). Исправление сохраняет значение счётчика ip->i_df.if_seq перед снятием блокировки и перечитывает data-fork через xfs_bmapi_read(), если счётчик изменился.
Кто подвержен риску
Эксплуатация требует одновременного выполнения трёх условий:
- Система работает на ядре Linux 4.11 или новее без исправления RefluXFS.
- Файловая система XFS создана с параметром
reflink=1. - Целевой файл (доступный на чтение) и директория, доступная атакующему на запись, находятся на одной файловой системе XFS.
По данным Qualys, стандартные установки следующих систем могут удовлетворять этим условиям:
- RHEL, CentOS Stream, Oracle Linux, Rocky Linux, AlmaLinux, CloudLinux версий 8, 9 и 10
- Fedora Server 31 и новее
- Amazon Linux 2023 и образы Amazon Linux 2 начиная с декабря 2022
RHEL 7 не затронут — его файловые системы предшествуют поддержке XFS reflink. Дистрибутивы Debian, Ubuntu, SLES и openSUSE по умолчанию не используют XFS для корневой файловой системы и подвержены только при явном выборе XFS с включённым reflink при установке.
Для проверки выполните:
xfs_info / | grep reflink=
Результат reflink=1 означает, что второе условие эксплуатации выполнено. Ту же проверку следует провести для всех смонтированных томов XFS, где защищённые файлы и директории с доступом на запись могут сосуществовать.
Отсутствие обходных путей
Qualys сообщает, что практических временных мер не существует. Нет опции монтирования или параметра sysctl, который отключил бы reflink на уже созданной файловой системе. В ходе тестирования исследователей SELinux в режиме Enforcing, seccomp, kernel lockdown и границы контейнеров не остановили эксплуатацию. Защитные механизмы памяти (KASLR, SMEP) неприменимы: это запись на уровне блочного устройства, а не повреждение памяти.
Единственное ограничение — гонка срабатывает только если целевой блок файла не является разделяемым (unshared). Однако, как указано в адвизори, непривилегированный пользователь может сбросить это условие, например, выполнив chsh, а setuid-root бинарные файлы в типичных конфигурациях и так не являются reflink-копиями.
Роль ИИ в обнаружении
Qualys заявляет, что уязвимость была обнаружена при помощи модели ИИ — Claude Mythos Preview от Anthropic, которой было предложено найти уязвимость, аналогичную Dirty COW. По данным компании, модель локализовала гонку, написала работающий эксплойт для получения root и подготовила черновик адвизори. Исследователи затем воспроизвели баг на стандартной установке Fedora Server 44, проверили логику модели и координировали раскрытие с разработчиками ядра. Это утверждение исходит исключительно от Qualys и не подтверждено независимо.
Статус патчей
Red Hat выпустил рекомендации с рейтингом Important для затронутых потоков RHEL 8, 9 и 10. Эрраты начали публиковаться 14 июля — за восемь дней до координированного раскрытия: RHSA-2026:39179 и RHSA-2026:39180 для RHEL 8, RHSA-2026:39494 для RHEL 10, с дополнительными обновлениями для потоков расширенной поддержки и SAP до 17 июля. Покрытие зависит от конкретного потока — необходимо убедиться в наличии эрраты для вашего точного релиза.
Запись в баг-трекере Red Hat была автоматически импортирована 10 июля под заголовком «kernel: XFS data corruption using reflink» и первоначально описывала проблему как возможное повреждение данных. Публичный PoC зарегистрирован в трекере 22 июля.
По данным трекера Debian на 23 июля, исправление доступно в trixie-security (ядро 6.12.96-1) и в unstable (7.1.4-1). Базовое ядро trixie (6.12.94-1), forky (7.1.3-1), а также bookworm и bullseye, включая их ветки безопасности, по-прежнему отмечены как уязвимые.
Рекомендации
- Приоритизируйте многопользовательские системы и хосты, где непроверенный код может выполняться локально (CI/CD, общие серверы, скомпрометированные сервисы).
- Установите обновлённое ядро от вашего вендора. Организациям, применившим эрраты Red Hat до 22 июля, защита уже обеспечена.
- Перезагрузите систему после установки пакета — обновление не заменяет работающее в памяти ядро.
- Проверьте, что система загрузилась с исправленным ядром:
uname -r. - Проверьте все тома XFS на наличие
reflink=1, а не только корневую файловую систему.
RefluXFS — уязвимость без обходных путей: ни SELinux, ни контейнеризация, ни seccomp не блокируют эксплуатацию. При наличии публичного PoC и подробного описания шагов атаки в рассылке oss-security окно для безопасного бездействия минимально. Единственное надёжное действие — установить обновлённое ядро и перезагрузить каждый хост с XFS reflink, убедившись командой uname -r, что система работает на исправленной версии.