Luka w jądrze Linuksa, która może spowodować awarię poprzez wysłanie pakietu UDP

W jądrze Linuksa zidentyfikowane słaby punkt (CVE-2019-11683), która umożliwia zdalne wywołanie odmowy usługi poprzez wysłanie specjalnie zaprojektowanych pakietów UDP (pakiet śmierci). Problem jest spowodowany błędem w obsłudze udp_gro_receive_segment (net/ipv4/udp_offload.c) przy implementacji technologii GRO (Generic Receive Offload) i może prowadzić do uszkodzenia zawartości obszarów pamięci jądra podczas przetwarzania pakietów UDP z zerowym dopełnieniem (pusty ładunek).

Problem dotyczy tylko jądra 5.0ponieważ obsługa GRO dla gniazd UDP była wdrożone w listopadzie ubiegłego roku i udało mi się dostać jedynie do najnowszej stabilnej wersji jądra. Technologia GRO pozwala przyspieszyć przetwarzanie dużej liczby przychodzących pakietów poprzez agregację wielu pakietów w większe bloki, które nie wymagają osobnego przetwarzania każdego pakietu.
W przypadku protokołu TCP problem nie występuje, ponieważ protokół ten nie obsługuje agregacji pakietów bez ładunku.

Luka została na razie naprawiona jedynie w formularzu skrawek, aktualizacja korygująca nie została jeszcze opublikowana (wczorajsza aktualizacja 5.0.11 fix nie wliczone). Z zestawów dystrybucyjnych udało się włączyć jądro 5.0 Fedora 30, Ubuntu 19.04, Arch Linux, Gentoo i inne stale aktualizowane dystrybucje. Debian, Ubuntu 18.10 i starsze, RHEL/CentOS и SUSE/openSUSE problem nie dotyczy.

W rezultacie problem został znaleziony używania Zautomatyzowany system testowania fuzzingu stworzony przez Google syzbot i analizator KASAN (KernelAddressSanitizer), mający na celu identyfikację błędów podczas pracy z pamięcią oraz faktów nieprawidłowego dostępu do pamięci, takich jak dostęp do zwolnionych obszarów pamięci i umieszczanie kodu w obszarach pamięci nieprzeznaczonych do takich manipulacji.

Źródło: opennet.ru

Dodaj komentarz