{"id":2378,"date":"2026-05-09T03:44:50","date_gmt":"2026-05-09T07:44:50","guid":{"rendered":"https:\/\/advisoryloom.com\/almain\/dirty-frag-using-the-page-caches-as-an-attack-surface\/"},"modified":"2026-05-09T03:44:50","modified_gmt":"2026-05-09T07:44:50","slug":"dirty-frag-using-the-page-caches-as-an-attack-surface","status":"publish","type":"post","link":"https:\/\/advisoryloom.com\/almain\/dirty-frag-using-the-page-caches-as-an-attack-surface\/","title":{"rendered":"Dirty Frag: Using the Page Caches as an Attack Surface"},"content":{"rendered":"<div>\n<p>Dirty Frag is a Linux local privilege escalation (LPE) chain published on May 7, 2026. It combines two previously unknown kernel vulnerabilities can allow an unprivileged local user to escalate to root on many major Linux distributions.<\/p>\n<ul class=\"wp-block-list\">\n<li>xfrm-ESP Page-Cache Write (CVE-2026-43284)\u00a0<\/li>\n<\/ul>\n<ul class=\"wp-block-list\">\n<li>RxRPC Page-Cache Write (CVE-2026-43500)\u00a0<\/li>\n<\/ul>\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>As of May 8, 2026, CVE-2026-43284 had been patched in mainline Linux, while public reporting indicated that CVE-2026-43500 did not yet have patches available.<\/p>\n<\/blockquote>\n<p><strong>The Dirty Pipe Connection:<\/strong><\/p>\n<p>Dirty Frag is the third discovery of a bug class that all share similar logic. A zero-copy send path\u00a0plants an attacker-controlled or attacker-readable page into a kernel data structure as a raw reference. A downstream consumer assumes that buffer is privately owned by the kernel and performs an in-place write. The attacker controls where that write lands, in a page they only had read access to<em>.<\/em><\/p>\n<figure class=\"wp-block-table is-style-stripes\">\n<table class=\"has-fixed-layout\">\n<tbody>\n<tr>\n<td><strong><em>Bug<\/em><\/strong><strong><em><\/em><\/strong><\/td>\n<td><strong><em>Year<\/em><\/strong><strong><em><\/em><\/strong><\/td>\n<td><strong><em>Sink<\/em><\/strong><strong><em><\/em><\/strong><\/td>\n<td><strong><em>Primitive<\/em><\/strong><strong><em><\/em><\/strong><\/td>\n<\/tr>\n<tr>\n<td><em>Dirty Pipe (CVE-2022-0847)<\/em><em><\/em><\/td>\n<td>2022<\/td>\n<td>struct pipe_buffer<\/td>\n<td>Page-cache overwrite via stale PIPE_BUF_FLAG_CAN_MERGE<\/td>\n<\/tr>\n<tr>\n<td><em>Copy Fail (CVE-2026-31431)<\/em><em><\/em><\/td>\n<td>Apr 2026<\/td>\n<td>algif_aead TX SGL<\/td>\n<td>4-byte STORE during crypto_authenc_esn_decrypt() byte rearrangement<\/td>\n<\/tr>\n<tr>\n<td><strong><em>Dirty Frag<\/em><\/strong><em>\u00a0(CVE-2026-43284, CVE-2026-43500)<\/em><em><\/em><\/td>\n<td>May 2026<\/td>\n<td>frag of struct sk_buff<\/td>\n<td>4-byte STORE (ESP) and 8-byte STORE (RxRPC) into nonlinear skb frag<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n<p>Dirty Frag exists on the receive side of a network protocol that performs in-place crypto on skb_shinfo(skb)-&gt;frags[]. Since splice_to_socket() automatically sets MSG_SPLICE_PAGES, a page cache page that the attacker only has read access to gets pinned into frags[0] as-is. The receiver-side kernel then does its in-place STORE on top of it.<\/p>\n<h1 class=\"wp-block-heading\">CVE-2026-43284: xfrm-ESP Page-Cache Write<\/h1>\n<p>Registering an XFRM SA needs CAP_NET_ADMIN privileges, which means the attacker has to first create a new user namespace via unshare(CLONE_NEWUSER | CLONE_NEWNET). On distributions that allow unprivileged user namespaces (RHEL, Fedora, openSUSE, AlmaLinux), this is easily achieved. However, on systems like Ubuntu, AppArmor sometimes blocks unprivileged user-namespace creation. This is exactly why the second CVE in the chain exists.<\/p>\n<h1 class=\"wp-block-heading\">CVE-2026-43500: RxRPC Page-Cache Write<\/h1>\n<p>The publicly available exploit\u2019s chosen target is \/etc\/passwd line 1. In this implementation, 12 bytes forces a rewrite via three sequential 8-byte STOREs to produce an empty password field for root. Successful exploitation then leads to simply use a \u201csu \u2013\u201c without a prompt. Moreover, this vulnerability requires normal user privileges alone. add_key(\u201crxrpc\u201d, \u2026), socket(AF_RXRPC), socket(AF_ALG), splice(), and recvmsg() are all unprivileged APIs. Hence, no user-namespace creation is needed. This is why the Dirty Frag exploit chain works on hardened Ubuntu systems even where ESP is blocked.<\/p>\n<p><strong>The Security Blind Spot:<\/strong><\/p>\n<p>The Dirty Frag exploit does not touch any files on a hard drive. Security tools that depend on hashing the file on a disk will not detect a Dirty Frag exploitation as the malicious cache exists only in RAM. Furthermore, the page cache is contaminated until either \u201cecho 3 &gt; \/proc\/sys\/vm\/drop_caches\u201d runs or the system reboots. The drop_caches command frees the Linux kernel\u2019s page cache, dentries, and inodes and is often used in testing or debugging to simulate a \u201ccold cache\u201d state without rebooting.\u00a0<\/p>\n<p>If the threat actor is able to corrupt \/usr\/bin\/su, it effectively remains available for execution until reboot, serving as a reliable backdoor.<\/p>\n<p><strong>Affected Versions:<\/strong><\/p>\n<p>More vulnerability details are still being uncovered and we will update this list as additional information is available. Primarily, Linux Kernel (ESP subsystem) since 2017 and the RxRPC subsystem of the Linux Kernel since 2023 are vulnerable. Additionally, these vendors have confirmed that patches are being prepared:<\/p>\n<ol class=\"wp-block-list\">\n<li>Ubuntu<\/li>\n<li>Red Hat Enterprise Linux<\/li>\n<li>CentOS Stream\u00a0<\/li>\n<li>AlmaLinux<\/li>\n<li>Fedora<\/li>\n<li>openSUSE<\/li>\n<\/ol>\n<h2 id=\"qualys-qid-coverage\" class=\"wp-block-heading\">Qualys QID Coverage<\/h2>\n<p>Qualys has released the following QIDs to address the Dirty Frag chain:<\/p>\n<ol class=\"wp-block-list\">\n<li>QID 387289 \u2013 Linux Kernel Local Privilege Escalation Vulnerability (Dirty Frag) (CVE-2026-43284)<\/li>\n<li>QID 387288 \u2013 Linux Kernel Local Privilege Escalation Vulnerability (Dirty Frag) (CVE-2026-43500)<\/li>\n<li>QID 944291 \u2013 AlmaLinux Security Update for kernel (ALSA-2026:A006)<\/li>\n<li>QID 944290 \u2013 AlmaLinux Security Update for kernel (ALSA-2026:A005)<\/li>\n<li>QID 944287 \u2013 AlmaLinux Security Update for kernel-rt (ALSA-2026:A007)<\/li>\n<\/ol>\n<p>The following QIDs are in the final stages of verification and expected to be released soon:<\/p>\n<ol class=\"wp-block-list\">\n<li>QID 6276440 \u2013 Debian Security Update for linux (CVE-2026-43284)<\/li>\n<li>QID 288685 \u2013 Fedora Security Update for kernel (FEDORA-2026-87dc12705e)<\/li>\n<li>QID 288684 \u2013 Fedora Security Update for kernel (FEDORA-2026-abc00fb4e8)<\/li>\n<li>QID 762499 \u2013 SUSE Enterprise Linux Security Update for the Linux Kernel (SUSE-SU-2026:1778-1)<\/li>\n<li>QID 6276373 \u2013 Debian Security Update for linux (CVE-2026-43500)<\/li>\n<\/ol>\n<p>Qualys customers can also search for this vulnerability by their CVE IDs: CVE-2026-43284 and CVE-2026-43500. Information about additional QIDs pertaining to these CVEs can be found in our\u00a0<a href=\"https:\/\/www.qualys.com\/vulnerability-detection-pipeline\">Vulnerability Detection Pipeline.<\/a><\/p>\n<h2 id=\"remediate-at-scale-with-trurisk-eliminate\" class=\"wp-block-heading\">Remediate at Scale With TruRisk\u00a0Eliminate<\/h2>\n<p><a href=\"https:\/\/www.qualys.com\/apps\/trurisk-eliminate\" target=\"_blank\" rel=\"noreferrer noopener\">TruRisk Eliminate<\/a>\u00a0offers a comprehensive risk reduction solution designed to help security and IT teams proactively address nearly 100% of CISA KEVs and ransomware vulnerabilities.<\/p>\n<p>To address these vulnerabilities, leverage Qualys TruRisk Eliminate to:<\/p>\n<ul class=\"wp-block-list\">\n<li>Patch these vulnerabilities, or<\/li>\n<li>Apply out-of-the-box mitigations until a patch can be deployed<\/li>\n<\/ul>\n<p>Because these vulnerabilities are Qualys patchable, you should immediately deploy the patches and fix them. Relevant patches were added to the Qualys patch catalog and are ready to be deployed using the Qualys agent.<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Dirty Frag is a Linux local privilege escalation (LPE) chain published on May 7, 2026. It combines two<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[19],"class_list":["post-2378","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-threat-intelligence","tag-news"],"_links":{"self":[{"href":"https:\/\/advisoryloom.com\/almain\/wp-json\/wp\/v2\/posts\/2378","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/advisoryloom.com\/almain\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/advisoryloom.com\/almain\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/advisoryloom.com\/almain\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/advisoryloom.com\/almain\/wp-json\/wp\/v2\/comments?post=2378"}],"version-history":[{"count":0,"href":"https:\/\/advisoryloom.com\/almain\/wp-json\/wp\/v2\/posts\/2378\/revisions"}],"wp:attachment":[{"href":"https:\/\/advisoryloom.com\/almain\/wp-json\/wp\/v2\/media?parent=2378"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/advisoryloom.com\/almain\/wp-json\/wp\/v2\/categories?post=2378"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/advisoryloom.com\/almain\/wp-json\/wp\/v2\/tags?post=2378"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}