Na verejnosti je zverejnený exploit pre siedmu zraniteľnosť (1, 2-3, 4, 5, 6) v jadre Linuxu, ktorý umožňuje nepriviligovanému lokálnemu používateľovi získať práva root prepísaním údajov v stránkovom cache. CVE identifikátor ešte nebol pridelený, okrem kódu exploitu nie sú zatiaľ k dispozícii žiadne ďalšie informácie o probléme. Oprava je k dispozícii iba vo forme záplaty, ktorá bola zverejnená 20. mája a 21. mája bola prijatá do hlavnej vetvy jadra Linuxu (opravené verzie jadra zatiaľ nie sú dostupné).
Zraniteľnosť sa nachádza v implementácii technológie GRO (Generic Receive Offload), ktorá sa používa na urýchlenie spracovania segmentovaných paketov. Zraniteľnosť je spôsobená chybou v implementácii mechanizmu zerocopy vo funkcii skb_gro_receive(), ktorá priamo menila údaje v stránkovom cache, aby sa vylúčila nadbytočná vyrovnávacia pamäť. Pri nastavenej vlajke SKBFL_MANAGED_FRAG_REFS došlo k vynechaniu uchovania odkazu na uvoľnené stránky pamäte v poli shinfo->frags, po čom sa toto pole pripojilo k inému skb bez zmeny počítadla odkazov, čo viedlo k prístupu k pamäti po jej uvoľnení (use-after-free). Problém sa podarilo využiť na prepísanie údajov v stránkovom cache manipuláciou s ukazovateľom na buffer io_uring.
Útok je možný na systémy s povolenou subsystémom io_uring (io_uring_disabled=0). Pre fungovanie exploitu musí byť v systéme prístupný na čítanie spustiteľný súbor s vlajkou SUID-root. Mechanizmus exploitácie tkvie v tom, že útočník dosiahne usadenie databázy používateľov v stránkovom cache, po čom vloží do cache reťazec „hax::0:0::/root:/bin/sh“. Následne sa spustí príkaz „su hax“, ktorý nezíska originálnu databázu používateľov z disku, ale zmenenú kópiu s podvodným prihlásením „hax“, ktorému boli pridelené práva root a prázdne heslo. Funkčnosť exploitu bola otestovaná na Ubuntu 24.04.
Zdroj: opennet.ru
