Новая уязвимость в подсистеме Linux Netfilter позволяет вызвать состояние отказа в обслуживании (DoS) или локально повысить привилегии в системе. В ветках ядра 5.10, 5.15, 6.1 и 6.6 вышли обновления с патчем.
Проблема, зарегистрированная как CVE-2023-6817, классифицируется как использование освобожденной памяти (use-after-free). Она вызвана некорректной реализацией набора политик PIPAPO (Pile Packet Policies) в модуле nf_tables, а точнее, функции nft_pipapo_walk().
Эта функция не предусматривала проверку активности элемента перед выполнением операции над ним. Подобное упущение грозило крэшем при попытке деактивировать элемент дважды.
Степень опасности уязвимости оценена в 7,8 балла по шкале CVSS (как высокая). Эксплойт требует наличия прав CAP_NET_ADMIN и в случае успеха может повлечь DoS или повышение привилегий. PoC-код уже опубликован.
Данная проблема была привнесена с выпуском Linux 5.6. Патч опробован на тестовой сборке ядра 6.7-rc5 и бэкпортирован в актуальные стабильные ветки (обновления 5.10.204, 5.15.143, 6.1.68 и 6.6.7).
За последние пару лет в Linux Netfilter было обнаружено как минимум еще четыре ошибки, грозящие повышением привилегий: возможность записи за границами буфера, переполнение буфера и две use-after-free.