TRENDING
Two earthworms lying together on wet brown leaf litter, photographed close up
October 28, 2026
Tailscale Merged Fixes for Most of the 11 “Tailworm” Findings Before Shipping a Release, and the Forwarding Switch It Recommends Already Exists in the Shipped Client
Unpopped corn kernels mixed with popped popcorn on a white surface
October 28, 2026
How to Stop Decompression Bombs in Python With Hard Output Limits for gzip, Brotli, zstd, ZIP, and tar.gz
Ouroboros, a polished stainless steel sculpture of two interlocking loops with a pierced surface, standing beside a dark pool under trees
October 28, 2026
Anthropic’s S-1 Puts Safety Audits Inside the “Closing the Loop” Cycle It Warns About, and Says Its Evaluations Could Overstate Safety
Two opened leaves of the Verona palimpsest, with an older, darker layer of writing still showing through the newer script written over it
October 28, 2026
Cloudflare Says Its GLM-5.3 Model Returned Other Customers’ Data in 155 Responses, and a Public SGLang Bug Report Had Described the Same Path Since July
A raft of long grey wooden logs lying in a green meadow, with a forked post standing in the middle
October 28, 2026
How to Build the Raft Consensus Algorithm in Python and Test It With Crashes, Partitions, and Planted Bugs
28 Oct 2026
SXZ.io SXZ.io
  • Home
Search the Site
Popular Searches:
Technology Amazon AI
Recent Posts
Six weathered stone columns of the Temple of Apollo at Delphi, Greece, standing on a stone platform above a valley of olive groves
Honeypots Recorded Probes Against Oracle E-Business Suite CVE-2026-101767 Seven Days After Its Patch, and the Finder’s Write-Up Is Dated Patch Day
October 28, 2026
Vintage silver stopwatch with a chain on a black background, its dial showing seconds from 5 to 60
How to Find a Slow Query in PostgreSQL 18 With pg_stat_statements, Read Its EXPLAIN ANALYZE Plan, and Fix It With the Right Index
October 27, 2026
A wooden Tower of Hanoi puzzle on a market table, with three pegs and stacked discs of different sizes
Two Labs’ Claimed Refutations of the Exponential Time Hypothesis Turn Verification Into a Statement-Reading Problem, and Their Lean Theorems Promise Only That a Constant Exists
October 27, 2026
SXZ.io SXZ.io
  • Home

Categories

Articles 268 Posts
News 272 Posts
Learning Hub 241 Posts
Home/News/A Linux Kernel Local-Root Bug Has Public Exploit Code and No Merged Fix, After Zero Day Initiative Reports Reached Public Mailing Lists
News

A Linux Kernel Local-Root Bug Has Public Exploit Code and No Merged Fix, After Zero Day Initiative Reports Reached Public Mailing Lists

ZDI-CAN-33367 lets a local Linux user write into root-owned read-only files; the report, with exploit source code, reached public kernel lists on October 21 when ZDI copied them, a two-line fix was...

October 23, 2026 12 Min Read
56

A report for ZDI-CAN-33367, a Linux kernel flaw that lets a local user write into a file they can read but not modify, has been in public mailing list archives since October 21, with C source code in it. No fix is in the networking or mainline trees we checked, no CVE has been assigned, and CloudLinux says it ran the public exploit to root on AlmaLinux 8, 9 and 10, Debian 12 and 13, and Ubuntu 24.04 and 26.04. The report came from Trend Micro’s Zero Day Initiative (ZDI). Its message went to the kernel’s private security address with the netdev and linux-kernel lists copied on the same message, so the whole text, more than 200,000 characters of it, went into public archives.

Table Of Content

  • What the public record shows
  • How the flaw works, and what the fix changes
  • What the maintainers said and what ZDI answered
  • Where ZDI’s own listing stands
  • Who is exposed, and what CloudLinux recommends
  • The other reports in the same batch
  • What is still open
  • Sources and method

A two-line fix posted by Zizhen Liu on October 22 was reviewed the same day by Eric Dumazet, one of the networking maintainers. At 19:33 UTC on October 23 it had not been merged. The thread around it is as much a story as the bug: maintainers said the report arrived on public lists without a patch, and ZDI answered that it does not provide patches and will keep sending reports the way it always has. The interim advice we found is CloudLinux’s, which is to stop ordinary accounts from creating user namespaces, at the price of breaking rootless containers, and CloudLinux says it has not run the exploit against that mitigation.

What the public record shows

Times are UTC. Mail times come from message headers on Openwall’s mirror of the netdev and linux-kernel lists, converted from each sender’s offset, because lore.kernel.org answered scripted requests with a bot challenge.

