CVE-2025-38721
Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
04/09/2025
Last modified:
05/09/2025
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
netfilter: ctnetlink: fix refcount leak on table dump<br />
<br />
There is a reference count leak in ctnetlink_dump_table():<br />
if (res ct_general); // HERE<br />
cb->args[1] = (unsigned long)ct;<br />
...<br />
<br />
While its very unlikely, its possible that ct == last.<br />
If this happens, then the refcount of ct was already incremented.<br />
This 2nd increment is never undone.<br />
<br />
This prevents the conntrack object from being released, which in turn<br />
keeps prevents cnet->count from dropping back to 0.<br />
<br />
This will then block the netns dismantle (or conntrack rmmod) as<br />
nf_conntrack_cleanup_net_list() will wait forever.<br />
<br />
This can be reproduced by running conntrack_resize.sh selftest in a loop.<br />
It takes ~20 minutes for me on a preemptible kernel on average before<br />
I see a runaway kworker spinning in nf_conntrack_cleanup_net_list.<br />
<br />
One fix would to change this to:<br />
if (res ct_general);<br />
<br />
But this reference counting isn&#39;t needed in the first place.<br />
We can just store a cookie value instead.<br />
<br />
A followup patch will do the same for ctnetlink_exp_dump_table,<br />
it looks to me as if this has the same problem and like<br />
ctnetlink_dump_table, we only need a &#39;skip hint&#39;, not the actual<br />
object so we can apply the same cookie strategy there as well.
Impact
References to Advisories, Solutions, and Tools
- https://git.kernel.org/stable/c/19b909a4b1452fb97e477d2f08b97f8d04095619
- https://git.kernel.org/stable/c/30cf811058552b8cd0e98dff677ef3f89d6d34ce
- https://git.kernel.org/stable/c/41462f4cfc583513833f87f9ee55d12da651a7e3
- https://git.kernel.org/stable/c/586892e341fbf698e7cbaca293e1353957db725a
- https://git.kernel.org/stable/c/962518c6ca9f9a13df099cafa429f72f68ad61f0
- https://git.kernel.org/stable/c/a2cb4df7872de069f809de2f076ec8e54d649fe3
- https://git.kernel.org/stable/c/a62d6aa3f31f216b637a4c71b7a8bfc7c57f049b
- https://git.kernel.org/stable/c/de788b2e6227462b6dcd0e07474e72c089008f74
- https://git.kernel.org/stable/c/e14f72aa66c029db106921d621edcedef68e065b