Выдаленая ўразлівасць у ядры Linux, якая выяўляецца пры выкарыстанні пратаколу TIPC

У модулі ядра Linux, які забяспечвае працу сеткавага пратакола TIPC (Transparent Inter-process Communication), выяўленая ўразлівасць (CVE-2022-0435), патэнцыйна якая дазваляе выканаць свой код на ўзроўні ядра праз адпраўку адмыслова аформленага сеткавага пакета. Праблема закранае толькі сістэмы з загружаным модулем ядра tipc.ko і настроеным стэкам TIPC, які звычайна выкарыстоўваецца ў кластарах і па змаўчанні не актываваны ў неспецыялізаваных дыстрыбутывах Linux.

Адзначаецца, што пры зборцы ядра ў рэжыме "CONFIG_FORTIFY_SRC=y" (ужываецца ў RHEL), які дадае дадатковыя праверкі меж у функцыю memcpy(), эксплуатацыя абмяжоўваецца аварыйным прыпынкам працы (ядро ўпадае ў стан panic). Пры выкананні без дадатковых праверак і пры ўцечцы звестак аб канарэечных пазнаках, якія ўжываюцца для абароны стэка, праблема можа быць скарыстана для выдаленага выканання кода з правамі ядра. Якія выявілі праблему даследнікі заяўляюць, што тэхніка эксплуатацыі трывіяльная і будзе расчынена пасля паўсюднага ўхілення ўразлівасці ў дыстрыбутывах.

Уразлівасць выклікана перапаўненнем стэка, які адбываецца пры апрацоўцы пакетаў, значэнне поля з лікам вузлоў удзельнікаў дамена, у якіх перавышае 64. Для захоўвання параметраў вузлоў у модулі tipc.ko выкарыстоўваецца фіксаваны масіў «u32 members[64]», але падчас апрацоўкі паказанага ў пакеце нумара вузла не выконваецца праверка значэння «member_cnt», што дазваляе выкарыстоўваць значэнні больш за 64 для кантраляванага перазапісу дадзеных у вобласці памяці, які ідзе ў стэку пасля структуры «dom_bef».

Якая прыводзіць да ўразлівасці памылка была занесеная 15 чэрвеня 2016 гады і ўвайшла ў склад ядра Linux 4.8. Уразлівасць ухілена ў выпусках ядра Linux 5.16.9, 5.15.23, 5.10.100, 5.4.179, 4.19.229, 4.14.266 і 4.9.301. У ядрах большасці дыстрыбутываў праблема пакуль застаецца нявыпраўленай: RHEL, Debian, Ubuntu, SUSE, Fedora, Gentoo, Arch Linux.

Пратакол TIPC першапачаткова распрацаваны кампаніяй Ericsson, прызначаны для арганізацыі міжпрацэснага ўзаемадзеяння ў кластары і актывуецца галоўнай выявай на вузлах кластараў. TIPC можа працаваць як па-над Ethernet, так і па-над UDP (сеткавы порт 6118). У выпадку працы па-над Ethernet напад можа быць здзейснена з лакальнай сеткі, а пры выкарыстанні UDP - з глабальнай сеткі, калі порт не прычынены міжсеткавым экранам. Атака таксама можа быць здзейснена непрывілеяваным лакальным карыстальнікам хаста. Для актывацыі TIPC неабходна загрузка модуля ядра tipc.ko і налада прывязкі да сеткавага інтэрфейсу пры дапамозе netlink або ўтыліты tipc.

Крыніца: opennet.ru

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