Уразлівасць у IPv6-стэку ядра Linux, якая дапускае выдаленае выкананне кода

Раскрыта інфармацыя аб уразлівасці CVE-2023-6200) у сеткавым стэку ядра Linux, якая пры пэўных абставінах дазваляе зламысніку з лакальнай сеткі дамагчыся выканання свайго кода праз адпраўку спецыяльна аформленага пакета ICMPv6 з паведамленнем RA (Router Advertisement), прызначаным для анансавання інфармацыі.

Уразлівасць можа быць эксплуатаваная толькі з лакальнай сеткі і выяўляецца ў сістэмах з уключанай падтрымкай IPv6 і актыўным sysctl-параметрам "net.ipv6.conf.<імя_сеткавага_інтэрфейсу>.accept_ra" (можна праверыць камандай "sysctl net.ipv6.conf" grep accept_ra , які па змаўчанні адключаны ў RHEL і Ubuntu для вонкавых сеткавых інтэрфейсаў, але ўключаны для інтэрфейсу loopback, што дапушчае напад з той жа сістэмы.

Уразлівасць выклікана станам гонкі пры апрацоўцы зборшчыкам смецця састарэлых запісаў fib6_info, што можа прывесці да звароту да ўжо вызваленай вобласці памяці (use-after-free). Пры атрыманні пакета ICMPv6 з паведамленнем аб анонсе маршрутызатара (RA, Router Advertisement) сеткавы стэк выклікае функцыю ndisc_router_discovery(), якая пры наяўнасці ў RA-паведамленні дадзеных аб часе жыцця маршруту выклікае функцыю fib6_set_expires() і запаўняе структуру gc. Для чысткі састарэлых запісаў ужываецца функцыя fib6_clean_expires(), якая адлучае запіс у gc_link і чысціць памяць, выкарыстоўваную структурай fib6_info. Пры гэтым ёсць пэўны момант, калі памяць пад структуру fib6_info ужо вызвалена, але спасылка на яе працягвае знаходзіцца ў структуры gc_link.

Уразлівасць выяўляецца пачынальна з галінкі 6.6 і ўхіленая ў версіях 6.6.9 і 6.7. Статус ухілення ўразлівасці ў дыстрыбутывах можна ацаніць на дадзеных старонках: Debian, Ubuntu, SUSE, RHEL, Fedora, Arch Linux, Gentoo, Slackware. З дыстрыбутываў, у якіх пастаўляюцца пакеты з ядром 6.6, можна адзначыць Arch Linux, Gentoo, Fedora, Slackware, OpenMandriva і Manjaro, у астатніх дыстрыбутывах не выключана бэкпартаванне змены з памылкай у пакеты з больш старымі галінкамі ядра (напрыклад, у Debian згадваецца, што уразлівы пакет з ядром 6.5.13, у той час як праблемная змена з'явілася ў галінцы 6.6). У якасці абыходнага шляху абароны можна адключыць IPv6 або прысвоіць значэнне 0 параметрам "net.ipv6.conf.*.accept_ra".

Крыніца: opennet.ru

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