В ядре Linux устранена следующая уязвимость:
netfilter: nft_set_pipapo: не передавать плохой клон в будущую транзакцию
При сбое выделения памяти клонированный nft_pipapo_match может ввести неверный результат.
состояние:
- Для некоторых полей можно изменить размер таблиц поиска, в то время как для других это было сделано
нет
- биты могли быть переключены
- скретч-карта может быть меньшего размера, что также означает, что m->bsize_max может быть меньше
ниже, чем требуется
Это означает, что следующая вставка в том же пакете может вызвать
пишет за пределами поля. Более того, сбой в первом может привести к тому, что клон будет поврежден.
утечка в следующую транзакцию, потому что обратный вызов прерывания никогда не происходит.
в этом случае выполняется (верхний уровень увидел ошибку и не пытался выполнить
был сделан запрос на выделение транзакции). Запишите состояние структуры nft_pipapo_match:
- НОВИНКА (первозданный клон)
- МОД (модифицированный клон с хорошим состоянием)
- ERR (потенциально поддельный контент)
Затем сделайте так, чтобы удаление и вставка завершались неудачей, когда клон
вошёл в состояние ERR.
Если первая попытка вставки закончилась ошибкой, освободите клонируйте сразу.
Показать оригинальное описание (EN)
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.
Характеристики атаки
Последствия
Строка CVSS v3.1