Linuxi tuumamoodulis, mis pakub TIPC (Transparent Inter-process Communication) võrgu protokolli toimimist, on tuvastatud haavatavus (CVE-2022-0435), mis võimaldab potentsiaalselt käivitada oma koodi tuuma tasemel spetsiaalselt vormindatud võrgu paketi saatmise kaudu. Probleem puudutab ainult süsteeme, kus on laaditud tipc.ko tuumamoodul ja seadistatud TIPC päritolu, mida kasutatakse tavaliselt klastrites ja mis pole vaikimisi aktiveeritud mitte-spetsialiseeritud Linuxi distributsioonides.
On märgitud, et tuuma koostamisel režiimis „CONFIG_FORTIFY_SRC=y” (rakendub RHEL-is), mis lisab memcpy() funktsiooni piirikontrolli, piirneb haavatavuse ärakasutamine süsteemi kokkuvarisemisega (tuum satub panic olekusse). Kui täiendavaid kontrolle pole ja kanarisildide, mis kaitsevad stack-i, teabe lekkimise korral, võib probleemi kasutada kaugkoodide täitmiseks tuuma õigustega. Probleemi tuvastanud teadlased väidavad, et ärakasutustehnika on triviaalne ning see paljastatakse pärast haavatavuse laialdast kõrvaldamist distributsioonides.
Haavatavus tuleneb virnastuse ülevoolust, mis toimub paketide töötlemisel, kui osalejate sõlmede arvu väli ületab 64. domeeniSõlmede parameetrite salvestamiseks moodulis tipc.ko kasutatakse fikseeritud massiivi «u32 members[64]», kuid pakendis näidatud sõlme numbri töötlemise käigus ei kontrollita «member_cnt» väärtust, mis võimaldab kasutada väärtusi, mis on suuremad kui 64, et kontrollitult üle kirjutada andmeid mälus, mis asub struktuuri «dom_bef» järel virnas.
Haavatavuse põhjustanud viga tehti 15. juunil 2016. aastal ja see lisati Linuxi tuumasse 4.8. Haavatavus on likvideeritud Linuxi tuumaväljaannetes 5.16.9, 5.15.23, 5.10.100, 5.4.179, 4.19.229, 4.14.266 ja 4.9.301. Enamikus jaotustes jääb probleem veel lahendamata: RHEL, Debian, Ubuntu, SUSE, Fedora, Gentoo, Arch Linux.
TIPC protokoll on algselt välja töötatud Ericsson'i poolt, et korraldada protsessidevahelist suhtlemist klastris ja aktiveeritakse peamiselt klastrite sõlmedes. TIPC võib töötada nii Etherneti kui ka UDP (võrgupordil 6118) peal. Kui töötab Etherneti peal, võib rünnak toimuda lokaalses võrgus, ja kui kasutatakse UDP-d, siis globaalses võrgus, kui port ei ole tulemüüriga suletud. Rünnak võib toimuda ka privileege mitteomava kohaliku kasutaja poolt. TIPC aktiveerimiseks on vajalik laadida kernelimoodul tipc.ko ja seadistada sidumine võrgu liidesele netlink'i või tipc utiliidi abil.
Allikas: opennet.ru
