BadGarbage (CVE-2026-53361) Local Root and Container Escape: Kernel Update for CloudLinux 10
BadGarbage (CVE-2026-53361) is a Linux kernel race condition that lets any local user, including a process inside a container, become root on the host. It affects CloudLinux 10 only. CloudLinux 7 through 9 are not affected. There is no runtime mitigation, so the fix is the patched kernel or a KernelCare livepatch. H…
BadGarbage (CVE-2026-53361) is a Linux kernel race condition that lets any local user, including a process inside a container, become root on the host. It affects CloudLinux 10 only. CloudLinux 7 through 9 are not affected. There is no runtime mitigation, so the fix is the patched kernel or a KernelCare livepatch. H…
📋 TL;DR — last updated August 17, 2026, 09:30 UTC
BadGarbage (CVE-2026-53361, CVSS 7.0) is a vulnerability tied to a race condition in the Linux kernel’s Unix-socket garbage collector. Any local user, including a process inside a container, can exploit the flaw to become root on the host. A public, working proof-of-concept exists.
- Affected: CloudLinux 10 only. → Affected versions
- Mitigation: none at runtime; the fix is a patched kernel or a KernelCare livepatch. → Is there a mitigation?
- Fix status → Update instructions
- Stream 1 — CloudLinux 10 patched kernel: available, kernel-6.12.0-211.47.1.el10_2 in the standard update repository.
- Stream 2 — KernelCare livepatch: in preparation.
- Verify: after reboot, uname -r shows 6.12.0-211.47.1.el10_2 or newer; or run kcarectl –patch-info | grep CVE-2026-53361. → How to verify you are patched
- Why it matters: on a shared host, BadGarbage is the difference between one hacked site and a compromised server. → Why this matters on a shared host
- How the bug works: a race in Unix-socket garbage collection frees a socket that is still in use. → Technical details of the bug
Researcher sgkdev has published a working proof-of-concept for CVE-2026-53361, nicknamed BadGarbage, a flaw in the part of the Linux kernel that cleans up unused local sockets. The exploit lets an ordinary user account, or a process inside a default container, escalate to root on the host machine. It affects CloudLinux 10 only. Earlier CloudLinux versions are not affected.
The upstream kernel fix has been available since May 2026. What changed on August 10 is that working exploit code became public, and that is what makes patching urgent now.
“Local” here does not mean an administrator or a customer you trust. On a shared host, the attacker is whoever has already broken into one of the sites you host through a vulnerable plugin, an outdated application, or leaked credentials. That foothold is normally confined to a single account. BadGarbage removes the confinement. It turns any such foothold into root over the entire server, and therefore over every other tenant’s files, databases and credentials. Every CloudLinux 10 server on an unpatched kernel is exposed, with no precondition to remove and no setting that switches the affected code off.
In our own lab, the public exploit took a default Docker container to full host root on the AlmaLinux 10 kernel that CloudLinux 10 is built on: first run, under thirty seconds, no added privileges.
💡 Another kernel reboot cycle?
BadGarbage is one more in a run of Linux kernel privilege-escalation issues that each require a patch and a reboot on affected hosts. If emergency-patching and rebooting servers on this cadence is not sustainable for you, KernelCare, our live kernel-patching service, is the alternative we recommend. It applies kernel security fixes to a running server automatically, with no reboot and no maintenance window. Once the BadGarbage livepatch reaches the main feed, servers running KernelCare receive it on the next update cycle.
Affected CloudLinux versions
| Version | Affected | Status |
|---|---|---|
| CloudLinux 7 (CL7) Kernel 3.10 |
✅ No | Not affected. No action needed. |
| CloudLinux 7h (CL7h) Kernel 4.18 |
✅ No | Not affected. No action needed. |
| CloudLinux 8 (CL8) Kernel 4.18 |
✅ No | Not affected. No action needed. |
| CloudLinux 8 LTS Kernel 5.14 |
✅ No | Not affected. No action needed. |
| CloudLinux 9 (CL9) Kernel 5.14 |
✅ No | Not affected. No action needed. |
| CloudLinux 9 LTS Kernel 5.14 |
✅ No | Not affected. No action needed. |
| CloudLinux 10 (CL10) Kernel 6.12 |
❌ Yes | ✅ Kernel patch: available ⏳ Livepatch: in preparation |
Is there a mitigation?
No, there is no runtime mitigation for this vulnerability. The vulnerable code is the kernel’s Unix-domain socket garbage collector, core networking that systemd, container runtimes and most system services rely on. No module to blacklist, no sysctl, no build option you can flip without breaking the system. SELinux, the kernel’s access-control layer, does not stop it either. The exploit disables SELinux enforcement as part of its chain.
The only real fix is a patched kernel, applied either by updating and rebooting or through the KernelCare livepatch once it ships.
Update instructions
Two delivery streams cover CloudLinux 10.
Stream 1: CloudLinux 10 patched kernel
CloudLinux 10 tracks the AlmaLinux 10 kernel, so the fix for BadGarbage comes from AlmaLinux’s patched kernel.
Status: August 17, 2026, 09:30 UTC.
The patched kernel kernel-6.12.0-211.47.1.el10_2 is available in the stable repository. Update and reboot to apply it.
Run:
dnf update 'kernel*'
reboot
After the reboot, confirm the running kernel. See How to verify you are patched below.
Stream 2: KernelCare livepatch (no reboot)
Status: August 17, 2026, 09:30 UTC.
The KernelCare livepatch for CVE-2026-53361 is in preparation. Once it reaches the main feed, it is delivered automatically to any host running the KernelCare agent, with no reboot and no operator action beyond confirming delivery.
When the livepatch is available, subscribed servers update automatically on the next cycle, or on demand:
kcarectl --update
How to verify you are patched
After updating the kernel, check the running version:
uname -r
If it reports 6.12.0-211.47.1.el10_2 or newer, you are running the patched kernel.
If you use KernelCare, once the livepatch has shipped you can confirm it is active without a reboot:
kcarectl --patch-info | grep CVE-2026-53361
A line beginning [CVE-2026-53361] confirms the fix is live on the running kernel. An empty result means the livepatch has not been applied yet. Run kcarectl –update and check again in a few minutes.
⚠ Do not use kcarectl –info | grep CVE-… for verification. That form returns empty output even on correctly patched systems. Always use kcarectl –patch-info for CVE-level status.
The rest of this advisory is background for readers who want it: how the attack plays out on a shared host, and the technical detail of the underlying bug. Neither is required to apply the fix above.
Why this matters on a shared host
The exploit needs one thing: the ability to run code on the machine as any user. On a dedicated server with only trusted administrators, that is a high bar. On a shared or multi-tenant host, it is the ordinary state of the system.
Consider the usual path:
- A web-tier compromise. An attacker exploits a vulnerable plugin, an outdated CMS, or one of the everyday web-application flaws shared hosting sees constantly. They now run as the site’s PHP-FPM or Apache identity, in theory confined to that one account.
- BadGarbage. From that unprivileged process, the attacker exploits the Unix-socket flaw to become root. No prior root, no special capability, no admin action.
- Root on the host. They now run outside every per-tenant boundary. Every other tenant’s files, databases, credentials and backups on that server are within reach, and in the worst case recovery means rebuilding the whole machine.
The same applies to containers. A tenant given a container, or a CI job running customer-supplied code, can break out to root on the host. Our lab reproduction used exactly this path, a default Docker container, no special flags, host root on the first attempt.
On a patched host, or one running a KernelCare livepatch, step 2 fails. A web-tier compromise stays a web-tier compromise, one site to clean up rather than a whole server to rebuild. That is what the kernel update buys you, and it is why this matters even though the vulnerability is “local” only.
Technical details of the bug
The Linux kernel lets processes pass open file descriptors to each other over local (AF_UNIX) sockets. To avoid leaking sockets that reference one another in an unreachable loop, the kernel runs a garbage collector that finds and frees those cycles.
BadGarbage is a race in that garbage collector. When a process peeks at a socket’s queue with MSG_PEEK, it takes a reference to the socket that the garbage collector’s accounting does not see. Under the right timing, the collector decides the socket is unreachable and frees it while that reference is still live. The result is a use-after-free: a freed kernel object that a process still holds a pointer to. From that primitive the public exploit builds arbitrary kernel memory reads and writes, and from there, full control of the host kernel.
The upstream fix is a single change that makes the collector mark itself as in-progress reliably, so the peek path backs off instead of racing.
The garbage-collector code this flaw lives in was introduced in the 6.x kernel series, so only kernels from 6.9 onward contain it. The older lines CloudLinux 7 through 9 ship (3.10, 4.18 and 5.14) predate that code and are not affected.
References
- Public proof-of-concept: github.com/sgkdev/bad_garbage
- Upstream kernel fix: commit d82ba05263c6
- Red Hat CVE page: CVE-2026-53361
- NVD entry: CVE-2026-53361
The post BadGarbage (CVE-2026-53361) Local Root and Container Escape: Kernel Update for CloudLinux 10 appeared first on CloudLinux.
References
Check your system for vulnerabilities
Select your product and operating system to see the exact fix commands that apply to you.
Check Your System