Task 1: Introduction
Dirty Frag is a vulnerability class that chains two separate Linux kernel bugs to gain root on every major distribution. The two bugs sit in unrelated subsystems, but they share an identical underlying pattern, and chaining them lets a single exploit binary cover the blind spots that would otherwise stop each bug individually. The class was discovered and reported by @v4bel.
The two component vulnerabilities are:
- xfrm-ESP Page-Cache Write -
CVE-2026-43284, in the IPsec ESP input path. Merged to the netdev tree on 7 May 2026 and accepted into mainline on 8 May 2026 as commitf4c50a4034e6. - RxRPC Page-Cache Write -
CVE-2026-43500reserved, in the AFS RxRPC verify path. No patch exists in any tree at the time of disclosure.
If you have completed the Copy Fail room, the underlying primitive will be familiar. Both Copy Fail and Dirty Frag write into the in-memory page cache of a file that the attacker only has read access to, and both bypass file integrity monitoring as a result. The subsystems involved differ, but the class of bug is the same.
Dirty Frag is named for the kernel structure it abuses. Where Dirty Pipe corrupted struct pipe_buffer and Copy Fail corrupted the AF_ALG output buffer, Dirty Frag corrupts the frag slot of struct sk_buff. The full disclosure document, including the proof-of-concept, lives at the V4bel/dirtyfrag repository.
The combined impact is severe. The chained exploit was tested successfully on Ubuntu 24.04.4, RHEL 10.1, AlmaLinux 10, openSUSE Tumbleweed, CentOS Stream 10, and Fedora 44. The xfrm-ESP variant was introduced by commit cac2661c53f3 on 17 January 2017, giving it nine years of effective lifetime. The RxRPC variant was introduced by commit 2dc334f1a63a in June 2023.
A short comparison against the previous two room subjects:
| Property | Dirty Pipe (CVE-2022-0847) | Copy Fail (CVE-2026-31431) | Dirty Frag |
|---|---|---|---|
| Kernel structure abused | struct pipe_buffer |
AF_ALG output buffer | struct sk_buff frag |
| Primitive size | Arbitrary | 4-byte controlled | 4 or 8-byte controlled |
| Race condition required | Originally yes | No | No |
| On-disk file changed | No | No | No |
| File integrity bypass | Yes | Yes | Yes |
| Affects all major distros | Yes | Yes | Yes (by chaining) |
Learning Objectives
By the end of this room, you will be able to:
- Explain the shared zero-copy splice pattern that links Dirty Pipe, Copy Fail, and Dirty Frag
- Describe the xfrm-ESP variant and how attacker-controlled
seq_hilands in the page cache - Describe the RxRPC variant and why brute-forcing in user-space is required
- Explain why the two variants are chained and how the chain bypasses distribution-specific defences
- Apply the published
modprobemitigation on a vulnerable host
Prerequisites
This room assumes comfort with Linux command-line operation and a working understanding of local privilege escalation, as covered in Linux Fundamentals and Linux Privilege Escalation. Familiarity with the Copy Fail room is strongly recommended; Dirty Frag builds directly on the page cache write primitive introduced there.
Connecting to the Machine
Click the Start Lab Machine button at the top of this task and allow about a minute for it to boot. The room launches an in-browser split-view terminal already logged in as the unprivileged user karen. Credentials for SSH access from your own machine are provided in Task 5.
Answer the questions below
I have successfully started my machine.