Вразливість у ядрі Linux, що дозволяє викликати крах через відправлення UDP-пакету

У ядрі Linux виявлено вразливість (CVE-2019-11683), що дозволяє віддалено викликати відмову в обслуговуванні через відправлення спеціально оформлених UDP-пакетів (packet-of-death). Проблема викликана помилкою в обробнику udp_gro_receive_segment (net/ipv4/udp_offload.c) з реалізацією технології GRO (Generic Receive Оffload) і може призвести до пошкодження вмісту областей пам'яті ядра при обробці UDP-пакетів з нульовим заповненням.

Проблема зачіпає лише ядро 5.0, тому що підтримка GRO для UDP-сокетів була реалізована у листопаді минулого року і встигла потрапити лише до останнього стабільного випуску ядра. Технологія GRO дозволяє прискорити обробку великої кількості вхідних пакетів, завдяки агрегування декількох пакетів у великі блоки, що не вимагають окремої обробки кожного пакета.
Для TCP проблема не проявляється, тому що для даного протоколу не підтримується агрегування пакетів без payload.

Вразливість поки що виправлена ​​тільки у вигляді патча, коригуюче оновлення ще не опубліковано (вчорашнє оновлення 5.0.11 виправлення не увійшло). З дистрибутивів ядро ​​5.0 встигло увійти до складу Fedora 30, Ubuntu 19.04, Arch Linux, Gentoo та інших безперервно оновлюваних дистрибутивів. Debian, Ubuntu 18.10 та молодше, RHEL/CentOS и SUSE/openSUSE проблема не торкається.

Проблема була знайдена в результаті використання створених Google автоматизованої системи fuzzing-тестування syzbot та аналізатора KASAN (KernelAddressSanitizer), націленого на виявлення помилок при роботі з пам'яттю та фактів некоректного звернення до пам'яті, таких як звернення до звільнених областей пам'яті та розміщення коду в області пам'яті, не призначені для подібних маніпуляцій.

Джерело: opennet.ru

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