Udaljena ranjivost u implementaciji TIPC protokola u Linux kernelu

Prepoznata je kritična ranjivost (CVE-2021-43267) u implementaciji mrežnog protokola TIPC (Transparent Inter-Process Communication) isporučenog u jezgri Linuxa, koji vam omogućuje daljinsko izvršavanje koda s privilegijama jezgre slanjem posebno dizajniranog mrežni paket. Opasnost od problema ublažena je činjenicom da je za napad potrebno eksplicitno uključivanje TIPC podrške u sustavu (učitavanje i konfiguriranje tipc.ko kernel modula), što se ne radi prema zadanim postavkama u nespecijaliziranim distribucijama Linuxa.

TIPC protokol je podržan od Linux kernela 3.19, ali je kod koji dovodi do ranjivosti uključen u kernel 5.10. Ranjivost je popravljena u kernelima 5.15.0, 5.10.77 i 5.14.16. Problem se pojavljuje i još nije riješen u Debianu 11, Ubuntu 21.04/21.10, SUSE (u još neobjavljenoj grani SLE15-SP4), RHEL-u (još nije detaljno navedeno je li ranjivi popravak prenesen unatrag) i Fedori. Ažuriranje kernela već je objavljeno za Arch Linux. Distribucije s kernelom starijim od 5.10, kao što su Debian 10 i Ubuntu 20.04, nisu zahvaćene problemom.

TIPC protokol izvorno je razvio Ericsson, dizajniran za organiziranje međuprocesne komunikacije u klasteru i aktivira se uglavnom na čvorovima klastera. TIPC može raditi preko Etherneta ili UDP-a (mrežni priključak 6118). Kod rada preko Etherneta napad se može izvesti iz lokalne mreže, a kod korištenja UDP-a iz globalne mreže ako port nije pokriven vatrozidom. Napad također može izvršiti neprivilegirani lokalni korisnik hosta. Za aktiviranje TIPC-a morate preuzeti tipc.ko kernel modul i konfigurirati vezanje na mrežno sučelje pomoću netlink-a ili uslužnog programa tipc.

Ranjivost se očituje u funkciji tipc_crypto_key_rc i uzrokovana je nedostatkom odgovarajuće provjere korespondencije između podataka navedenih u zaglavlju i stvarne veličine podataka prilikom raščlanjivanja paketa s tipom MSG_CRYPTO, koji se koristi za dobivanje ključeva enkripcije od drugih čvorova u klasteru u svrhu naknadne dešifriranja poruka poslanih s tih čvorova. Veličina podataka kopiranih u memoriju izračunava se kao razlika između vrijednosti polja s veličinom poruke i veličine zaglavlja, ali bez uzimanja u obzir stvarne veličine naziva algoritma za šifriranje i sadržaja ključ prenesen u poruci. Pretpostavlja se da je veličina naziva algoritma fiksna, a za ključ se dodatno prosljeđuje zaseban atribut s veličinom, a napadač može navesti vrijednost u ovom atributu koja se razlikuje od stvarne, što će dovesti do pisanja rep poruke izvan dodijeljenog međuspremnika. struct tipc_aead_key { char alg_name[TIPC_AEAD_ALG_NAME]; unsigned int keylen; /* u bajtovima */ char key[]; };

Udaljena ranjivost u implementaciji TIPC protokola u Linux kernelu


Izvor: opennet.ru

Dodajte komentar