Copy Fail — vulnerabilità nel kernel Linux che consente di ottenere i privilegi di root nella maggior parte delle distribuzioni

I ricercatori della compagnia Xint hanno identificato una vulnerabilità nel kernel Linux (CVE-2026-31431), che consente a un utente non privilegiato di ottenere l'accesso root al sistema. Il problema è stato battezzato con il nome in codice Copy Fail. È disponibile un prototipo dell'exploit. È stata dimostrata la possibilità di sfruttare la vulnerabilità su Ubuntu 24.04 LTS, Amazon Linux 2023, RHEL 10.1 e SUSE 16, ma si segnala che i pacchetti kernel di altre distribuzioni, comprese Debian, Arch, Fedora, Rocky e Alma, sono anch'essi vulnerabili, benché non siano stati testati separatamente.

La vulnerabilità è causata da un errore logico nell'API crypto (AF_ALG) del kernel Linux, introdotto nel 2017 durante un'ottimizzazione che rimuoveva la bufferizzazione superflua attraverso l'esecuzione in loco (in-place) delle operazioni di crittografia a blocchi AEAD (Authenticated Encryption with Associated Data). Il problema è sorto a causa di un utilizzo avventato della funzione splice(), che trasferisce dati tra descrittori di file e pipe senza copia, passando riferimenti agli elementi nella cache di pagina. Dopo l'introduzione dell'ottimizzazione, quando un file veniva trasmesso a un socket AF_ALG per la decrittografia, veniva scritto nella struttura scatterlist non un riferimento a un buffer separato, ma un riferimento diretto agli elementi della cache di pagina del kernel contenenti i dati del file.

Successivamente, nel processo di decrittografia AEAD, venivano mescolati i dati referenziati del tag di autenticazione con i dati autenticabili aggiuntivi copiati nel buffer RX (AAD, Associated Authenticated Data) e il testo cifrato, e l'offset per l'operazione di scrittura nel tag di autenticazione veniva calcolato rispetto ai dati copiati senza adeguate verifiche, consentendo di sovrascrivere aree arbitrarie nella cache di pagina.

La vulnerabilità consente di sovrascrivere 4 byte a un offset scelto con ogni richiesta, permettendo a un attaccante, tramite l'invio di una serie di richieste, di modificare nel cache di pagina il contenuto di qualsiasi file del sistema accessibile in lettura, previo suo posizionamento nella cache. Poiché durante qualsiasi operazione di lettura dai file il contenuto è fornito per prima cosa dalla cache di pagina, dopo la sostituzione delle informazioni nella cache, il kernel o il processo, leggendo i dati da un file, riceveranno non i dati effettivi, ma quelli sostituiti, il che può essere utilizzato per l'inserimento di codice in file eseguibili avviati o in librerie condivise caricate.

Per eseguire il codice con diritti di root, basta modificare la cache delle pagine per qualsiasi file eseguibile con il flag suid root.
Nell'exploit proposto viene effettuata la lettura del file eseguibile /usr/bin/su e la modifica del contenuto di questo file caricato nella cache delle pagine per inserire il proprio codice. Quando successivamente si esegue l'utilità 'su', verrà caricato in memoria non il file eseguibile originale dal supporto, ma una copia modificata dalla cache delle pagine.

L'exploit è universale, non richiede adattamenti per distribuzioni o versioni del kernel e può essere utilizzato con qualsiasi distribuzione. Poiché l'isolamento dei contenitori utilizza una cache delle pagine condivisa per tutti i contenitori, la vulnerabilità può essere sfruttata per ottenere accesso all'ambiente host da un contenitore (in seguito promettono di pubblicare un exploit per aggirare l'isolamento in Kubernetes).

La vulnerabilità è stata identificata tramite AI dopo circa un'ora di esperimenti con l'analisi del codice del sottosistema crittografico del kernel. Il problema si manifesta a partire dal kernel Linux 4.14, rilasciato nel 2017, ed è stato risolto nei kernel 6.18.22, 6.19.12 e 7.0. Lo stato di correzione delle vulnerabilità nelle distribuzioni può essere valutato alle seguenti pagine: Debian, Ubuntu, SUSE/openSUSE, RHEL, Gentoo, Arch,
Fedora, ROSA.

Come soluzione alternativa alla protezione, è possibile disattivare il modulo del kernel algif_aead, che è utilizzato in OpenSSL quando si attiva esplicitamente il motore afalg e in alcune applicazioni (per verificare se ci sono applicazioni simili in esecuzione, puoi utilizzare il comando 'lsof | grep AF_ALG'):

    echo 'install algif_aead /bin/false' > /etc/modprobe.d/disable-algif.conf
    rmmod algif_aead

    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