dirtyfrag README

The project's README from github.com/V4bel/dirtyfrag. As one markdown file: README.md.

Dirty Frag: Universal Linux LPE

tux

Abstract

tux

This document describes the Dirty Frag vulnerability class, first discovered and reported by Hyunwoo Kim (@v4bel), which can obtain root privileges on major Linux distributions by chaining the xfrm-ESP Page-Cache Write (CVE-2026-43284) vulnerability and the RxRPC Page-Cache Write (CVE-2026-43500) vulnerability.

Dirty Frag is a case that extends the bug class to which Dirty Pipe and Copy Fail belong. Because it is a deterministic logic bug that does not depend on a timing window, no race condition is required, the kernel does not panic when the exploit fails, and the success rate is very high.

For detailed technical information and the timeline, see here.

[!NOTE] At the time this document was first made public (2026-05-07), the embargo had been broken due to external factors, so no patch or CVE existed yet. After consultation with the maintainers on [email protected] at that time, the Dirty Frag document was published at their request. For the disclosure timeline, refer to the technical details.

Exploiting

One-line special

git clone https://github.com/V4bel/dirtyfrag.git && cd dirtyfrag && gcc -O0 -Wall -o exp exp.c -lutil && ./exp

This PoC is provided as accurate information following consultation with linux-distros. Do not use it on systems that you are not authorized to test.

Cleanup

⚠️ Important: After running this exploit, the page cache is contaminated. To clear the polluted page cache and ensure system stability, either run:

echo 3 > /proc/sys/vm/drop_caches

or reboot the system.

Affected Versions

In other words, the effective lifetime of the vulnerabilities is about 9 years.

This Dirty Frag has been tested on the following distribution versions.

Mitigation

  1. Use the following command to remove the modules in which the vulnerabilities occur and clear the page cache.
sh -c "printf 'install esp4 /bin/false\ninstall esp6 /bin/false\ninstall rxrpc /bin/false\n' > /etc/modprobe.d/dirtyfrag.conf; rmmod esp4 esp6 rxrpc 2>/dev/null; echo 3 > /proc/sys/vm/drop_caches; true"
  1. Once each distribution backports a patch, update accordingly.

FAQ

Why did you chain two vulnerabilities?

xfrm-ESP Page-Cache Write provides a powerful arbitrary 4-byte STORE primitive like Copy Fail, and is included on most distributions, but it requires the privilege to create a namespace.

Ubuntu sometimes blocks unprivileged user namespace creation through AppArmor policy. In such an environment, xfrm-ESP Page-Cache Write cannot be triggered. RxRPC Page-Cache Write does not require the privilege to create a namespace, but the rxrpc.ko module itself is not included in most distributions. However, on Ubuntu, the rxrpc.ko module is loaded by default.

Chaining the two variants makes the blind spots cover each other, allowing root privileges to be obtained on every major distribution. For details, refer to the technical details document.

Another "branded" "Dirty" series?

Yeah, yeah, I know. However, this vulnerability is a descendant of "Dirty Pipe", and it is a bug class that "dirties" the frag member of struct sk_buff, so this name is the most appropriate.

What is its relationship with the "Copy Fail" vulnerability?

Copy Fail was the motivation for starting this research. In particular, xfrm-ESP Page-Cache Write in the Dirty Frag vulnerability chain shares the same sink as Copy Fail. However, it is triggered regardless of whether the algif_aead module is available. In other words, even on systems where the publicly known Copy Fail mitigation (algif_aead blacklist) is applied, your Linux is still vulnerable to Dirty Frag.

So, how do I fix my Linux?

Refer to the Mitigation section above.

dirtyfrag (V4bel/dirtyfrag)

Searching Database…

Что это?Dirty Frag — это PoC-эксплойт локального повышения привилегий для ядра Linux, объединяющий в цепочку две уязвимости записи в page cache (CVE-2026-43284 и CVE-2026-43500), чтобы получить root на основных Linux-дистрибутивах.
Это готовый к запуску инструмент-эксплойт или просто технический разбор?И то и другое: рабочий PoC-эксплойт и сопровождающий исследовательский документ, описывающий класс уязвимостей, который расширяет то же семейство багов, что Dirty Pipe и Copy Fail.
Как запустить эксплойт?Соберите включённый в репозиторий PoC под уязвимое ядро из затронутого диапазона версий, затем запустите его как санкционированный тест на системе, которой владеете или на проверку которой имеете разрешение.
Какие привилегии нужны эксплойту?Примитиву xfrm-ESP нужна возможность создавать user namespace (иногда блокируется политикой AppArmor в Ubuntu), а примитиву RxRPC привилегии на namespace не нужны, но требуется, чтобы был загружен модуль rxrpc.ko, что Ubuntu делает по умолчанию.
Не оставит ли запуск моей системы в плохом состоянии после себя?Да, запуск эксплойта «загрязняет» page cache; нужно либо выполнить прилагаемую команду очистки, либо перезагрузить систему, чтобы вернуть стабильность.
На каких дистрибутивах это реально проверялось?Проверено на Ubuntu 24.04.4, RHEL 10.1, openSUSE Tumbleweed, CentOS Stream 10, AlmaLinux 10 и Fedora 44 — то есть практически на каждом крупном Linux-дистрибутиве.
Зачем объединять в цепочку две разные уязвимости вместо одной?У каждого примитива есть слепая зона на отдельных дистрибутивах: xfrm-ESP требует создания namespace (блокируется AppArmor в Ubuntu), а RxRPC нужен модуль rxrpc.ko (его нет в большинстве дистрибутивов, кроме Ubuntu). Связка обоих закрывает пробелы друг друга, так что root достижим везде.
Как это связано с уязвимостью Copy Fail?Copy Fail вдохновила это исследование, и примитив xfrm-ESP использует тот же «сток» в памяти, что и Copy Fail, но он срабатывает даже при применении публичной защиты от Copy Fail (внесении algifaead в чёрный список), так что системы, пропатченные против Copy Fail, остаются уязвимы.
Крашит ли эксплойт ядро, если не сработал?Нет, Dirty Frag — это детерминированный логический баг, а не состояние гонки, поэтому не требует временных окон, и ядро не паникует при неудачной попытке, что даёт очень высокий процент успеха.
Как защитить свою систему от этого?В качестве немедленной меры удалите затронутые модули ядра (xfrm/ESP и RxRPC) и очистите page cache, а затем, когда они появятся, установите бэкпортированные патчи своего дистрибутива.
Creator
V4bel
Size
5.8 MB
Stars
5.1K
Updated
CommitMay 10
Age
5mo
Commits · 90 Days