A apărut un exploit pentru GRO Frag — o vulnerabilitate locală de escaladare a privilegiilor în kernelul Linux, legată de procesarea GRO și zero-copy skb în stiva de rețea. Data exactă a descoperirii inițiale în materialele publice nu este specificată. Pe baza urmelor deschise, se pot observa două date: corecția a fost discutată în lista de corespondență netdev 20 mai 2026, unde această vulnerabilitate a fost deja descrisă ca fiind capabilă de rescrierea page cache-ului, iar un PoC public a fost postat pe GitHub Gist 22 mai 2026.
Ca măsură temporară, până la instalarea kernelului corectat, se poate limita vectorul de atac prin sysctl: kernel.io_uring_disabled=1. Acest mod interzice crearea de noi instanțe io_uring de către procesele neprivilegiate, dacă acestea nu sunt incluse în grupul permis io_uring_group; cu o valoare de grup -1, accesul este menținut doar de către procese cu CAP_SYS_ADMIN. Aceasta este o mitigare, nu o corectare completă a vulnerabilității.
Problema se află în funcția skb_gro_receive(): în timpul combinării pachetelor GRO, kernelul putea transfera fragmente din zero-copy skb în alt skb fără o verificare corectă a stării zero-copy și a semnului SKBFL_MANAGED_FRAG_REFS. Drept urmare, paginile de memorie, pentru care skb-ul inițial nu avea referințe separate, puteau fi eliberate incorect, ceea ce ducea la use-after-free. În patch este specificat clar că o astfel de situație poate duce la UAF, precum și că varianta găsită era capabilă de rescrierea page cache-ului.
PoC-ul publicat descrie vulnerabilitatea ca LPE prin GRO managed-frag UAF folosind io_uring SEND_ZC și interfața de rețea virtuală veth. În comentariul din cod se menționează că sunt afectate kernelurile Linux 6.0+, exploatarea este posibilă de către un utilizator neprivilegiat, dar necesită un io_uring disponibil; ca corectare este menționată commit 4db79a322db8 cu modificarea „net: gro: don’t merge zcopy skbs”.
În ceea ce privește consecințele, GRO Frag se încadrează în aceeași categorie periculoasă de erori ca Copy Fail și Dirty Frag: un atacator cu acces neprivilegiat local poate modifica datele din page cache, adică în memorie, fără a necesita modificarea fișierului pe disc. Astfel de erori sunt deosebit de neplăcute deoarece afectează limita dintre fișierul „doar pentru citire” și conținutul efectiv vizibil de kernel și de procese în apelurile ulterioare. Elastic a descris anterior această categorie ca fiind o modalitate practică de a obține root prin corupția page-cache.
La momentul publicării, un identificator CVE separat pentru GRO Frag, conform informațiilor disponibile, încă nu fusese desemnat. Ca măsuri temporare, administratorii ar trebui să se concentreze pe actualizarea nucleului la o versiune cu corectură, precum și pe măsuri generale de reducere a riscurilor pentru astfel de LPE: limitarea spațiilor de nume utilizator neprivilegiați acolo unde este posibil, controlul utilizării io_uring și monitorizarea lanțurilor suspecte legate de escaladarea locală a privilegiilor. Pentru atacurile similare Copy Fail/DirtyFrag, Elastic recomandă, de asemenea, combinarea patch-urilor cu detectarea primitivelor de exploatare la nivel redus.
Primitivii de exploatare la nivel redus nu reprezintă un „hacking gata făcut”, ci tehnicile tehnice de bază din care se construiește un exploit.
În contextul GRO Frag, aceasta poate însemna nu detectarea deja finalizată a „utilizatorului care a devenit root”, ci încercarea de a observa acțiuni suspecte separate pe care exploitul le folosește pe calea către creșterea privilegiilor.
Sursa: linux.org.ru
