Copy Fail — o vulnerabilitate în nucleul Linux, care permite obținerea root în majoritatea distribuțiilor.

Cercetătorii de la Xint au identificat o vulnerabilitate în nucleul Linux (CVE-2026-31431) care permite unui utilizator fără privilegii să obțină acces root la sistem. Problema a fost denumită Copy Fail. Un prototip de exploit este disponibil. Posibilitatea exploatării vulnerabilității a fost demonstrată pe Ubuntu 24.04 LTS, Amazon Linux 2023, RHEL 10.1 și SUSE 16, însă se notează că pachetele cu nucleul din alte distribuții, inclusiv Debian, Arch, Fedora, Rocky și Alma, sunt de asemenea vulnerabile, dar nu au fost testate separat.

Vulnerabilitatea este cauzată de o eroare logică în API-ul crypto (AF_ALG) al nucleului Linux, comisă în timpul unei optimizări din 2017 care elimina suprabufferizarea prin execuția operațiunilor de criptare blocare AEAD (Autenticare Criptare cu Date Asociate) in-place. Problema a apărut din utilizarea imprudentă a funcției splice(), care transferă date între descriptorii de fișiere și pipe-uri fără a copia, prin transmiterea referințelor la elementele din cache-ul paginilor. După optimizare, când un fișier este transferat într-un socket AF_ALG pentru decriptare, în structura scatterlist se scria nu o referință la un buffer separat, ci o referință directă la elementele din cache-ul paginilor ale nucleului cu datele fișierului.

Ulterior, în procesul de decriptare, datele legate prin referință ale etichetei de autentificare ("authentication tag") erau amestecate cu datele adiționale de autentificare copiate în buffer-ul RX (AAD, Date Autentificate Asociate) și cu textul criptat, iar deplasarea pentru operația de scriere în eticheta de autentificare era calculată în raport cu datele copiate fără verificări corespunzătoare, ceea ce permitea suprascrierea unor zone arbitrare din cache-ul paginilor.

Vulnerabilitatea permite, la fiecare cerere, să se suprascrie 4 octeți la un offset ales, ceea ce permite atacatorului, prin trimiterea unei serii de cereri, să modifice în cache-ul paginilor conținutul oricărui fișier din sistem, accesibil pentru citire, după ce a obținut plasarea acestuia în cache. Deoarece la orice operațiune de citire a fișierelor conținutul este livrat, în primul rând, din cache-ul paginilor, după înlocuirea informației în cache-ul paginilor, nucleul sau procesul, atunci când citesc datele din fișier, vor obține nu datele reale, ci datele falsificate, ceea ce poate fi folosit pentru a injecta cod în fișiere executabile sau în biblioteci partajate încărcate.

Pentru a executa codul cu privilegii root, este suficient să se modifice memoria cache a paginilor pentru orice fișier executabil cu flag-ul suid root.
În exploitatul propus, se citește fișierul executabil /usr/bin/su și se modifică conținutul acestuia, încărcat în memoria cache a paginilor, pentru a insera propriul cod. Atunci când se va rula ulterior utilitarul „su”, va fi încărcată în memorie nu copia originală a fișierului executabil de pe suport, ci copia modificată din memoria cache a paginilor.

Exploitatul este universal, nu necesită adaptare la distribuții sau versiuni de kernel și poate fi utilizat cu orice distribuții. Deoarece în utilizarea izolării containerelor toate containerele folosesc o memorie cache comună a paginilor, vulnerabilitatea poate fi exploatată pentru a obține acces la mediu gazdă din container (vor fi publicate ulterior exploat consins pentru a ocoli izolarea în Kubernetes).

Vulnerabilitatea a fost identificată cu ajutorul AI după aproximativ o oră de experimente de analiză a codului subsistemului criptografic al kernel-ului. Problema apare începând cu kernel-ul Linux 4.14, lansat în 2017, și a fost remediată în kernel-urile 6.18.22, 6.19.12 și 7.0. Starea remedierii vulnerabilităților în distribuții poate fi evaluată pe aceste pagini: Debian, Ubuntu, SUSE/openSUSE, RHEL, Gentoo, Arch,
Fedora, ROSA.

Ca o soluție temporară de protecție, se poate dezactiva modulul kernel-ului algif_aead, care este folosit în OpenSSL atunci când motorul afalg este activat explicit și în anumite aplicații (se poate verifica existența unor astfel de aplicații în execuție cu comanda „lsof | grep AF_ALG”):

    echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif.conf
    rmmod algif_aead

    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