CVE-2026-43114
Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
06/05/2026
Last modified:
06/05/2026
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
netfilter: nft_set_pipapo_avx2: don&#39;t return non-matching entry on expiry<br />
<br />
New test case fails unexpectedly when avx2 matching functions are used.<br />
<br />
The test first loads a ranomly generated pipapo set<br />
with &#39;ipv4 . port&#39; key, i.e. nft -f foo.<br />
<br />
This works. Then, it reloads the set after a flush:<br />
(echo flush set t s; cat foo) | nft -f -<br />
<br />
This is expected to work, because its the same set after all and it was<br />
already loaded once.<br />
<br />
But with avx2, this fails: nft reports a clashing element.<br />
<br />
The reported clash is of following form:<br />
<br />
We successfully re-inserted<br />
a . b<br />
c . d<br />
<br />
Then we try to insert a . d<br />
<br />
avx2 finds the already existing a . d, which (due to &#39;flush set&#39;) is marked<br />
as invalid in the new generation. It skips the element and moves to next.<br />
<br />
Due to incorrect masking, the skip-step finds the next matching<br />
element *only considering the first field*,<br />
<br />
i.e. we return the already reinserted "a . b", even though the<br />
last field is different and the entry should not have been matched.<br />
<br />
No such error is reported for the generic c implementation (no avx2) or when<br />
the last field has to use the &#39;nft_pipapo_avx2_lookup_slow&#39; fallback.<br />
<br />
Bisection points to<br />
7711f4bb4b36 ("netfilter: nft_set_pipapo: fix range overlap detection")<br />
but that fix merely uncovers this bug.<br />
<br />
Before this commit, the wrong element is returned, but erronously<br />
reported as a full, identical duplicate.<br />
<br />
The root-cause is too early return in the avx2 match functions.<br />
When we process the last field, we should continue to process data<br />
until the entire input size has been consumed to make sure no stale<br />
bits remain in the map.
Impact
References to Advisories, Solutions, and Tools
- https://git.kernel.org/stable/c/07de44424bb7f17ef9357e8535df96d9e97c40cb
- https://git.kernel.org/stable/c/0abbc43f71d99baadeeba6fa3fe1c80b676f57ed
- https://git.kernel.org/stable/c/3d53f9aafd469ae1ea27051e00f5b96ca1b55d52
- https://git.kernel.org/stable/c/d3c0037ffe1273fa1961e779ff6906234d6cf53c
- https://git.kernel.org/stable/c/fa4f1f52528c73989d820f32bfca06bec5afeece



