
Детерминированный эксплойт локального повышения привилегий для ядра Linux, объединяющий два примитива записи в кэш страниц (xfrm/ESP и RxRPC) для надёжного получения root-доступа на всех основных дистрибутивах с 2017 года.
Универсальное локальное повышение привилегий в ядре Linux
| Поле | Детали |
|---|---|
| CVE | CVE-2026-43284 (xfrm/ESP) + CVE-2026-43500 (RxRPC) |
| Псевдоним | Dirty Frag |
| CVSS | 7.8 HIGH |
| Тип | Локальное повышение привилегий (LPE) |
| Введено | Ядро Linux 4.10 (2017, коммит cac2661c53f3) |
| Исправлено | Основные коммиты f4c50a4034e6 / aa54b1d27fe0 |
| Требования | Локальный доступ оболочки без привилегий |
| Вектор удалённой атаки | Нет — только локально |
| Раскрыто | 7 мая 2026 г., Hyunwoo Kim (@v4bel) |
Логическая ошибка в подсистемах xfrm/ESP и RxRPC ядра Linux позволяет непривилегированному локальному пользователю выполнить детерминированную, контролируемую запись произвольных данных в кэш страниц любого читаемого файла в системе — включая setuid-бинарники, такие как /usr/bin/su.
Основная причина — небезопасное дешифрование на месте фрагментов общего буфера сокета (skb) , которые ссылаются на страницы кэша страниц, особенно при использовании splice(2) или sendfile(2). Это даёт мощный примитив произвольной записи в кэш страниц, который можно использовать для перезаписи критических файлов в памяти и получения полного доступа root.
Для универсального покрытия объединены два различных примитива:
xfrm-ESP Page-Cache Write: использует тот же сток, что и Copy Fail, но активируется через модули esp4/esp6, независимо от наличия algif_aead. Требует привилегий на создание пространства имён.RxRPC Page-Cache Write: не требует привилегий пространства имён, но rxrpc.ko должен присутствовать (загружен по умолчанию в Ubuntu). Покрывает слепые зоны CVE-2026-43284.Объединение двух вариантов позволяет им покрывать слепые зоны друг друга, достигая надёжного root на всех основных дистрибутивах.
Нет состояния гонки. Нет повторных попыток. Нет риска паники. Детерминированно на всех протестированных дистрибутивах.
Важно: Даже на системах, где применено общеизвестное смягчение Copy Fail (чёрный список algif_aead), Dirty Frag остаётся эксплуатируемым через CVE-2026-43284.
| Dirty Cow (2016) | Dirty Pipe (2022) | Copy Fail (2026) | Dirty Frag (2026) | |
|---|---|---|---|---|
| Требуется состояние гонки | Да | Частично | Нет | Нет |
| Зависит от версии | Да | Да | Нет | Нет |
| Надёжность | Нестабильная | Умеренная | Детерминированная | Детерминированная |
| Покрытие дистрибутивов | Ограниченное | Ограниченное | Все с 2017 | Все с 2017 |
| Обходит смягчение Copy Fail | — | — | N/A | Да |
algif_aead (обходной путь Copy Fail)CVE-2026-43284 (xfrm/ESP): Ядро Linux от коммита cac2661c53f3 (2017-01-17) до f4c50a4034e6 (2026-05-05).
CVE-2026-43500 (RxRPC): Ядро Linux от коммита 2dc334f1a63a (2023-06-08) до aa54b1d27fe0 (2026-05-10).
Эффективное время жизни цепочки уязвимости составляет примерно 9 лет.
Все основные дистрибутивы, поставляющие ядра в этом диапазоне, затронуты, включая:
| Дистрибутив | Протестированная версия | Статус |
|---|---|---|
| Ubuntu 24.04.4 | 6.17.0-23-generic | Затронут — патч распространяется |
| RHEL 10.1 | 6.12.0-124.49.1.el10_1.x86_64 | Затронут — патч распространяется |
| AlmaLinux 10 | 6.12.0-124.52.3.el10_1.x86_64 | Затронут — патч доступен |
| CentOS Stream 10 | 6.12.0-224.el10.x86_64 | Затронут — патч распространяется |
| Fedora 44 | 6.19.14-300.fc44.x86_64 | Затронут — патч доступен |
| openSUSE Tumbleweed | 7.0.2-1-default | Затронут — в работе |
| Debian | — | Затронут — в работе |
gcc -O0 -Wall -o exp exp.c -lutil && ./exp
Не используйте на системах, на которые у вас нет разрешения на тестирование.
⚠️ Важно: После запуска этого эксплойта кэш страниц загрязнён. Чтобы очистить загрязнённый кэш страниц и обеспечить стабильность системы, выполните:
echo 3 > /proc/sys/vm/drop_caches
или перезагрузите систему.
Обновите ядро до версии, содержащей основные исправления, и перезагрузитесь.
Исправлено в основной ветке через:
f4c50a4034e62ab75f1d5cdd191dd5f9c77fdff4aa54b1d27fe0c2b78e664a34fd0fdf7cd1960d71# Ubuntu / Debian
sudo apt update && sudo apt upgrade -y && sudo reboot
# RHEL / AlmaLinux / CentOS Stream
sudo dnf clean metadata && sudo dnf upgrade && sudo reboot
# SUSE / openSUSE
sudo zypper refresh && sudo zypper update kernel-default && sudo reboot
# Fedora
sudo dnf upgrade --refresh && sudo reboot
Если немедленное патчирование невозможно, отключите уязвимые модули и очистите кэш страниц.
# Добавить в чёрный список уязвимые модули
sudo sh -c 'printf "install esp4 /bin/false\ninstall esp6 /bin/false\ninstall rxrpc /bin/false\n" > /etc/modprobe.d/dirtyfrag.conf'
# Выгрузить модули немедленно
sudo rmmod esp4 esp6 rxrpc 2>/dev/null || true
# Сбросить кэш страниц
echo 3 | sudo tee /proc/sys/vm/drop_caches >/dev/null
| Компонент | Влияние |
|---|---|
| SSH | ✅ Не затронут |
| dm-crypt / LUKS | ✅ Не затронут |
| kTLS / TLS в ядре | ✅ Не затронут |
| OpenSSL / GnuTLS / NSS (сборки по умолчанию) | ✅ Не затронут |
| IPsec / XFRM (ESP-туннели, VPN) | ⚠️ Ломается — esp4 и esp6 будут недоступны |
| AFS / OpenAFS клиенты, использующие RxRPC | ⚠️ Ломается — rxrpc будет недоступен |
Приложения, использующие AF_ALG + AEAD напрямую | ⚠️ Проверьте через lsof | grep AF_ALG |
Для ненадёжных рабочих нагрузок — контейнеры, CI-раннеры, изолированные среды — ограничьте создание сокетов AF_ALG и вызов splice() через политику seccomp или AppArmor независимо от состояния патча. Это ограничивает поверхность атаки даже на уязвимых ядрах, но не является полным исправлением.
Проверьте, загружены ли уязвимые модули или используются ли они в данный момент:
# Проверить, загружены ли модули
lsmod | grep -E 'esp4|esp6|rxrpc'
# Проверить, есть ли у какого-либо процесса открытый сокет AF_ALG
lsof | grep AF_ALG
ss -xa | grep alg
# Подтвердить активность обходного пути после перезагрузки
cat /etc/modprobe.d/dirtyfrag.conf
| Ресурс | Ссылка |
|---|---|
| Основное исправление CVE-2026-43284 | f4c50a4034e6 |
| Основное исправление CVE-2026-43500 | aa54b1d27fe0 |
| NVD — CVE-2026-43284 | https://nvd.nist.gov/vuln/detail/CVE-2026-43284 |
| NVD — CVE-2026-43500 | https://nvd.nist.gov/vuln/detail/CVE-2026-43500 |