When What happened Source
Around October 15 In his October 22 reply, Dumazet says a report with a patch had reached the kernel developers from another source a week earlier. Dumazet’s reply
October 21, 21:16 to 21:47 ZDI sends five Linux reports to the kernel lists: ZDI-CAN-33549 at 21:16, 33774 at 21:36 and 33367 at 21:46, plus 34068 and 34076. The message for 33367 has [email protected] in the To line and the netdev and linux-kernel lists on the CC line. It rates the bug CVSS 7.8 and says it was tested on 7.3-rc1 on Debian trixie; ZDI’s listing credits a researcher who uses the handle p1r0x. Message headers; ZDI’s listing
October 22, 04:28 Dumazet replies that he cut the report as too long and without a patch, and that a patch from another source will be available soon. Dumazet’s reply
October 22, 04:44 to 04:45 Greg Kroah-Hartman answers three of the other reports, asking why they went to public lists and noting that none came with a patch. Greg KH, vmwgfx; nvmet; ksmbd
October 22, about 10:05 Phoronix publishes the first report on the postings. Phoronix
October 22, 10:42 to 11:06 Zizhen Liu posts the fix as [PATCH v2 net], and Dumazet adds a Reviewed-by tag at 11:06. Openwall’s netdev index shows no earlier public version for October 14 to 21. Patch; review
October 22, 13:30 CloudLinux publishes its first advisory, describing a public exploit and no CVE. At 18:44 it adds that it ran the public exploit to root on AlmaLinux, CloudLinux, Debian and Ubuntu kernels. CloudLinux
October 22, 15:28 to 21:20 Willem de Bruijn points ZDI to the kernel’s reporting rules, Willy Tarreau and Peter Zijlstra reply, and ZDI answers at 18:51. ZDI’s reply
October 23, 14:59 CloudLinux releases a KernelCare livepatch for CloudLinux 10 and AlmaLinux 10 and says no fixed kernel has shipped for any of its lines. CloudLinux
October 23, 19:33 Our check: no matching commit for net/core/skbuff.c in the net or net-next trees or in Linus Torvalds’s tree, and NVD returns no record for either search term we tried. Our checks, method below

How the flaw works, and what the fix changes

Network packets inside the kernel travel in buffers called skbs, and an skb can point at memory pages owned by something else, such as the cached pages of a file. The kernel marks those buffers with a flag, SKBFL_SHARED_FRAG, so that later code knows not to modify the data in place. IPsec’s ESP receive path reads that flag through skb_has_shared_frag() to decide whether it has to copy the data before decrypting. The check came from the May 2026 fix for CVE-2026-43284, which NVD describes as ESP that “decrypts in place over data that is not owned privately by the skb”, and which CloudLinux calls Dirty Frag.

The new report concerns a different helper, skb_zerocopy(), which moves page references from one skb into another. According to the commit message of the fix, the helper does not copy the flag across, so an skb it builds for nfnetlink_queue or for an Open vSwitch upcall looks private to ESP and is decrypted in place, “letting an unprivileged user write into the page cache of a root-owned read-only file”. The change is one statement in net/core/skbuff.c:

@@ -3942,6 +3942,8 @@ skb_zerocopy(struct sk_buff *to, struct sk_buff *from, int len, int hlen)
 	}
 	skb_shinfo(to)->nr_frags = j;

+	skb_shinfo(to)->flags |= skb_shinfo(from)->flags & SKBFL_SHARED_FRAG;
+
 	if (i > 0 && from->unreadable)
 		to->unreadable = 1;

The patch carries two Fixes tags. One names the January 2014 commit that, according to the patch’s own v2 note, introduced skb_zerocopy(); the other names the May 2026 ESP change that began relying on the flag. CloudLinux says that installing the CVE-2026-43284 fix does not protect against this bug. We are not describing the exploit chain, and we are not linking the original report, because it contains the exploit’s source code.

We have covered neighbouring parts of the kernel before: pedit COW in June, which concerned traffic-control handling, DirtyClone in July, which concerned socket-buffer fragments, and two days ago the Infinity Core bugs, where stable-kernel fixes had been public for weeks before exploit code appeared. This case runs in the opposite order: exploit text first, merged fix later.

What the maintainers said and what ZDI answered

The maintainers’ replies are short. Dumazet wrote “I had to cut this report. Way too long, I could not see a patch in it.” and added “We were fortunate to receive a report with a patch from another source one week ago. Patch will be available soon.” Greg Kroah-Hartman, writing as Greg KH, answered the vmwgfx report with “For some reason you sent this to public lists, and did not include a patch, so there’s not much we can do with this.” His replies on the nvmet and ksmbd reports were “Again, no patch, and sent to a public list?” and “And again, no patch, and a public list?”, the first followed by “Please fix your submission process”. Willem de Bruijn pointed ZDI to the kernel’s reporting document: “For future reports: please review the documentation on how to share such findings”.

