Cundizione di razza in u cullettore di basura di u kernel Linux chì pò purtà à l'escalation di privilegi

Jann Horn da a squadra Google Project Zero, chì una volta identificava e vulnerabilità Spectre è Meltdown, hà publicatu una tecnica per sfruttà una vulnerabilità (CVE-2021-4083) in u cullettivu di basura di u kernel Linux. A vulnerabilità hè dovuta à una cundizione di razza quandu si pulizzianu i descrittori di file in sockets Unix è potenzialmente permette à un utilizatore locale senza privilegiu di eseguisce u so codice à u livellu di u kernel.

U prublema hè interessante perchè a finestra di u tempu durante a quale a cundizione di a razza hè stata stimata per esse troppu chjuca per creà sfruttamenti veri, ma l'autore di u studiu hà dimustratu chì ancu tali vulnerabili iniziali scettichi ponu diventà a fonte di attacchi veri se u creatore di sfruttamentu hà. e cumpetenze è u tempu necessariu. Yann Horn hà dimustratu cumu, cù l'aiutu di manipulazioni in filigrana, pudete riduce a cundizione di razza chì si trova quandu chjamate e funzioni close() è fget() simultaneamente in una vulnerabilità d'usu senza usu di sfruttamentu cumplettamente sfruttabile è uttene l'accessu à una data digià liberata. struttura in u kernel.

Una cundizione di razza si verifica durante u prucessu di chjude un descrittore di u schedariu mentre chjamanu close () è fget () à u stessu tempu. A chjama à chjude () pò accade prima di fget () hè eseguitu, chì cunfunderà u cullettivu di basura perchè, sicondu u refcount, a struttura di u schedariu ùn avarà micca riferimenti esterni, ma fermarà attaccata à u descrittore di u schedariu, i.e. U cullettore di basura penserà chì hà un accessu esclusivu à a struttura, ma in fattu, per un cortu periodu di tempu, l'entrata restante in a tavola di descrittore di u schedariu indicà sempre à a struttura liberata.

Per aumentà a probabilità di mette in una cundizione di razza, parechji trucchi sò stati utilizati, chì hà permessu di aumentà a probabilità di successu di sfruttamentu à u 30% quandu introducenu ottimisazioni specifiche di u sistema. Per esempiu, per aumentà u tempu d'accessu à una struttura cù descriptori di u schedariu da parechji centu nanosecondi, i dati sò stati sguassati da u cache di u processatore, sparghjendu a cache cù l'attività nantu à un altru core di CPU, chì hà permessu di ricuperà a struttura da a memoria piuttostu chè da a memoria. a cache di CPU veloce.

A seconda funzione impurtante era l'usu di l'interruzzioni generati da un cronometru di hardware per aumentà u tempu di cundizione di razza. U mumentu hè statu sceltu per chì u gestore di l'interruzzione spara quandu una cundizione di razza hè accaduta è interrompe l'esekzione di u codice per qualchì tempu. Per ritardà ulteriormente u ritornu di u cuntrollu, circa 50 mila entrate in a waitqueue sò state generate cù epoll, chì hà bisognu di ricerca à traversu u gestore di interruzzione.

A tecnica per sfruttà a vulnerabilità hè stata divulgata dopu un periodu di non divulgazione di 90 ghjorni. U prublema si prisenta da u kernel 2.6.32 è hè stata riparata à principiu di dicembre. A correzione hè stata inclusa in u kernel 5.16 è hè stata ancu trasferita à i rami LTS di u kernel è i pacchetti di kernel furniti in distribuzioni. Hè nutate chì a vulnerabilità hè stata identificata durante l'analisi di un prublema simili CVE-2021-0920, chì si manifesta in u cullettivu di basura durante a trasfurmazioni di a bandiera MSG_PEEK.

Source: opennet.ru

Add a comment