DirtyDecrypt — o nouă vulnerabilitate din clasa Copy Fail, care oferă drepturi de root în Linux

Okernel Linux a fost identificată o vulnerabilitate similară cu vulnerabilitățile Copy Fail, Dirty Frag și Fragnesia, care permite unui utilizator fără privilegii să obțină drepturi de root prin rescrierea datelor din memoria cache a paginilor. Vulnerabilității i s-a dat numele de cod DirtyDecrypt (problema este, de asemenea, menționată sub numele DirtyCBC). Un prototip de exploit este disponibil.

Identificatorul CVE nu este menționat în notele exploitului, fiind specificat doar că cercetătorii au identificat problema pe 9 mai, după care au informat dezvoltatorii kernel-ului, care au răspuns că descoperirea lor duplicatează un alt raport despre o vulnerabilitate deja reparată. Deoarece patch-ul cu corecția a fost deja inclus în kernel, cercetătorii au decis să publice exploit-ul dezvoltat de ei. Judecând după descrierea din interiorul exploit-ului, acesta folosește vulnerabilitatea CVE-2026-31635, corectarea căreia a fost acceptată în kernel în aprilie și a fost inclusă în ramura 7.0.0 și în versiunea 6.18.23, formată pe 18 aprilie. Problema apare începând cu kernel-ul 6.16.

La fel ca în cazul seriei de vulnerabilități Dirty Frag, noua vulnerabilitate este prezentă în driver-ul RxRPC, care implementează familia de socket-uri AF_RXRPC și protocolul RPC omonim, care funcționează pe UDP. Problema este cauzată de o eroare în verificarea dimensiunii datelor în funcția rxgk_verify_response() — în loc de verificarea „if (auth_len > len)”, codul a specificat „if (auth_len < len)”, ceea ce a dus la transmiterea în funcția rxgk_decrypt_skb() a datelor cu o dimensiune mai mare decât cea admisă. La executarea funcției rxgk_decrypt_skb(), decriptarea datelor se realiza prin introducerea modificărilor direct în memoria cache a paginilor pentru a evita buffering-ul suplimentar. Din cauza verificării greșite a dimensiunii, a apărut posibilitatea rescrierii datelor în memoria cache a paginilor la un offset ales.

Exploatarea vulnerabilității constă în citirea unui fișier de program cu un atribut suid root (pentru a fi reținut în memoria cache a paginilor) și înlocuirea în memoria cache a paginilor a unei părți din codul programului cu cod pentru a iniția /usr/bin/sh. Execuția ulterioară a programului va face să fie încărcat în memorie nu fișierul executabil original de pe suport, ci o copie modificată din memoria cache. Ca programe suid prevăzute în exploit, se poate folosi „/usr/bin/su”, „/bin/su”, „/usr/bin/mount”, „/usr/bin/passwd” și „/usr/bin/chsh”.

Pentru exploatarea vulnerabilității în cadrul compilării kernelului, opțiunea CONFIG_RXGK trebuie să fie activă, iar pentru încărcarea automată trebuie să fie disponibil modulul kernel rxrpc.ko (în unele sisteme, acesta nu este compilat). Statusul remedierii vulnerabilităților în distribuții poate fi evaluat pe aceste pagini: Debian, Ubuntu, SUSE/openSUSE, RHEL, Arch, Fedora. Ca o ocolire de protecție, se poate bloca încărcarea modulului kernel rxrpc:

sh -c «printf ‘install rxrpc /bin/false\n’ > /etc/modprobe.d/dirtydecrypt.conf; rmmod rxrpc 2>/dev/null; true»

De asemenea, se poate menționa publicația din lista de discuții a dezvoltatorilor kernelului Linux a patch-urilor care dezactivează complet în crypto API (AF_ALG) optimizările care utilizează acces direct la cache-ul paginilor în timpul decriptării cu algoritmii „skcipher” și „aead”. Optimizarile exclud excesul de buffering al datelor, dar creează riscuri de apariție a unor vulnerabilități grave. Se preconizează că dezactivarea lor va duce doar la o scădere nesemnificativă a performanței din cauza apariției unei operațiuni suplimentare de copiere în un buffer separat. Patch-urile sunt acceptate de către întreținătorul subsistemului crypto API și sunt incluse în ramura „cryptodev”, în care se dezvoltă capacitățile pentru a fi integrate în versiunile viitoare ale kernelului Linux.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster