Description
In the Linux kernel, the following vulnerability has been resolved: netfilter: nft_set_pipapo: don't leak bad clone into future transaction On memory allocation failure the cloned nft_pipapo_match can enter a bad state: - some fields can have their lookup tables resized while others did not - bits might have been toggled - scratch map can be undersized which also means m->bsize_max can be lower than what is required This means that the next insertion in the same batch can trigger out-of-bounds writes. Furthermore, a failure in the first can result in the bad clone to leak into the next transaction because the abort callback is never executed in this case (the upper layer saw an error and no attempt to allocate a transactional request was made). Record a state for the nft_pipapo_match structure: - NEW (pristine clone) - MOD (modified clone with good state) - ERR (potentially bogus content) Then make it so that deletes and insertions fail when the clone entered ERR state. In case the very first insert attempt results in an error, free the clone right away.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
3c4287f62044a90e73a561aa05fc46e62da173da to < 0ab7b1802f63ca5b288ea59acb467830b83abd6baffected3c4287f62044a90e73a561aa05fc46e62da173da to < cc53703f48558896295f565cd4f5e956d21b7af4affected3c4287f62044a90e73a561aa05fc46e62da173da to < 047e813324eac2ac60cddfb58bcdbd0144eadb09affected3c4287f62044a90e73a561aa05fc46e62da173da to < 610e3b73efaec3dd81a95dcda2421ad7d9795bd0affected3c4287f62044a90e73a561aa05fc46e62da173da to < 02b6b0e892aea582590671796fd6eff5b93ea93faffected3c4287f62044a90e73a561aa05fc46e62da173da to < e74f9680e1b64872a51cc7b5bda1edaaa08aa51faffected3c4287f62044a90e73a561aa05fc46e62da173da to < 47e65eff50691f0a5b79d325e28d83ec1da43bcfaffected
Linux Linux
Default version status: affected
5.6affected0 to < 5.6unaffected5.15.217 to ≤ 5.15.*unaffected6.1.184 to ≤ 6.1.*unaffected6.6.148 to ≤ 6.6.*unaffected6.12.97 to ≤ 6.12.*unaffected6.18.40 to ≤ 6.18.*unaffected7.1.5 to ≤ 7.1.*unaffected7.2 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/0ab7b1802f63ca5b288ea59acb467830b83abd6b ↗
- https://git.kernel.org/stable/c/cc53703f48558896295f565cd4f5e956d21b7af4 ↗
- https://git.kernel.org/stable/c/047e813324eac2ac60cddfb58bcdbd0144eadb09 ↗
- https://git.kernel.org/stable/c/610e3b73efaec3dd81a95dcda2421ad7d9795bd0 ↗
- https://git.kernel.org/stable/c/02b6b0e892aea582590671796fd6eff5b93ea93f ↗
- https://git.kernel.org/stable/c/e74f9680e1b64872a51cc7b5bda1edaaa08aa51f ↗
- https://git.kernel.org/stable/c/47e65eff50691f0a5b79d325e28d83ec1da43bcf ↗