CVE-2026-43116
Gravedad:
Pendiente de análisis
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
06/05/2026
Última modificación:
06/05/2026
Descripción
*** Pendiente de traducción *** In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
netfilter: ctnetlink: ensure safe access to master conntrack<br />
<br />
Holding reference on the expectation is not sufficient, the master<br />
conntrack object can just go away, making exp->master invalid.<br />
<br />
To access exp->master safely:<br />
<br />
- Grab the nf_conntrack_expect_lock, this gets serialized with<br />
clean_from_lists() which also holds this lock when the master<br />
conntrack goes away.<br />
<br />
- Hold reference on master conntrack via nf_conntrack_find_get().<br />
Not so easy since the master tuple to look up for the master conntrack<br />
is not available in the existing problematic paths.<br />
<br />
This patch goes for extending the nf_conntrack_expect_lock section<br />
to address this issue for simplicity, in the cases that are described<br />
below this is just slightly extending the lock section.<br />
<br />
The add expectation command already holds a reference to the master<br />
conntrack from ctnetlink_create_expect().<br />
<br />
However, the delete expectation command needs to grab the spinlock<br />
before looking up for the expectation. Expand the existing spinlock<br />
section to address this to cover the expectation lookup. Note that,<br />
the nf_ct_expect_iterate_net() calls already grabs the spinlock while<br />
iterating over the expectation table, which is correct.<br />
<br />
The get expectation command needs to grab the spinlock to ensure master<br />
conntrack does not go away. This also expands the existing spinlock<br />
section to cover the expectation lookup too. I needed to move the<br />
netlink skb allocation out of the spinlock to keep it GFP_KERNEL.<br />
<br />
For the expectation events, the IPEXP_DESTROY event is already delivered<br />
under the spinlock, just move the delivery of IPEXP_NEW under the<br />
spinlock too because the master conntrack event cache is reached through<br />
exp->master.<br />
<br />
While at it, add lockdep notations to help identify what codepaths need<br />
to grab the spinlock.