Willy Tarreau, who wrote in the first person about the kernel security team’s triage work, gave the maintainers’ case in practical terms. He said that “maintainers need a patch to start from”, that it is not possible to get anyone at ZDI, or the reporter, to test a patch, and that “just today we received more than 30 different reports”. Peter Zijlstra wrote that ZDI had been pointed to the document many times, and a later message called the ZDI reports very painful to handle.

ZDI’s answer arrived at 18:51. “We’ve probably submitted nearly 1000 cases to kernel over the last ten years,” it wrote, and said its report format is essentially what it was ten years ago apart from changes the kernel team had asked for. It added that it may be mistaken but this was the first time it had seen a reference to the documentation, and that “we will send the cases to you as we always have.” On timing it wrote “We will release the findings at rejection, or 120 days. Whichever comes first.” On patches it was blunt: “we aren’t going to provide you with patches”, because “It’s not my call, and it’s overhead we cannot support.” It said it would “more than likely have to entertain other options”. The reply does not mention the public lists on the CC line; the recipient it questioned was Red Hat. The exchange was heated, and ZDI objected to the wording of one maintainer’s remark.

The kernel’s reporting document is more nuanced than either side’s summary. It says to send a report to the affected maintainers with the security team copied and “Do not send it to a public list at this stage, unless you have good reasons to consider the issue as being public or trivial to discover”. It places a proposed fix among the items it calls “highly desirable”, below the ones it calls “absolutely necessary”, and says “Proposing a tested fix will save maintainers a lot of time”. It also asks reporters not to “require triage engineers to scan multiple pages of text”, in a section about AI-assisted reports; nothing in the messages we read says ZDI’s report was AI-assisted.

Where ZDI’s own listing stands

ZDI’s upcoming-advisories page, which ZDI brands as the TrendAI Zero Day Initiative, opens by describing its list as vulnerabilities “that are yet to be publicly disclosed”. When we fetched it on October 23, ZDI-CAN-33367 was on it with a reported date of October 21 and a deadline of February 18, 2027, which is 120 days later. That matches ZDI’s disclosure policy, under which the vendor gets “four months (120 days)”. The other four October 21 reports carry the same deadline, and a ConnMan entry reported October 19 has a deadline of February 16.

For the kernel, that schedule no longer describes anything secret. The kernel’s rules say “Fixes for publicly known bugs are released immediately”, and allow an embargo of “up to 7 calendar days from the start of the release process, with an exceptional extension to 14 calendar days”, so the two timetables were far apart even before the CC line made the report public. The page lists 715 advisories pending in total and 30 under Linux. Two Linux entries, ZDI-CAN-31139 and ZDI-CAN-31417, show a deadline of October 23, the day we checked, and 11 listed Linux entries show deadlines that have already passed, so the column does not tell you when ZDI will publish.

Who is exposed, and what CloudLinux recommends

These are CloudLinux’s findings, and CloudLinux sells the KernelCare livepatch service named below. We did not run the exploit or the commands, and this site has no Linux test machine.

  • What it tested. CloudLinux says its kernel team ran the published exploit to root on AlmaLinux 8, 9 and 10, on CloudLinux 9 and 10 (same kernels as AlmaLinux), on Debian 12 and 13 and on Ubuntu 24.04 and 26.04, and that CentOS 6 and 7 kernels are not affected. The kernels in that list include the 5.14 line (AlmaLinux 9) and the 6.12 line (AlmaLinux 10), and ZDI says it tested 7.3-rc1. CloudLinux had not run the exploit on its own CloudLinux 7 hybrid, 8 and 8 ELS kernels, but found on test machines that an ordinary account can create the private namespace the attack starts from, and treats those lines as exposed.
  • The gate. The attack needs ordinary users to be able to create user namespaces. CloudLinux’s check is sysctl user.max_user_namespaces, and “A value of 0 means the path is shut for ordinary accounts.” The kernel’s sysctl documentation defines that setting as “The maximum number of user namespaces that any user in the current user namespace may create.” CloudLinux says it ships with 0 on CloudLinux 10 and on CloudLinux 8 and 9 servers installed since mid-2024, that older servers keep the open setting even after updates, and that “The version does not settle it, the command does.”
  • Ubuntu has a second gate. Canonical’s 2023 post describes an AppArmor restriction on unprivileged user namespaces, controlled by kernel.apparmor_restrict_unprivileged_userns. CloudLinux does not say how its Ubuntu test machines were configured, so we cannot tell whether that setting was in play.
  • The mitigation. CloudLinux’s commands, run as root, apply without a reboot and are undone by deleting the file and running sysctl --system again:
