Vzdialená zraniteľnosť pri implementácii protokolu TIPC v jadre Linuxu

Bola identifikovaná kritická zraniteľnosť (CVE-2021-43267) v implementácii sieťového protokolu TIPC (Transparent Inter-process Communication) dodávaného v linuxovom jadre, ktorý vám umožňuje vzdialene spúšťať váš kód s oprávneniami jadra odoslaním špeciálne navrhnutého sieťový paket. Nebezpečenstvo problému je zmiernené tým, že útok vyžaduje explicitné povolenie podpory TIPC v systéme (načítanie a konfigurácia modulu jadra tipc.ko), čo sa v nešpecializovaných linuxových distribúciách štandardne nerobí.

Protokol TIPC je podporovaný od jadra Linuxu 3.19, ale kód vedúci k zraniteľnosti bol zahrnutý v jadre 5.10. Zraniteľnosť bola opravená v jadrách 5.15.0, 5.10.77 a 5.14.16. Problém sa objavuje a ešte nie je opravený v Debian 11, Ubuntu 21.04/21.10, SUSE (v zatiaľ nevydanej vetve SLE15-SP4), RHEL (zatiaľ nie je podrobné, či bola oprava zraniteľnosti spätne portovaná) a Fedora. Aktualizácia jadra už bola vydaná pre Arch Linux. Distribúcie s jadrom starším ako 5.10, ako napríklad Debian 10 a Ubuntu 20.04, nie sú týmto problémom ovplyvnené.

Protokol TIPC bol pôvodne vyvinutý spoločnosťou Ericsson, navrhnutý na organizovanie medziprocesovej komunikácie v klastri a je aktivovaný hlavne na uzloch klastra. TIPC môže pracovať cez Ethernet alebo UDP (sieťový port 6118). Pri práci cez Ethernet môže byť útok vykonaný z lokálnej siete a pri použití UDP z globálnej siete, ak port nie je pokrytý firewallom. Útok môže vykonať aj neprivilegovaný lokálny používateľ hostiteľa. Pre aktiváciu TIPC je potrebné stiahnuť modul jadra tipc.ko a nakonfigurovať väzbu na sieťové rozhranie pomocou netlinku alebo utility tipc.

Zraniteľnosť sa prejavuje vo funkcii tipc_crypto_key_rc a je spôsobená nedostatočným overením súladu medzi údajmi uvedenými v hlavičke a skutočnou veľkosťou údajov pri analýze paketov s typom MSG_CRYPTO, ktoré sa používajú na získanie šifrovacích kľúčov z iných uzlov. v klastri za účelom následného dešifrovania správ odoslaných z týchto uzlov. Veľkosť údajov skopírovaných do pamäte sa vypočíta ako rozdiel medzi hodnotami polí s veľkosťou správy a veľkosťou hlavičky, ale bez zohľadnenia skutočnej veľkosti názvu šifrovacieho algoritmu a obsahu kľúč prenášaný v správe. Predpokladá sa, že veľkosť názvu algoritmu je pevná a pre kľúč sa dodatočne odovzdá samostatný atribút s veľkosťou a útočník môže v tomto atribúte zadať hodnotu odlišnú od skutočnej, čo povedie k zápisu koniec správy za pridelenou vyrovnávacou pamäťou. struct tipc_aead_key { char alg_name[TIPC_AEAD_ALG_NAME]; unsigned int keylen; /* v bajtoch */ kľúč char[]; };

Vzdialená zraniteľnosť pri implementácii protokolu TIPC v jadre Linuxu


Zdroj: opennet.ru

Pridať komentár