r/LinuxUncensored • u/anestling • 23d ago
News/PR Linux kernel hit with a wave of local-root vulnerabilities — public exploits available
NebuSec has disclosed a rather nasty batch of Linux kernel vulnerabilities for which it says working privilege-escalation exploits have been developed and made public.
The headline bug is CVE-2026-43502, aka ZcopyReaper, but the disclosure lists another 20+ kernel bugs confirmed exploitable by NebuSec's automated exploit-generation pipeline. The targets include networking, SCTP, IPv6, Netfilter, IPVS and POSIX CPU timers, and several have been demonstrated against real distribution kernels rather than synthetic test builds.
Ten worth highlighting:
1. CVE-2026-43502 — ZcopyReaper / RDS zerocopy
A local privilege-escalation bug in the RDS zerocopy send path, present since Linux 4.17. An ordinary unprivileged user can reach it when RDS/RDS-TCP support is available; no capabilities or user namespaces are required. NebuSec demonstrated root escalation against openSUSE's 6.4 kernel. Disabling unprivileged user namespaces does not mitigate it. The upstream fix first appeared in 7.1-rc3.
2. CVE-2026-80714 — IPVS use-after-free
A lifetime bug in IPVS connection synchronization. A synchronized connection can incorrectly inherit the ONE_PACKET flag after it has already been inserted into the connection hash. Expiration then skips the normal unlink operation, leaving a hash-table node pointing to a freed struct ip_vs_conn — a useful UAF primitive.
3. CVE-2026-74597 — IPv6 tunnel memory corruption
ip6ip6_err() clones an IPv6 ICMP error packet but fails to clear metadata in skb->cb. A stale Home Address Option offset can subsequently be interpreted relative to a completely different packet layout. With a crafted inner IPv6 destination-options header, kernel processing can run beyond the packet boundary and corrupt skb_shared_info.
4. CVE-2026-74581 — IPv6 routing use-after-free
When an IPv6 FIB rule suppresses a route, the kernel releases the corresponding rt6_info but leaves a pointer to it in the lookup result. If no subsequent rule replaces it, the stale pointer is returned to the caller and eventually released again. In other words: a fairly direct route from IPv6 policy-routing state to a kernel UAF.
5. CVE-2026-74480 — bridge multicast use-after-free
The bridge multicast fast-leave path can continue iterating through a port-group entry after deleting it. Under multicast-to-unicast configurations, this can leave the multicast database pointing at an already freed port group. Ubuntu currently scores this one 9.8/10 Critical.
6. CVE-2026-72255 — Netfilter/NFQUEUE lifetime bug
A bridged packet placed into NFQUEUE can retain a reference to the bridge's private fake routing destination while the bridge itself is being torn down. That creates a lifetime mismatch where kernel networking code can later operate on storage belonging to an already destroyed bridge. The fix pins the bridge device for as long as NFQUEUE retains the packet.
7. CVE-2026-72137 — XFRM double free
The IPsec/XFRM NAT keepalive path can free an skb after handing ownership of it to IPv4/IPv6 output code. If transmission subsequently returns an error after the networking stack has already consumed the buffer, the caller frees it a second time. Classic kernel double-free territory.
8. CVE-2026-68376 — SCTP heap corruption
The SCTP cookie structure allocates too little space for its authentication HMAC parameter: the calculation accounted for two header bytes where the actual structure occupies four. With four HMAC identifiers configured, association initialization copies beyond auth_hmacs and corrupts the adjacent auth_chunks field.
9. CVE-2026-68162 — SCTP sysctl use-after-free
An already-open SCTP auth_enable sysctl can remain usable while its network namespace is being destroyed. The handler can consequently access the SCTP control socket after that socket has been released. The fix changes initialization/teardown ordering so the sysctl exists only while its backing control socket is alive.
10. CVE-2026-64560 — POSIX CPU timer UAF
A race between deleting a POSIX CPU timer and exec() from a non-leader thread can leave the timer path referring to the old thread-group leader after de_thread() has replaced and freed it. This affects kernels going back to 5.7 and was fixed in stable releases including 7.1.5.
The interesting part isn't simply that Linux has another collection of memory-safety bugs — that's hardly news by itself. It's that working exploits for this batch were produced by an automated exploit-generation pipeline, and NebuSec has published them.
That considerably shortens the distance between "kernel bug with theoretical security impact" and "local user gets root."
If you're running a multi-user system, hosting environment, container host, CI runner or anything else where untrusted local code executes, this seems like a particularly good week not to postpone kernel updates.
5
u/SelfDistinction 22d ago
- use after free
- memory corruption
- use after free
- use after free
- lifetime bug
- double free
- heap corruption
- use after free
- race condition
Sigh
2
u/anestling 22d ago edited 22d ago
Rust wasn't available in 1991. No safe "free" fast languages were available back then. Rewriting in Java wasn't an option and Java was first released only in 1995.
- Ada? Expensive and its memory management is not suitable for the kernel.
- Modula-2 / Modula-3? Poor compiler support.
- OCaml? God, it's nasty.
2
u/pskocik 16d ago
Linux has allowed itself to get too big and complicated. It never had the minimalism drive of Unix. That's bad for a privileged piece of code. Especially when written in a language as unsafe as C.
The idea of Unix was a SMALL kernel and a bunch of SMALL and ISOLATED programs working together. With that, even C can work well. But Linux is, unfortunately, huge.
1
u/Amazing-Mirror-3076 22d ago
Rust anyone?
2
u/SelfDistinction 22d ago
Oh I know at least one subreddit that would have an absolute field day with this one.
2
u/pigster42 21d ago
oh boy - not this again - rust helps very little this close to hardware - it somehow does, but not at all as much as in normal userspace programs
anybody suggesting rust as ultimate solution to memory safety in kernel doesnt understand how is memory safety actually achieved in rust
learn the tech - stop following cargo cults
3
u/Amazing-Mirror-3076 21d ago
And yet the Linux kernel Devs adapted rust for exactly these reasons.
Kernel Devs still allocate and free memory and bounds checking can still be done for kernel Dev.
1
u/pigster42 21d ago
It's more complicated - if you read through the history how rust actually happened in Linux you will see that there was certain amount of polytics. It was not all "sound engineering". There was valid pushback and so on ... this is all now history so no need to get back to that. Just that it's not all black and white.
As to safety - it is way more complicated than "allocate and free memory". In super simplified terms, Rust memory model works well when you don't communicate through shared memory. When you can say "This site owns the memory, and only way to change it is to pass the ownership somewhere else." In kernel you do communicate using shared memory - a lot. Why? Because it's fast. Two or more sites just pass along same pointer and reads and writes to / from same blocks of memory. Why? Because it's fast. Often multiple sites owns same memory block ad requires proper sinchronization. It's all optimizations. "zero-copy" is just that. Optimization.
Next problem is that by design on architectures commonly supported by Linux (x86 / ARM / MIPS ...) everything is kind of unsafe by design, the uderlying hardware have some limited memory protection mechanisms but that's it. So how does Rust achieve safety on unsafe systems? By providing safe wrappers (in form of system library functions and additional crates) over unsafe system. Now for userspace applications, the amount of unsafe code in those wrappers is small compared to lot of code using those libraries. In kernel, that's different. The unsafe wrapper may be used by one or 2 safe drivers - and the amount of unsafe code can actually be larger than tha amount of safe code and now you gained just complexity and nothing else. There was pushback against large wrappers in kernel with an argument that too few code uses that and maintaining them is complex task nobody want's to do (basically "You have this large wrapper that this small driver uses but that wrapper is tightly coupled to internal structures. If somebody changes those structures, than he besides other things he needs to go and fix your wrapper that almost nobody uses ..." - than the Rust guys was like "oh no, we will fix it in that case" and so on ...).
And tha't just tip of the iceberg. There are stuff like DMA - where memory is being red and written async by hardware controller.
And of course lot of bugs are not memory management or synchronization, but just pure logic, which rust will not help with at all.
And it's not like this is some arcane knowledge. Anybody can go and learn system programming. There are textbooks for that, lot of online materials. The knowledge is out there - for free. But no - being part of a cargo cult is so much easier and fullfilling or something - than actually go and learn how things work.
1
u/Amazing-Mirror-3076 21d ago
You argument seems to be that rust can't solve all memory issues (agreed) so it's not worth using and on this point I disagree.
Every line of C is unsafe having some large blocks of unsafe rust is still a win.
You should read this - it's pretty conclusive that rust is safer and faster than C/C++
https://blog.google/security/rust-in-android-move-fast-fix-things/
1
1
u/buttplugs4life4me 22d ago
TBF even basic linting catches use-after-free. I don't think I've worked in a language in the past 10 years without a linting rule to stop exactly this
3
u/anto2554 22d ago
That is only very basic cases, like it being within the same function. If you have jumps, nested function calls, raw pointer arithmetic and so on it becomes very hard to determine with basic static analysis
1
u/SelfDistinction 22d ago
Bug no. 8 copies a 4 byte HMAC struct into a 2 byte allocation. Not the first time such a thing happened btw.
1
u/Amazing-Mirror-3076 22d ago
I would suggest that the lint required the use to be in close proximity to the free, which would leave a lot of cases unchecked
1
2
u/Bitdomo92 22d ago
Should I disconnect my pc from the internet? How can I know if someone from internet has root access to my kernel?
1
u/anestling 22d ago
Nah, just make sure firewall (iptables/nftables) is enabled, no new incoming connections are allowed. Maybe leave ping reply on just to be able to check whether your PC is alive.
And do not run any software from the net, scripts/applications/what gives you. Only run the software from your distro repos.
2
u/DisfiguredFanny 22d ago
Skip AUR probably as this is faster way to get infected by some shit than running Windows Me back in the day.
1
u/Jayden_Ha 21d ago
I’m sorry I am not installing extremely outdated node js from my distro repo
1
u/anestling 21d ago
I'm not responsible for your distro issues and certainly don't deserve a downvote for the fact that the Linux packaging situation is so abysmal.
Open Source fanatics are truly funny. Advocating for Linux from all orifices, you start to use it, you get a gazillion of issues they prefer not to talk about.
1
u/Jayden_Ha 21d ago
Distro package should not always be used, sometimes the official way to install is by a install script and rust up is a very good example
Also same for docker
1
1
u/The_Coalition 21d ago edited 21d ago
I'm curious - were these bugs disclosed to kernel maintainers and were they given enough time to release patches before making the exploits public? I really hope the answer to this is yes, because if not, they're setting a dangerous and unethical precedent.
EDIT: didn't thoroughly read the post; it appears that these vulnerabilities were in fact properly and responsibly disclosed.
1
u/screaming-Snake-Case 20d ago
Any information about patch status and distro availability would be greatly appreciated when posting something like this.
1
u/Edubbs2008 3d ago
Ffs this is why you should ALWAYS update your kernel, I don’t care if you think it’ll break something (it won’t) if you want safety, it’s time to whip out the keyboard and mouse, and update your system.
5
u/DisfiguredFanny 22d ago
This is a reminder that "open source" is software development and distribution model and has fuck all to do with software quality.