sysctl user.max_user_namespaces
echo 'user.max_user_namespaces = 0' > /etc/sysctl.d/99-zdi-33367.conf
sysctl --system
  • What it costs. “Rootless Podman and Docker, unprivileged LXC, Flatpak, and some browser sandboxes stop working for ordinary accounts.” CloudLinux says that usually costs nothing on classic shared hosting and is disruptive where customers run their own containers.
  • What is untested. CloudLinux also suggests blocking two modules, nlmon and act_pedit, as a narrower fallback. Then it adds: “We have not run the exploit against either mitigation, and we have not verified that blocking the two modules stops every variant.” The case for the sysctl rests on the namespace step being first, which CloudLinux did check on its test machines, and not on a test of the exploit with the setting at 0.
  • CageFS does not help. CloudLinux says its per-account filesystem cage is not in the path and that it measured this by running the namespace step from a caged account.
  • Livepatch. A KernelCare livepatch built from the upstream fix candidate is released for CloudLinux 10 and AlmaLinux 10, and CloudLinux says it verified that it stops the public exploit. The CloudLinux 9 livepatch is in review, the CloudLinux 8 one is in progress, and Debian and Ubuntu have not started. CloudLinux says no fixed kernel has shipped for any line.

CloudLinux’s argument for treating this as a whole-server problem on shared hosting is that the local user is a customer, or an intruder who got in through a vulnerable plugin, and that the damage lands in the shared kernel. The same reasoning covers any host with untrusted local users, such as CI runners and multi-tenant build machines. CloudLinux also writes: “We are not aware of any report of the flaw being used in the wild.”

The other reports in the same batch

ZDI ID Component, per Phoronix and CloudLinux ZDI CVSS Where the thread stands
ZDI-CAN-33549 ksmbd, SMB Direct, integer underflow 9.0 Samba developer Stefan Metzmacher asked the reporter to test a branch he expected already fixed it and, on October 23, proposed a one-line quick fix. ksmbd’s Namjae Jeon posted a patch that day and Metzmacher answered “looks good”.
ZDI-CAN-33774 ksmbd, race condition 9.0 Jeon replied “This issue has already been fixed.”
ZDI-CAN-34068 vmwgfx, out-of-bounds write 8.8 Kroah-Hartman: sent to public lists, no patch, “not much we can do with this”.
ZDI-CAN-34076 nvmet, uninitialized resource, information disclosure 8.6 Kroah-Hartman: no patch, public list.
ZDI-CAN-32005 ConnMan, stack buffer overflow 7.8 Reported October 19 per ZDI’s page. ConnMan is a userspace network manager, not the kernel, CloudLinux notes.

CloudLinux’s assessment of the two ksmbd reports is that the public proofs of concept show a kernel memory leak and a crash, not code execution, and that ksmbd is not built into the AlmaLinux and CloudLinux 9 and 10 kernels. Debian and Ubuntu build it, it says, but it runs only after an administrator installs ksmbd-tools and starts the service, and CloudLinux’s check for whether it is running is systemctl is-active ksmbd. ZDI’s scores for both are 9.0.

What is still open

  • When the fix lands. It was reviewed on October 22 and marked for the stable trees, but we found no commit in the trees we checked. The net tree did take three other fixes between 17:43 and 17:47 UTC on October 23 (sctp, tcp and ipmr), none of them this one. CloudLinux’s 14:59 UTC update says the upstream fix “has been reviewed by the netdev maintainer and is not merged yet.” The fix thread holds three messages: the patch, Dumazet’s review, and an automated reply from a kernel bot that says an LLM did the evaluation and asks how the bug was discovered and whether it was triggered. We cannot tell from the archive whether that request is holding up the merge.
  • A CVE. The kernel’s CVE document says “No CVEs will be automatically assigned for unfixed security issues in the Linux kernel; assignment will only automatically happen after a fix is available and applied to a stable kernel tree”. Until then, scanners that match on CVE identifiers will show nothing. Once the fix is merged it should be findable by its title, “net: skbuff: propagate shared-frag marker in skb_zerocopy()”, if the title survives the merge unchanged.
  • Distribution kernels. CloudLinux reports none for its lines. We did not check each distribution’s tracker, because there is no CVE identifier to look up.
  • Exploitation in the wild. None of the sources we read reports it, and the exploit has been public since October 21.
  • ZDI’s process. ZDI said it would hold internal discussions and might “entertain other options”; its page still lists the five October 21 Linux reports with February 18, 2027 deadlines.

