Skip to main content
Mallory
High3 public exploits

DirtyDecrypt / DirtyCBC local privilege escalation in Linux kernel RxRPC RXGK

CVE-2026-31635 is a Linux kernel vulnerability in the RxRPC RXGK authentication path, publicly referred to as DirtyDecrypt or DirtyCBC. The upstream fix states that rxgk_verify_response() decodes auth_len from an incoming RESPONSE packet and is intended to verify that the authenticator length fits within the remaining packet payload. That validation was inverted, so oversized RESPONSE authenticators were accepted and passed to rxgk_decrypt_skb(). The resulting impossible length can propagate into skb_to_sgvec()/__skb_to_sgvec(), triggering a kernel BUG_ON(len) and causing a crash. Supporting reporting also associates this issue with a missing copy-on-write guard in rxgk_decrypt_skb(), enabling writes into shared page-cache-backed memory during decryption and turning the bug into a local privilege-escalation primitive on affected systems. The issue affects kernels with RXGK support enabled, and reporting indicates it was introduced in kernel 6.16 and affects versions through stable releases before 6.18.23.

Share:
Stay ahead

Get ahead of vulnerabilities like this

Mallory continuously monitors global threat intelligence and correlates it with your attack surface — so you know if you’re exposed before adversaries strike.

ANALYST BRIEF

Impact, mitigation & remediation

What it means. What to do now. For analysts and engineers who need to decide and keep moving.

Impact

What an attacker gets — and what they’ve been doing with it.

Successful exploitation can yield local privilege escalation to root on affected systems. Public reporting states attackers can corrupt shared page-cache memory or privileged process memory and target sensitive files or SUID-root binaries, including examples such as /etc/shadow, /etc/sudoers, /usr/bin/su, /usr/bin/passwd, and similar privileged executables. The upstream bug description also confirms a denial-of-service impact because malformed packets can reach __skb_to_sgvec() and hit BUG_ON(len), crashing the kernel. In containerized environments, compromise of a vulnerable worker node could enable container escape and exposure of host-level secrets and runtime assets.

Mitigation

If you can’t patch tonight, do this now.

If immediate patching is not possible, reduce exposure by disabling RXGK/RxRPC support where operationally feasible. Practical mitigations reported include blacklisting the rxrpc module to prevent loading and unloading it if already present; more broadly, verify whether CONFIG_RXGK is enabled in the running kernel and disable or avoid kernels that include it until patched. These workarounds may break AFS/RxRPC-dependent functionality.

Remediation

Patch, then assume compromise.

Apply a kernel update containing the upstream fix for CVE-2026-31635 and reboot into the patched kernel. The fix rejects authenticator lengths that exceed the remaining packet payload in rxgk_verify_response(). Reporting indicates the upstream patch was merged on 2026-04-25; affected users should install vendor backports or stable releases that include that correction. Priority should be given to distributions or custom kernels built with CONFIG_RXGK enabled.
PUBLIC EXPLOITS

Exploits

1 valid exploit after Mallory filtered fakes, detection scripts, and README-only repos (2 hidden).

VALID 1 / 3 TOTALView all
CVE-2026-31635MaturityPoCVerified exploit

This repository is a small standalone local privilege escalation exploit consisting of one C source file and a minimal README. The main file, CVE-2026-31635.c, claims to target CVE-2026-31635 ('DirtyDecrypt'), described as a Linux kernel flaw involving a missing COW guard in rxgk_decrypt_skb(). The exploit is not part of a larger framework. Structure and behavior: the program starts in main(), checks that it is not already running as root, prints the kernel version using 'uname -r', and warns that the target system must support CONFIG_RXGK=y. It then creates new user and network namespaces using clone(CLONE_NEWUSER|CLONE_NEWNET). Inside the child namespace it writes to /proc/self/uid_map and /proc/self/setgroups, then sets up an AF_RXRPC socket and adds an RXGK key with description 'rxgk:127.0.0.1'. The socket is bound to loopback (127.0.0.1) using a sockaddr_rxrpc structure. Exploit capability: after setup, it loads /etc/passwd into page cache, reads its current contents, checks whether a 'dirtyroot' account already exists, and then attempts to append the hardcoded payload 'dirtyroot::0:0:root:/root:/bin/bash\n' one byte at a time by repeatedly calling trigger_decrypt(), which sends crafted data through sendmsg() on the AF_RXRPC socket. If verification succeeds, it reports success and attempts privilege use in two ways: first by invoking 'su dirtyroot -c 'whoami && exec /bin/bash'', then by directly trying setuid(0)/setgid(0) and execing interactive shells from common paths. Overall purpose: this is an operational local kernel LPE proof-of-concept with a built-in post-exploitation payload. It does not merely detect vulnerability; it attempts actual privilege escalation by modifying /etc/passwd and obtaining an interactive root shell. There are no external C2 endpoints or remote network targets beyond local loopback and kernel interfaces used to trigger the vulnerability.

Lutfifakee-ProjectDisclosed May 20, 2026cmarkdownlocalnetwork
EXPOSURE SURFACE

Affected products & vendors

Products and vendors Mallory has correlated with this vulnerability. Open in Mallory to drill down to specific CPE configurations and version ranges.

VendorProductType
LinuxLinux Kernelapplication

Vendor-confirmed product mapping. Mallory continuously reconciles against your asset inventory in the product.

ACTIVITY FEED

Recent activity

43 sources tracked across advisories, community write-ups, and news. Mallory keeps watching after this page renders.

43 SOURCESView all
The operational view lives in Mallory

See the full picture, correlated to your attack surface.

This page covers what’s public. Mallory adds the parts that aren’t — which of your assets are affected, which threat actors are using it right now, which detections to deploy, and what to do next.
Exposure mapping

Query your assets running an affected version, and investigate the blast radius.

Threat actor evidence

Every observed campaign linking this CVE to a named adversary.

Associated malware

Malware families riding this exploit, with evidence and IOCs.

Detection signatures

YARA, Sigma, Snort, and vendor rules — auto-deployed to your SIEM.

Vendor-by-vendor mapping

Cross-references every affected SKU, including bundled OEM variants.

Social activity39

Community discussion across Reddit, Mastodon, and other social sources.