В ядре Linux выявлена (https://seclists.org/oss-sec/2019/q2/86) уязвимость (CVE-2019-11683 (https://security-tracker.debian.org/tracker/CVE-2019-11683)), позволяющая удалённо вызвать отказ в обслуживании через отправку специально оформленных UDP-пакетов (packet-of-death). Проблема вызвана ошибкой в обработчике udp_gro_receive_segment (net/ipv4/udp_offload.c) с реализацией технологии GRO (Generic Receive Оffload) и может привести к повреждению содержимого областей памяти ядра при обработке UDP-пакетов с нулевым заполнением (пустой payload).
Проблема затрагивает только ядро 5.0 (https://www.opennet.ru/opennews/art.shtml?num=50201), так как поддержка GRO для UDP-сокетов была реализована (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/lin...) в ноябре прошлого года и успела попасть только в последний стабильный выпуск ядра. Технология GRO позволяет ускорить обработку большого числа входящих пакетов, благодаря агрегированию нескольких пакетов в более крупные блоки, не требующие отдельной обработки каждого пакета.
Проблема пока исправлена только в виде патча (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/lin...), корректирующее обновление пока не опубликовано (во вчерашнее обновление 5.0.11 исправление не вошло (https://cdn.kernel.org/pub/linux/kernel/v5.x/ChangeLog-5.0.11)). Из дистрибутивов ядро 5.0 успело войти в состав Fedora 30 (https://bodhi.fedoraproject.org/updates/?releases=F30&type=s...), Arch Linux (https://www.archlinux.org/packages/core/x86_64/linux/), Gentoo (https://packages.gentoo.org/packages/sys-kernel/gentoo-sources) и других непрерывно обновляемых дистрибутивов. Debian, Ubuntu (https://people.canonical.com/~ubuntu-security/cve/2019/CVE-2...), RHEL/CentOS (https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2019-11683) и SUSE (https://bugzilla.novell.com/show_bug.cgi?id=CVE-2019-11683) проблема не затрагивает.
Проблема была найдена (http://patchwork.ozlabs.org/patch/1042902/) в результате использования разработанного компанией Google анализатора KASAN (https://github.com/google/kasan/wiki) (KernelAddressSanitizer), нацеленного на выявление ошибок при работе с памятью и фактов некорректного обращения к памяти, таких как обращения к освобождённым областям памяти и помещение кода в области памяти, не предназначенные для подобных манипуляций. KASAN был добавлен в состав ядра 4.0 (https://www.opennet.ru/opennews/art.shtml?num=42029) и включается опцией "CONFIG_KASAN=y".
URL: https://seclists.org/oss-sec/2019/q2/86
Новость: https://www.opennet.ru/opennews/art.shtml?num=50620