CVE-2025-38721: netfilter: ctnetlink: fix refcount leak on table dump
In the Linux kernel, the following vulnerability has been resolved:
netfilter: ctnetlink: fix refcount leak on table dump
There is a reference count leak in ctnetlinkdumptable(): if (res < 0) { nfconntrackget(&ct->ctgeneral); // HERE cb->args[1] = (unsigned long)ct; ...
While its very unlikely, its possible that ct == last. If this happens, then the refcount of ct was already incremented. This 2nd increment is never undone.
This prevents the conntrack object from being released, which in turn keeps prevents cnet->count from dropping back to 0.
This will then block the netns dismantle (or conntrack rmmod) as nfconntrackcleanupnetlist() will wait forever.
This can be reproduced by running conntrackresize.sh selftest in a loop. It takes ~20 minutes for me on a preemptible kernel on average before I see a runaway kworker spinning in nfconntrackcleanupnetlist.
One fix would to change this to: if (res < 0) { if (ct != last) nfconntrackget(&ct->ctgeneral);
But this reference counting isn't needed in the first place. We can just store a cookie value instead.
A followup patch will do the same for ctnetlinkexpdumptable, it looks to me as if this has the same problem and like ctnetlinkdumptable, we only need a 'skip hint', not the actual object so we can apply the same cookie strategy there as well.
Affected Software
Event History
Frequently Asked Questions
What is the severity of CVE-2025-38721?
CVE-2025-38721 is classified as a medium severity vulnerability.
How do I fix CVE-2025-38721?
To fix CVE-2025-38721, update the Linux kernel to the latest patched version.
What systems are affected by CVE-2025-38721?
CVE-2025-38721 affects various versions of the Linux kernel that use the netfilter module.
What are the consequences of exploiting CVE-2025-38721?
Exploitation of CVE-2025-38721 may lead to denial of service due to the reference count leak.
When was CVE-2025-38721 published?
CVE-2025-38721 was published in 2025 and addresses a specific vulnerability in the Linux kernel.