Уязвимость в ядре Linux, позволяющая вызвать крах через отправку UDP-пакета

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

Проблема затрагивает только ядро 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

Добавить комментарий