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

У Netfilter, падсістэме ядра Linux, выкарыстоўванай для фільтравання і мадыфікацыі сеткавых пакетаў, выяўленая ўразлівасць (CVE-2022-25636), якая дазваляе выканаць код на ўзроўні ядра. Заяўлена аб падрыхтоўцы прыкладу эксплоіту, які дазваляе лакальнаму карыстачу падняць свае прывілеі ў Ubuntu 21.10 c адключаным механізмам абароны KASLR. Праблема выяўляецца пачынальна з ядра 5.4. Выпраўленне пакуль даступна ў выглядзе патча (карэктныя выпускі ядра не сфарміраваны). Прасачыць за публікацый абнаўлення пакетаў у дыстрыбутывах можна на дадзеных старонках: Debian, SUSE, Ubuntu, RHEL, Fedora, Gentoo, Arch Linux.

Уразлівасць выклікана памылкай вылічэнні памеру масіва flow->rule->action.entries у функцыі nft_fwd_dup_netdev_offload (вызначана ў файле net/netfilter/nf_dup_netdev.c), якая можа прывесці да запісу кантраляваных атакавалым дадзеных у вобласць памяці за мяжой. Памылка выяўляецца пры наладзе правіл "dup" і "fwd" у ланцужках, для якіх ужываецца апаратнае паскарэнне апрацоўкі пакетаў (offload). Бо перапаўненне ўзнікае на этапе да стварэння правіла пакетнага фільтра і праверкі падтрымкі offload, уразлівасць таксама дастасавальная і для сеткавых прылад, не якія падтрымліваюць апаратнае паскарэнне, такіх як loopback-інтэрфейс.

Адзначаецца, што праблема досыць простая ў эксплуатацыі, бо якія выходзяць за межы буфера значэння могуць перазапісаць паказальнік на структуру net_device, а дадзеныя аб перазапісаным значэнні вяртаюцца ў прастору карыстача, што дазваляе пазнаць неабходныя для здзяйснення нападу адрасу ў памяці. Для эксплуатацыі ўразлівасці патрабуецца стварэнне вызначаных правіл у nftables, што магчыма толькі пры наяўнасці прывілеяў CAP_NET_ADMIN, якія могуць быць атрыманы непрывілеяваным карыстачом у асобнай сеткавай прасторы імёнаў (network namespaces). Уразлівасць таксама можа быць выкарыстана для нападаў на сістэмы кантэйнернай ізаляцыі.

Крыніца: opennet.ru

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