În modulul kernelului Linux, care asigură funcționarea protocolului de rețea TIPC (Transparent Inter-process Communication), a fost descoperită o vulnerabilitate (CVE-2022-0435), care permite, potențial, executarea unui cod propriu la nivel de kernel prin trimiterea unui pachet de rețea special format. Problema afectează doar sistemele cu modulul kernel tipc.ko încărcat și cu un stack TIPC configurat, care este, de obicei, utilizat în clustere și, în mod implicit, nu este activat în distribuțiile Linux nespecializate.
Se observă că, la compilarea kernelului în modul „CONFIG_FORTIFY_SRC=y” (folosit în RHEL), care adaugă verificări suplimentare ale limitelor în funcția memcpy(), exploatarea este limitată la o oprire de urgență a funcționării (kernelul intră în stare de panică). Când este executată fără verificări suplimentare și în condițiile unei scurgeri de informații despre markerii canari utilizați pentru protecția stivei, problema poate fi folosită pentru executarea de cod de la distanță cu privilegii de kernel. Cercetătorii care au identificat problema afirmă că tehnica de exploatare este trivială și va fi dezvăluită după ce vulnerabilitatea va fi remediată pe scară largă în distribuții.
Vulnerabilitatea este cauzată de un overflow de stivă care apare în timpul procesării pachetelor, unde valoarea câmpului cu numărul de noduri participante domeniu, depășește 64. Pentru stocarea parametrilor nodurilor în modulul tipc.ko este folosit un array fix „u32 members[64]”, iar în timpul procesării numărului de nod specificat în pachet nu se efectuează verificarea valorii „member_cnt”, ceea ce permite utilizarea valorilor mai mari de 64 pentru a suprascrie controlat datele în zona de memorie care urmează în stivă după structura „dom_bef”.
Eroarea care conduce la vulnerabilitate a fost introdusă pe 15 iunie 2016 și a fost inclusă în kernelul Linux 4.8. Vulnerabilitatea a fost remediată în versiunile kernelului Linux 5.16.9, 5.15.23, 5.10.100, 5.4.179, 4.19.229, 4.14.266 și 4.9.301. În kernelurile majorității distribuțiilor, problema rămâne, deocamdată, nerezolvată: RHEL, Debian, Ubuntu, SUSE, Fedora, Gentoo, Arch Linux.
Protocolul TIPC a fost dezvoltat inițial de compania Ericsson, fiind destinat organizării interacțiunii între procese în cluster și este activat în principal pe nodurile clusterelor. TIPC poate funcționa atât pe Ethernet, cât și pe UDP (portul de rețea 6118). În cazul funcționării pe Ethernet, un atac poate fi efectuat din rețeaua locală, iar în cazul utilizării UDP — din rețeaua globală, dacă portul nu este protejat de un firewall. Atacul poate fi efectuat și de un utilizator local fără privilegii ale gazdelor. Activarea TIPC necesită încărcarea modulului de nucleu tipc.ko și configurarea asocierii cu interfața de rețea prin netlink sau utilitarul tipc.
Sursa: opennet.ro
