METABYTE
Inapoi la articole

Mi-ai dat un u32, ți-am dat root. Escaladare locală prin io_uring ZCRX

O eroare în io_uring transformă un simplu uint32 într-un bilet către privilegii de root.

8 mai 20261 min de citit
Mi-ai dat un u32, ți-am dat root. Escaladare locală prin io_uring ZCRX

Dezvoltatorii kernelului Linux au mai călcat o dată pe greblă — de data asta în mecanismul io_uring ZCRX (zero-copy RX). Un cercetător a demonstrat că manipularea freelist-ului permite unui utilizator local să-și ridice privilegiile la root. Tot ce trebuie e un uint32 pe care îl controlezi.

Dacă credeai că io_uring e doar o metodă rapidă de a citi fișiere, subestimezi talentul lui pentru dramă. Bug-ul constă în gestionarea freelist-ului de buffere: o eroare off-by-one transformă o valoare controlată într-un pointer către o structură care poate fi rescrisă. Apoi — clasic: preluare a controlului și salut, root.

Exploit-ul necesită acces local, așa că dacă serverele tale sunt deja compromise — e doar o cireașă pe tort. Dar pentru cei care urmăresc securitatea, e un remindere: chiar și cel mai tare API poate face o surpriză neplăcută. Patch-ul e deja în mainline, așa că actualizează-te până când atacatorii nu se joacă cu freelist-ul tău.

Comentariul echipei METABYTE: Noi tot spunem — ai încredere, dar verifică. Mai ales când primești un u32 și ți se promite magie. Auditurile noastre de cod sunt exact pentru ca astfel de surprize să nu ajungă în producție.

URMATORUL PAS

Ti-a placut abordarea?

Aplicam aceleasi principii in proiectele clientilor: AI, automatizari, produse care nu se sting dupa lansare.