CVE-2021-47010·Kernel vulnerability
In the Linux kernel, the following vulnerability has been resolved: net: Only allow init netns to set default tcp cong to a restricted algo tcp_set_default_congestion_control() is netns-safe in that it writes to &net->ipv4.tcp_congestion_control, but it also sets ca->flags |= TCP_CONG_NON_RESTRICTED which is not namespaced. This has the unintended side-effect of changing the global net.ipv4.tcp_allowed_congestion_control sysctl, despite the fact that it is read-only: 97684f0970f6 ("net: Make tcp_allowed_congestion_control readonly in non-init netns") Resolve this netns "leak" by only allowing the init netns to set the default algorithm to one that is restricted. This restriction could be removed if tcp_allowed_congestion_control were namespace-ified in the future. This bug was uncovered with https://github.com/JonathonReinhart/linux-netns-sysctl-verify
- Severity
- high
- Software
- Kernel
- Fixed in
- 5.12.4
- Published
- 2024-02-28
Affected versions
From: 5.12
Until: 5.12.4
Fixed in: 5.12.4
How to fix this CVE
Update your Linux kernel to version 5.12.4 or later to patch this network namespace isolation vulnerability. The vulnerability allows unprivileged users in non-init namespaces to inadvertently modify global TCP congestion control settings, potentially affecting system-wide networking behavior. Ensure your kernel is fully patched to restore proper namespace isolation boundaries.
sudo dnf update kernel kernel-develDefensia detects this vulnerability
How to check if you are affected
- Step 1: Check kernel version with `uname -r` and compare against 5.12.4 or later; versions 5.12.0 through 5.12.3 are vulnerable
- Step 2: Verify if untrusted users have network namespace creation privileges with `grep -r 'user_namespaces' /boot/config-$(uname -r)` and check if CONFIG_USER_NS is enabled
- Step 3: Monitor /var/log/auth.log (Ubuntu/Debian) or /var/log/audit/audit.log (RHEL/CentOS) for repeated failed or successful attempts to modify /proc/sys/net/ipv4/tcp_congestion_control from non-init namespaces
- Step 4: After patching, verify the fix with `uname -r` returns 5.12.4 or higher, and confirm net namespace restrictions are enforced by testing namespace creation permissions remain limited
FAQ
What is CVE-2021-47010?
CVE-2021-47010 is a Linux kernel vulnerability where unprivileged users in non-init network namespaces can modify global TCP congestion control algorithm flags, bypassing namespace isolation and potentially affecting the entire system's networking configuration despite read-only sysctl protections.
Is CVE-2021-47010 being actively exploited?
No, CVE-2021-47010 is not listed in the CISA Known Exploited Vulnerabilities catalog, and no public exploits are currently available.
What versions of Kernel are affected by CVE-2021-47010?
Linux kernel versions 5.12 through 5.12.3 are affected; version 5.12.4 and later contain the fix.
How do I check if my server is vulnerable to CVE-2021-47010?
Run `uname -r` to display your kernel version; if it reports 5.12.0 through 5.12.3, your system is vulnerable and should be patched immediately.
Does Defensia detect CVE-2021-47010?
Yes — Defensia's CVE advisory scanner compares installed package versions against the NVD database. If Kernel is installed on a monitored server, CVE-2021-47010 will appear in your dashboard with remediation steps.
Related Kernel CVEs
References
- https://git.kernel.org/stable/c/6c1ea8bee75df8fe2184a50fcd0f70bf82986f42
- https://git.kernel.org/stable/c/8d432592f30fcc34ef5a10aac4887b4897884493
- https://git.kernel.org/stable/c/9884f745108f7d25b189bbcd6754e284fb29ab68
- https://git.kernel.org/stable/c/992de06308d9a9584d59b96d294ac676f924e437
- https://git.kernel.org/stable/c/e7d7bedd507bb732e600403b7a96f9fe48d0ca31
Track CVEs across your fleet automatically
Defensia scans your Linux servers and tells you exactly which ones are running vulnerable versions — including CVE-2021-47010. Free for 1 server.
Get started free