Вразливість у підсистемі netfilter, що дозволяє виконати код на рівні ядра Linux

У Netfilter, підсистемі ядра Linux, що використовується для фільтрації та модифікації мережних пакетів, виявлено вразливість (CVE-2022-25636), що дозволяє виконати код на рівні ядра. Заявлено про підготовку прикладу експлоїту, що дозволяє локальному користувачеві підняти свої привілеї в Ubuntu 21.10 з відключеним механізмом захисту KASLR. Проблема проявляється починаючи з ядра 5.4. Виправлення поки доступне у вигляді патча (випуски ядра, що коректують, не сформовані). Простежити за публікаціями оновлення пакетів у дистрибутивах можна на цих сторінках: Debian, SUSE, Ubuntu, RHEL, Fedora, Gentoo, Arch Linux.

Вразливість викликана помилкою обчислення розміру масиву flow->rule->action.entries у функції nft_fwd_dup_netdev_offload (визначена у файлі net/netfilter/nf_dup_netdev.c), яка може призвести до запису контрольованих атакуючих даних у область пам'яті за кордоном. Помилка проявляється при налаштуванні правил dup і fwd в ланцюжках, для яких застосовується апаратне прискорення обробки пакетів (offload). Так як переповнення виникає на етапі до створення правила пакетного фільтра та перевірки підтримки offload, вразливість також може бути застосована і для мережних пристроїв, що не підтримують апаратне прискорення, таких як loopback-інтерфейс.

Зазначається, що проблема досить проста в експлуатації, так як значення, що виходять за межі буфера, можуть перезаписати покажчик на структуру net_device, а дані про перезаписане значення повертаються в простір користувача, що дозволяє дізнатися необхідні для здійснення атаки адреси в пам'яті. Для експлуатації вразливості потрібно створення певних правил у nftables, що можливе лише за наявності привілеїв CAP_NET_ADMIN, які можуть бути отримані непривілейованим користувачем в окремому просторі імен (network namespaces). Вразливість також можна використовувати для атак на системи контейнерної ізоляції.

Джерело: opennet.ru

Додати коментар або відгук