Vulnerabilità Dirty Frag, che modificano la cache delle pagine per ottenere i diritti di root su qualsiasi distribuzione Linux

Nel kernel Linux sono state identificate due vulnerabilità, sostanzialmente analoghe a quella rivelata qualche giorno fa nota come Copy Fail, ma che si manifestano in altre sottosistemi: xfrm-ESP e RxRPC. A queste serie di vulnerabilità è stato assegnato il nome in codice Dirty Frag (si trova anche il riferimento a Copy Fail 2). Le vulnerabilità consentono a un utente non privilegiato di ottenere diritti di root sovrascrivendo i dati di un processo nella cache delle pagine. È disponibile un exploit funzionante in tutte le distribuzioni Linux attuali. Le informazioni sulla vulnerabilità sono state rivelate prima della pubblicazione delle patch, ma esiste un metodo alternativo per bloccare il problema.

Dirty Frag comprende due diverse vulnerabilità: la prima nel modulo xfrm-ESP, utilizzato per accelerare le operazioni di crittografia in IPsec utilizzando il protocollo ESP (Encapsulating Security Payload), e la seconda nel driver RxRPC, che implementa la famiglia di socket AF_RXRPC e il protocollo RPC omonimo, operante su UDP. Ciascuna delle vulnerabilità consente di ottenere diritti di root. La vulnerabilità in xfrm-ESP si manifesta nel kernel Linux da gennaio 2017, mentre quella in RxRPC è attiva da giugno 2023. Entrambi i problemi sono causati da ottimizzazioni che consentono la scrittura diretta nella cache delle pagine.

Per sfruttare la vulnerabilità in xfrm-ESP, l'utente deve avere diritti per creare spazi dei nomi, mentre per sfruttare la vulnerabilità in RxRPC deve essere possibile caricare il modulo del kernel rxrpc.ko. Ad esempio, su Ubuntu, le regole di AppArmor vietano a un utente non privilegiato di creare spazi dei nomi, ma per impostazione predefinita viene caricato il modulo rxrpc.ko. In alcune distribuzioni non è presente il modulo rxrpc.ko, ma non viene bloccata la creazione di spazi dei nomi. Il ricercatore che ha identificato il problema ha preparato un exploit combinato, capace di attaccare il sistema attraverso entrambe le vulnerabilità, consentendo di sfruttare il problema in tutte le principali distribuzioni. Il funzionamento dell'exploit è stato confermato su Ubuntu 24.04.4 con kernel 6.17.0-23, RHEL 10.1 con kernel 6.12.0-124.49.1, openSUSE Tumbleweed con kernel 7.0.2-1, CentOS Stream 10 con kernel 6.12.0-224, AlmaLinux 10 con kernel 6.12.0-124.52.3 e Fedora 44 con kernel 6.19.14-300.

Come nel caso della vulnerabilità Copy Fail, i problemi in xfrm-ESP e RxRPC sono causati dall'esecuzione della decrittazione dei dati in loco, utilizzando la funzione splice(), che trasferisce dati tra descrittori di file e pipe senza copiare, attraverso il passaggio di riferimenti agli elementi nella cache di pagina. Gli offset per l'operazione di scrittura venivano calcolati senza adeguate verifiche, considerando l'uso di riferimenti diretti agli elementi nella cache di pagina, il che permetteva, tramite l'invio di richieste opportunamente formattate, di sovrascrivere 4 byte a un offset scelto e modificare il contenuto di qualsiasi file presente nella cache di pagina.

Tutte le operazioni di lettura dai file danno prima di tutto il contenuto dalla cache di pagina. In caso di modifica dei dati nella cache di pagina, le operazioni di lettura dal file restituiranno non l'informazione effettivamente conservata sul disco, ma dati sostituiti. Sfruttare la vulnerabilità consiste nel modificare la cache di pagina per il file eseguibile con il flag suid root. Ad esempio, per ottenere i diritti root, è possibile leggere il file eseguibile /usr/bin/su per metterlo nella cache di pagina, dopodiché riuscire a sostituire il proprio codice nel contenuto caricato in cache di questo file. Il successivo avvio dell'utilità "su" comporterà che in memoria verrà caricato non il file eseguibile originale dal disco, ma una copia modificata dalla cache di pagina.

La divulgazione delle informazioni sulle vulnerabilità e il rilascio coordinato degli aggiornamenti per risolvere i problemi era previsto per il 12 maggio, ma a causa di una fuga di informazioni, i dati sulla vulnerabilità sono stati pubblicati prima della pubblicazione delle correzioni. Alla fine di aprile, nella lista di distribuzione pubblica netdev sono stati pubblicati patch per rxrpc, ipsec e xfrm, senza menzionare che erano collegati alla risoluzione della vulnerabilità. Il 5 maggio, il maintainer del sottosistema IPsec ha accettato nel repository git netdev una modifica con una correzione proposta nel modulo xfrm-esp, la cui descrizione ripeteva in gran parte quella del problema che aveva portato alla vulnerabilità Copy Fail nel modulo algif_aead. Uno dei ricercatori sulla sicurezza si è interessato a questa correzione, è riuscito a creare un exploit funzionante e lo ha pubblicato, senza sapere che era stato imposto un embargo sulla divulgazione delle informazioni sul problema fino al 12 maggio.

Aggiornamenti con correzioni per il kernel Linux e i pacchetti kernel nelle distribuzioni non sono ancora stati pubblicati, ma sono disponibili patch correttive — xfrm-esp e rxrpc. Non sono stati assegnati identificatori CVE, il che complica il monitoraggio degli aggiornamenti dei pacchetti nelle distribuzioni. Come soluzione temporanea, è possibile bloccare il caricamento dei moduli del kernel esp4, esp6 e rxrpc: sh -c "printf 'install esp4 /bin/false\ninstall esp6 /bin/false\ninstall rxrpc /bin/false\n' > /etc/modprobe.d/dirtyfrag.conf; rmmod esp4 esp6 rxrpc 2>/dev/null; true"

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster