Уразлівасць у ядры 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

Дадаць каментар