Oddaljena ranljivost pri implementaciji protokola TIPC v jedru Linuxa

Kritična ranljivost (CVE-2021-43267) je bila ugotovljena pri izvajanju omrežnega protokola TIPC (Transparent Inter-Process Communication), dobavljenega v jedru Linuxa, ki vam omogoča oddaljeno izvajanje kode s privilegiji jedra s pošiljanjem posebej zasnovanega omrežni paket. Nevarnost težave zmanjša dejstvo, da napad zahteva eksplicitno vklop podpore TIPC v sistemu (nalaganje in konfiguracija jedrnega modula tipc.ko), kar v nespecializiranih distribucijah Linuxa ni privzeto.

Protokol TIPC je podprt od jedra Linuxa 3.19, vendar je bila koda, ki vodi do ranljivosti, vključena v jedro 5.10. Ranljivost je bila odpravljena v jedrih 5.15.0, 5.10.77 in 5.14.16. Težava se pojavi in ​​še ni bila odpravljena v Debian 11, Ubuntu 21.04/21.10, SUSE (v še neizdani veji SLE15-SP4), RHEL (ni še podrobno pojasnjeno, ali je bil ranljivi popravek prenesen nazaj) in Fedora. Posodobitev jedra je že bila izdana za Arch Linux. Težava ne vpliva na distribucije z jedrom, starejšim od 5.10, kot sta Debian 10 in Ubuntu 20.04.

Protokol TIPC je prvotno razvil Ericsson, zasnovan je za organizacijo medprocesne komunikacije v gruči in se aktivira predvsem na vozliščih gruče. TIPC lahko deluje prek Etherneta ali UDP (omrežna vrata 6118). Pri delu preko Etherneta se napad lahko izvede iz lokalnega omrežja, pri uporabi UDP pa iz globalnega omrežja, če vrata niso pokrita s požarnim zidom. Napad lahko izvede tudi neprivilegiran lokalni uporabnik gostitelja. Če želite aktivirati TIPC, morate prenesti modul jedra tipc.ko in konfigurirati vezavo na omrežni vmesnik s pomočjo netlink ali pripomočka tipc.

Ranljivost se kaže v funkciji tipc_crypto_key_rc in je posledica pomanjkanja ustreznega preverjanja ujemanja med podatki, navedenimi v glavi, in dejansko velikostjo podatkov pri razčlenjevanju paketov z vrsto MSG_CRYPTO, ki se uporablja za pridobivanje šifrirnih ključev iz drugih vozlišč v gručo z namenom naknadnega dešifriranja sporočil, poslanih iz teh vozlišč. Velikost podatkov, kopiranih v pomnilnik, se izračuna kot razlika med vrednostmi polj z velikostjo sporočila in velikostjo glave, vendar brez upoštevanja dejanske velikosti imena šifrirnega algoritma in vsebine ključ, posredovan v sporočilu. Predpostavlja se, da je velikost imena algoritma fiksna, za ključ pa je dodatno posredovan ločen atribut z velikostjo, napadalec pa lahko v tem atributu določi vrednost, ki se razlikuje od dejanske, kar bo privedlo do pisanja rep sporočila zunaj dodeljenega medpomnilnika. struct tipc_aead_key { char alg_name[TIPC_AEAD_ALG_NAME]; unsigned int keylen; /* v bajtih */ char key[]; };

Oddaljena ranljivost pri implementaciji protokola TIPC v jedru Linuxa


Vir: opennet.ru

Dodaj komentar