Sources and method

We read the maintainers’ replies to the ZDI reports and the fix thread on Openwall’s mirrors of the netdev and linux-kernel lists, opened the headers of the ZDI-CAN-33549, 33774 and 33367 messages, and measured the length of the 33367 message and checked that it contains C source, without running any of it. We also read Phoronix’s report, CloudLinux’s advisory as last updated at 14:59 UTC on October 23, ZDI’s upcoming-advisories and disclosure-policy pages, the kernel’s documents on security bugs, CVE assignment and the user sysctls, Canonical’s 2023 post and the NVD record for CVE-2026-43284. The commit dates come from GitHub’s API for the two Fixes commits. The fix-status check on October 23 at 19:33 UTC used the net and net-next atom feeds for net/core/skbuff.c on git.kernel.org, GitHub’s history of that file in Linus Torvalds’s tree and the list mirror’s index of replies; git.kernel.org commit pages and lore.kernel.org answered scripted requests with a bot challenge, so we did not use them. The CVE check searched NVD for “skb_zerocopy” among records published from October 15 and for “ZDI-CAN-33367”, and found nothing for either. Everything about which distributions the exploit works on, the mitigation and the livepatch is CloudLinux’s claim and not our test. Photo: Adelie penguins on an iceberg, by Jason Auch, CC BY 2.0, via Wikimedia Commons.

Tags:

Linux KernelPrivilege EscalationVulnerability DisclosureZero Day InitiativeZero-Day

Share

Two brass Gothenburg ferry tokens, front and back, each with a round hole in the middle, on a plain light background
Previous Post

How to Harden a FastAPI Rate Limiter Against Spoofed Client IPs, IPv6 Address Rotation, and Wrong Retry-After Headers

A dual carriageway seen from above, with a grass and concrete-barrier median strip separating the two carriageways and a 100 km/h speed limit sign standing on the median
Next Post

OpenAI’s Habitat Sequel Turns Cosmos DB Multi-Tenancy Into a Co-Managed Partnership, and Its 12x Is a Median With No Hit Rate

No Comment! Be the first one.

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Latest
28 Oct
Honeypots Recorded Probes Against Oracle E-Business Suite CVE-2026-101767 Seven Days After Its Patch, and the Finder’s Write-Up Is Dated Patch Day
27 Oct
How to Find a Slow Query in PostgreSQL 18 With pg_stat_statements, Read Its EXPLAIN ANALYZE Plan, and Fix It With the Right Index
Trending
October 28, 2026
Honeypots Recorded Probes Against Oracle E-Business Suite CVE-2026-101767 Seven Days After Its Patch, and the Finder’s Write-Up Is Dated Patch Day
October 27, 2026
How to Find a Slow Query in PostgreSQL 18 With pg_stat_statements, Read Its EXPLAIN ANALYZE Plan, and Fix It With the Right Index
October 27, 2026
Two Labs’ Claimed Refutations of the Exponential Time Hypothesis Turn Verification Into a Statement-Reading Problem, and Their Lean Theorems Promise Only That a Constant Exists
October 27, 2026
Tailscale Merged Fixes for Most of the 11 “Tailworm” Findings Before Shipping a Release, and the Forwarding Switch It Recommends Already Exists in the Shipped Client
October 27, 2026
How to Stop Decompression Bombs in Python With Hard Output Limits for gzip, Brotli, zstd, ZIP, and tar.gz
October 27, 2026
Anthropic’s S-1 Puts Safety Audits Inside the “Closing the Loop” Cycle It Warns About, and Says Its Evaluations Could Overstate Safety

Related Posts

Rows of server racks in a data center representing network infrastructure targeted by botnets
News

C0XMO Botnet Shows Why Old Router Firmware Still Matters

June 7, 2026
Close-up of a USB flash drive, representing physical data-theft risk in office security incidents
News

Fake IT Support Is Now Walking Through the Front Door

June 7, 2026
A phone security app on a smartphone resting on a laptop keyboard.
News

Everest Forms Pro Flaw Is Being Exploited to Create Rogue WordPress Admins

June 7, 2026
A phone secured by a padlock, illustrating AI data-leak containment and security controls.
News

OpenAI’s Lockdown Mode Is a Data-Leak Brake, Not a Prompt-Injection Cure

June 8, 2026
SXZ.io SXZ.io
  • [email protected]

Categories

Articles
Learning Hub
News

All Rights Reserved by SXZ.io ©2026