Linuxi tuumisse kaasatud TIPC (Transparent Inter-process Communication) võrgu protokolli teostuses on tuvastatud kriitiline haavatavus (CVE-2021-43267), mis võimaldab kaugjuhtimise teel spetsiaalselt vormistatud võrgupaketi saatmise kaudu saavutada koodi täitmist tuuma õigustes. Probleemi oht on pehmendatud, kuna rünnaku teostamiseks on vajalik TIPC toe selge sisselülitamine süsteemis (tipc.ko tuumamooduli laadimine ja seadistamine), mida tavalistes Linuxi jaotustes vaikimisi ei tehta.
TIPC protokolli toetatakse alates Linuxi 3.19 tuumast, kuid haavatavust põhjustav kood oli kaasatud tuuma 5.10 koostisse. Haavatavus on kõrvaldatud tuumades 5.15.0, 5.10.77 ja 5.14.16. Probleem ilmneb ja pole veel lahendatud Debian 11, Ubuntu 21.04/21.10, SUSE (veel välja antud SLE15-SP4 haru) ja RHEL (praegu ei ole täpsustatud, kas haavatavuse parandust on tagasi toodud) ning Fedora puhul. Tuumauuendus on juba välja antud Arch Linuxile. Jaotised, mille tuum on vanem kui 5.10, nagu Debian 10 ja Ubuntu 20.04, ei ole probleemile vastuvõtlikud.
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.
Haavatavus ilmneb funktsioonis tipc_crypto_key_rc ning see on põhjustatud sobiva vastavuse kontrolli puudumisest, kui võrrelda pealkirjas toodud andmemahu suurust tegeliku andmemahu suurusega MSG_CRYPTO tüüpi pakettide analüüsi ajal, mis on ette nähtud šifreerimisvõtmete saamiseks muudelt sõlmedelt klastris eesmärgiga hiljem dešifreerida neid sõlmedelt saadetud sõnumeid. Mällu kopeeritava andme suurus arvutatakse sõnumi suuruse ja pealkirja suuruse väljade väärtuste erinevusena, kuid mitte arvesse võttes tegelikku suurust, mis edastatakse sõnumis šifreerimisalgoritmi nime ja võtme sisuga. Eeldatakse, et algoritmi nimi on fikseeritud suurusega, ja võtme jaoks edastatakse eraldi attribuut suurusega, ning ründaja võib näidata sellesse atribuuti väärtust, mis erineb tegelikust, mis viib sõnumi sabade kirjutamiseni väljapoole reserveeritud puhvrit. struct tipc_aead_key { char alg_name[TIPC_AEAD_ALG_NAME]; unsigned int keylen; /* baitides */ char key[]; };

Allikas: opennet.ru
