CVE-2026-23111 is a local privilege-escalation vulnerability in the Linux kernel netfilter nf_tables subsystem caused by an inverted activity check in nft_map_catchall_activate(). The bug affects the abort path for failed nf_tables transactions, where catchall map elements that were previously deactivated should be reactivated. Due to the inverted condition, inactive catchall elements are skipped and active ones are processed, which is the opposite of the intended logic and inconsistent with nft_mapelem_activate(). When a DELSET operation aborts, nft_setelem_data_activate() is not invoked for the affected catchall element. For NFT_GOTO verdict elements, this prevents nft_data_hold() from restoring the referenced chain's use count. Repeated abort cycles can therefore decrement chain->use until it reaches zero, after which DELCHAIN can free a chain that is still referenced by catchall verdict elements. The resulting dangling reference creates a kernel use-after-free condition in security-sensitive packet-filtering code.
Mallory correlates every CVE against your assets, your vendors, and active adversary campaigns. Know which vulnerabilities matter for you, not just which ones are loud.
What it means. What to do now. Patch path, mitigations, and the assume-compromise checklist.
What an attacker gets, and what they’ve been doing with it.
If you can’t patch tonight, do this now.
Patch, then assume compromise.
2 valid exploits after Mallory filtered fakes, detection scripts, and README-only repos (6 hidden).
This repository is a real local privilege escalation PoC for CVE-2026-23111 in Linux nf_tables. It contains one substantive code file, exp.c, plus README and detailed exploitation notes. The exploit is not part of a larger framework. Repository structure: README.md identifies the vulnerability, prerequisites, and references; exp.c implements the exploit; notes/notes.md documents compilation, environment setup, debugging, and the exploitation strategy in depth. The single entry point is exp.c::main(). Exploit purpose and flow: the code targets an inverted logical check in nft_map_catchall_activate() that causes nft_chain->use reference counts not to be restored when a DELSET transaction aborts. The exploit abuses this to create a use-after-free in an nft_chain object reachable through nftables rule references. The implementation is organized into three phases invoked from main(): phase1 leaks a kernel text pointer to derive kernel base/KASLR bypass, phase2 leaks a kernel heap address, and phase3 builds a kernel ROP chain to obtain code execution and elevate privileges. Capabilities: the exploit opens a NETLINK_NETFILTER socket via libmnl/libnftnl and programmatically creates/manipulates nftables tables, chains, rules, and sets/maps. It performs transactional netlink operations to trigger the vulnerable DELSET abort path, uses object spraying (including seq_operations and System V message queues per the notes and visible structures/constants) to reclaim freed memory, leaks kernel pointers from reused allocations, computes kernel base and heap addresses, and finally triggers a ROP chain. On success it returns to userland and executes /bin/sh as root. Notable implementation details visible in exp.c: hardcoded nftables object names for multiple phases; constants for large sprays (NUM_SEQOPS 512, NUM_MSQIDS 4096); System V message queue structures for heap shaping and fake object/ROP placement; save_state()/get_shell() helpers for returning from kernel context; repeated system("nft flush ruleset") cleanup between phases; and a final shell spawn through system("/bin/sh"). The notes indicate the ROP chain is kernel-build-specific, so this is an operational PoC rather than a broadly portable weaponized exploit. There are no external C2 or remote network endpoints. The only meaningful endpoints are local kernel interfaces and shell commands: NETLINK_NETFILTER communication with nf_tables, nft command invocations, and local file paths such as /bin/sh and /etc/shadow referenced as post-exploitation artifacts.
Repository contains a local Linux kernel exploit and a companion checker for CVE-2026-23111, an nf_tables use-after-free in nft_map_catchall_activate(). Structure is small and focused: one Python checker, two C exploit implementations, a Makefile, and documentation. The checker script is a detection/triage utility that parses kernel versions, checks nft availability, inspects module/config/symbol state, and scores exploitation risk; it is not the exploit itself. The main exploit logic is in exploit.c and exploit_full.c. exploit.c is a PoC-style but still offensive local exploit that uses libmnl/libnftnl to talk to the kernel over NETLINK_NETFILTER and manipulate nftables objects. It creates tables/chains/sets, triggers the UAF via transaction abort behavior around a catchall element, then performs slab reclamation and information disclosure. The documented phases are: (1) trigger UAF on struct nft_chain, (2) reclaim freed chain->name with seq_operations objects by opening /proc/self/stat to leak kernel pointers and defeat KASLR, and (3) reclaim a larger freed allocation with nft_rule objects to leak heap/direct-map addresses. The code summary indicates it resolves useful kernel symbols and gadgets where possible, but stops short of a fully generic privilege-escalation chain. exploit_full.c is the full local privilege escalation implementation. It is explicitly tuned for Ubuntu 24.04 kernel 6.8.0-117-generic and includes hardcoded structure offsets plus logic to read /proc/kallsyms and scan /proc/kcore for gadgets. It reuses the same UAF and leak primitives, then sprays fake nftables-related structures, overwrites pointers used by nftables rule evaluation, and redirects execution into a kernel ROP chain. The intended end state is root privileges via commit_creds(&init_cred), followed by namespace switching and return to user mode. This makes the repository more than a simple detector or crash PoC: it contains a practical LPE chain, though target-specific and dependent on kernel layout/gadget availability. No external C2 or remote network infrastructure is present. The attack vector is purely local. The only meaningful interfaces/endpoints are local kernel/userland resources: NETLINK_NETFILTER, /proc/modules, /proc/config.gz, /boot/config-*, /proc/kallsyms, /proc/kcore, /proc/self/stat, and mitigation path /etc/modprobe.d/nf_tables.conf. Overall, this is a genuine local privilege escalation exploit repository with both a vulnerability checker and a more complete Ubuntu-targeted exploitation path.
Products and vendors Mallory has correlated with this vulnerability. Open in Mallory to drill down to specific CPE configurations and version ranges.
Vendor-confirmed product mapping. Mallory continuously reconciles this list against your asset inventory.
98 sources tracked across advisories, community write-ups, and news. New activity surfaces here as Mallory finds it.
A Linux kernel nf_tables use-after-free local privilege escalation vulnerability that allows an unprivileged local user to gain root privileges and potentially escape containers.
A Linux kernel nf_tables local privilege escalation vulnerability caused by a logic error that leads to a use-after-free, allowing an unprivileged local user to gain root privileges.
A Linux kernel nftables local privilege escalation vulnerability caused by an inverted conditional in nft_map_catchall_activate(), leading to a use-after-free that allows an unprivileged user to gain root and escape containers.
A Linux kernel local privilege escalation vulnerability in the nf_tables subsystem caused by a logic error during transaction abort handling that leads to a use-after-free condition. It can allow unprivileged local users to gain root privileges and potentially escape containers on affected systems.
Query your assets running an affected version, and investigate the blast radius.
Every observed campaign linking this CVE to a named adversary.
Malware families riding this exploit, with evidence and IOCs.
YARA, Sigma, Snort, and vendor rules, auto-deployed to your SIEM.
Cross-references every affected SKU, including bundled OEM variants.
Community discussion across Reddit, Mastodon, and other social sources.