{"id":12707,"date":"2026-05-08T10:03:41","date_gmt":"2026-05-08T10:03:41","guid":{"rendered":"https:\/\/serisec.com\/index.php\/2026\/05\/08\/dirty-frag-linux-vulnerability-let-attackers-gain-root-privileges-poc-released\/"},"modified":"2026-05-08T10:03:41","modified_gmt":"2026-05-08T10:03:41","slug":"dirty-frag-linux-vulnerability-let-attackers-gain-root-privileges-poc-released","status":"publish","type":"post","link":"https:\/\/serisec.com\/index.php\/2026\/05\/08\/dirty-frag-linux-vulnerability-let-attackers-gain-root-privileges-poc-released\/","title":{"rendered":"Dirty Frag Linux Vulnerability Let Attackers Gain Root Privileges \u2013 PoC Released"},"content":{"rendered":"<p>    Dirty Frag Linux Vulnerability Let Attackers Gain Root Privileges \u2013 PoC Released<br \/>\n \t<BR><br \/>\n<BR><\/BR><br \/>\n    <!-- no image --><br \/>\n \t<BR><br \/>\n<BR><\/BR><\/p>\n<div>\n<p>Dirty Frag\u00a0is a newly disclosed, CVE-pending Linux kernel local privilege escalation (LPE) vulnerability that chains two separate page-cache write flaws, the xfrm-ESP Page-Cache Write and the RxRPC Page-Cache Write, to achieve root access on virtually all major Linux distributions, with a public exploit already in the wild following an embargo break on May 7, 2026.<\/p>\n<p>Dirty Frag belongs to the same vulnerability class as <a href=\"https:\/\/cybersecuritynews.com\/8-year-old-linux-kernel-bug\/\" target=\"_blank\" rel=\"noreferrer noopener\">Dirty Pipe<\/a> and <a href=\"https:\/\/cybersecuritynews.com\/linux-kernel-0-day-copy-fail\/\" target=\"_blank\" rel=\"noreferrer noopener\">Copy Fail (CVE-2026-31431)<\/a>, but targets the\u00a0<code>frag<\/code>\u00a0member of the kernel\u2019s\u00a0<code>struct sk_buff<\/code>\u00a0rather than\u00a0<code>struct pipe_buffer<\/code>.<\/p>\n<p>Discovered and reported by security researcher Hyunwoo Kim (@v4bel), the vulnerability exploits the zero-copy send path where\u00a0splice()\u00a0plants a reference to a read-only page cache page, such as\u00a0<code>\/etc\/passwd<\/code>\u00a0or\u00a0<code>\/usr\/bin\/su<\/code>\u00a0\u2014 into the\u00a0<code>frag<\/code>\u00a0slot of a sender-side\u00a0<code>skb<\/code>.<\/p>\n<h2 class=\"wp-block-heading\" id=\"h-dirty-frag-linux-vulnerability\"><strong>Dirty Frag Linux Vulnerability<\/strong><\/h2>\n<p>The receiver-side kernel code then performs in-place cryptographic operations directly on top of that frag, permanently modifying the page cache in RAM.<\/p>\n<p>Every subsequent read to that file sees the corrupted version, even though the unprivileged attacker was granted only read access.<\/p>\n<p>Unlike race-condition exploits, Dirty Frag is a\u00a0deterministic logic bug\u00a0that requires no timing window, does not panic the kernel on failure, and carries an extremely high success rate.<\/p>\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjvNNkEm4n2veZNOnPpqWrX9M8GjDETaFwa7dObbN-Q4_3o4y5fJBSi5y82MGk5J8smySRKPoCCGQKQjmPomBbPIKsWpMbu1C5gWIvsMGhW4hvWJxEbHdRaFQU0VfKU-454z_jY7TaKPXy6rpLjYY5IMxIg9v0bcsP1gzOUfHVqtjONzfNrlJ50MNuZooB7\/s16000\/demo.gif?ssl=1\" alt=\"\"><figcaption class=\"wp-element-caption\">Dirty Frag Linux Exploit <\/figcaption><\/figure>\n<p>xfrm-ESP Page-Cache Write\u00a0resides in\u00a0<code>esp_input()<\/code>, the IPsec ESP receive path. When an\u00a0<code>skb<\/code>\u00a0is non-linear but lacks a frag list, the code skips the mandatory\u00a0<code>skb_cow_data()<\/code>\u00a0buffer allocation step and jumps directly to in-place AEAD decryption on the attacker-planted frag.<\/p>\n<p>Using the\u00a0<code>XFRMA_REPLAY_ESN_VAL<\/code>\u00a0netlink attribute, the attacker can control both the\u00a0<em>location<\/em>\u00a0(file offset) and the\u00a0<em>value<\/em>\u00a0(4 bytes) of each store operation, enabling them to overwrite arbitrary bytes of\u00a0<code>\/usr\/bin\/su<\/code>\u2018s page cache with a static root-shell ELF 192 bytes written across 48 chunks of 4 bytes each.<\/p>\n<p>Authentication failure (<code>-EBADMSG<\/code>) is returned afterward, but the page cache write has already persisted. This variant requires the ability to create a user namespace (<code>unshare(CLONE_NEWUSER)<\/code>).<\/p>\n<p>RxRPC Page-Cache Write\u00a0resides in\u00a0<code>rxkad_verify_packet_1()<\/code>, which performs an in-place single-block\u00a0<code>pcbc(fcrypt)<\/code>\u00a0decryption on the first 8 bytes of the RxRPC payload.<\/p>\n<p>Because\u00a0<code>skb_to_sgvec()<\/code>\u00a0converts the splice-pinned page cache page directly into the SGL, the attacker-controlled page becomes both src and dst.<\/p>\n<p>The 8-byte store value is\u00a0<code>fcrypt_decrypt(C, K)<\/code>, where\u00a0<code>K<\/code>\u00a0is a freely specifiable session key registered via\u00a0<code>add_key(\"rxrpc\", ...)<\/code>\u00a0\u2014 an operation requiring\u00a0no privileges at all.<\/p>\n<p>The <a href=\"https:\/\/cybersecuritynews.com\/gotrim-actively-brute-forces-wordpress\/\" target=\"_blank\" rel=\"noreferrer noopener\">attacker brute-forces<\/a>\u00a0<code>K<\/code>\u00a0in user space until the desired plaintext (e.g., turning\u00a0<code>\/etc\/passwd<\/code>\u00a0line 1\u2019s password field into an empty string) is produced, enabling PAM\u00a0<code>nullok<\/code>\u00a0authentication bypass.<\/p>\n<p>Neither vulnerability alone covers all Linux environments:<a rel=\"noreferrer noopener\" target=\"_blank\" href=\"https:\/\/github.com\/V4bel\/dirtyfrag\"><\/a><\/p>\n<ul class=\"wp-block-list\">\n<li>\n<strong>ESP variant<\/strong>: Available on most distros but requires user namespace creation \u2014 blocked on some Ubuntu configurations via AppArmor policy.<\/li>\n<li>\n<strong>RxRPC variant<\/strong>: No namespace privilege required, but\u00a0<code>rxrpc.ko<\/code>\u00a0is absent on most distros like RHEL 10.1 by default \u2014 yet ships and auto-loads on Ubuntu.<\/li>\n<\/ul>\n<p>Chaining the two exploits closes both blind spots, achieving root on essentially every major distribution. The exploit first attempts the ESP path; if\u00a0<code>unshare(CLONE_NEWUSER)<\/code>\u00a0fails, it automatically falls back to the RxRPC path targeting\u00a0<code>\/etc\/passwd<\/code>.<\/p>\n<h2 class=\"wp-block-heading\" id=\"affected-distributions-and-kernel-versions\"><strong>Affected Distributions and Kernel Versions<\/strong><\/h2>\n<p>The ESP vulnerability has been present since commit\u00a0<code>cac2661c53f3<\/code>\u00a0(January 2017), and the RxRPC flaw since\u00a0<code>2dc334f1a63a<\/code>\u00a0(June 2023), giving the chain an effective window of approximately 9 years. Confirmed affected distributions include:<a rel=\"noreferrer noopener\" target=\"_blank\" href=\"https:\/\/github.com\/V4bel\/dirtyfrag\"><\/a><\/p>\n<ul class=\"wp-block-list\">\n<li>Ubuntu 24.04.4 (kernel 6.17.0-23-generic)<\/li>\n<li>RHEL 10.1 (kernel 6.12.0-124.49.1.el10_1.x86_64)<\/li>\n<li>openSUSE Tumbleweed (kernel 7.0.2-1-default)<\/li>\n<li>CentOS Stream 10 (kernel 6.12.0-224.el10.x86_64)<\/li>\n<li>AlmaLinux 10 (kernel 6.12.0-124.52.3.el10_1.x86_64)<\/li>\n<li>Fedora 44 (kernel 6.19.14-300.fc44.x86_64)<\/li>\n<\/ul>\n<p>The ESP variant patch using the\u00a0<code>SKBFL_SHARED_FRAG<\/code>\u00a0flag to ensure splice-pinned pages always route through\u00a0<code>skb_cow_data()<\/code>\u00a0\u2014 was merged into the netdev tree on May 7, 2026.<\/p>\n<p>The final merged patch was based on a shared-frag approach submitted by Kuan-Ting Chen. The RxRPC patch, which adds\u00a0<code>|| skb-&gt;data_len<\/code>\u00a0to the existing\u00a0<code>skb_cloned()<\/code>\u00a0gate to force isolation of non-linear skbs, remains unmerged upstream.<\/p>\n<p>No CVE identifiers have been assigned for either flaw as of publication, due to the premature embargo break by an unrelated third party on May 7, 2026\u00a0.<\/p>\n<h2 class=\"wp-block-heading\" id=\"immediate-mitigation\"><strong>Immediate Mitigation<\/strong><\/h2>\n<p>Since distribution-level patches are not yet available, administrators should immediately disable the affected kernel modules using the following command:<a rel=\"noreferrer noopener\" target=\"_blank\" href=\"https:\/\/www.openwall.com\/lists\/oss-security\/2026\/05\/07\/8\"><\/a><\/p>\n<pre class=\"wp-block-preformatted\">bash<code>sh -c \"printf 'install esp4 \/bin\/falseninstall esp6 \/bin\/falseninstall rxrpc \/bin\/falsen' &gt; \/etc\/modprobe.d\/dirtyfrag.conf; rmmod esp4 esp6 rxrpc 2&gt;\/dev\/null; true\"<\/code><\/pre>\n<p>This blacklists and unloads the\u00a0<code>esp4<\/code>,\u00a0<code>esp6<\/code>, and\u00a0<code>rxrpc<\/code>\u00a0modules, disrupting IPsec and RxRPC functionality as a trade-off.<\/p>\n<p>Systems that rely on IPsec VPN tunnels should weigh operational impact carefully before applying the workaround and prioritize applying distribution-backported kernel patches once available.<\/p>\n<p>The complete technical write-up and PoC exploit code are available at the\u00a0<a href=\"https:\/\/github.com\/V4bel\/dirtyfrag\/blob\/master\/README.md\" target=\"_blank\" rel=\"noreferrer noopener\">researcher\u2019s GitHub repository<\/a>.<\/p>\n<p class=\"has-text-align-center has-background\" style=\"background:linear-gradient(180deg,rgb(238,238,238) 92%,rgb(169,184,195) 100%)\"><strong>Cybercriminals now enter through your suppliers instead of your front door \u2013 <a href=\"https:\/\/www.manageengine.com\/products\/desktop-central\/webinars\/uk-cybersecurity-essentials-2026.html?utm_source=CSN&amp;utm_medium=TPS-mailer&amp;utm_campaign=UKCSW\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Free Webinar<\/a><\/strong><\/p>\n<p>The post <a href=\"https:\/\/cybersecuritynews.com\/dirty-frag-linux-vulnerability\/\">Dirty Frag Linux Vulnerability Let Attackers Gain Root Privileges \u2013 PoC Released<\/a> appeared first on <a href=\"https:\/\/cybersecuritynews.com\/\">Cyber Security News<\/a>.<\/p>\n<\/div>\n<p> \t<BR><br \/>\n <BR><\/BR><br \/>\n    Guru Baran<br \/>\n \t<BR><br \/>\n<BR><\/BR><br \/>\n<a href=\"https:\/\/cybersecuritynews.com\/dirty-frag-linux-vulnerability\/\">Go to cyber-security-news<\/a><br \/>\n \t<BR><br \/>\n <BR><\/BR><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dirty Frag Linux Vulnerability Let Attackers Gain Root Privileges \u2013 PoC Released Dirty Frag\u00a0is a newly disclosed, CVE-pending Linux kernel local privilege escalation (LPE) vulnerability that chains two separate page-cache write flaws, the xfrm-ESP Page-Cache Write and the RxRPC Page-Cache Write, to achieve root access on virtually all major Linux distributions, with a public exploit [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[129,63,131,648],"tags":[130],"class_list":["post-12707","post","type-post","status-publish","format-standard","hentry","category-cyber-security","category-cyber-security-news","category-vulnerability","category-vulnerability-news","tag-cyber-security-news"],"_links":{"self":[{"href":"https:\/\/serisec.com\/index.php\/wp-json\/wp\/v2\/posts\/12707"}],"collection":[{"href":"https:\/\/serisec.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/serisec.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/serisec.com\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/serisec.com\/index.php\/wp-json\/wp\/v2\/comments?post=12707"}],"version-history":[{"count":0,"href":"https:\/\/serisec.com\/index.php\/wp-json\/wp\/v2\/posts\/12707\/revisions"}],"wp:attachment":[{"href":"https:\/\/serisec.com\/index.php\/wp-json\/wp\/v2\/media?parent=12707"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/serisec.com\/index.php\/wp-json\/wp\/v2\/categories?post=12707"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/serisec.com\/index.php\/wp-json\/wp\/v2\/tags?post=12707"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}