CVE 2026 31431, comunemente nota come "Copy Fail", è una vulnerabilità locale di elevata gravità per l'escalation dei privilegi che interessa il kernel Linux. Il problema riguarda i kernel distribuiti da tutte le principali distribuzioni Linux dal 2017 e consente a un utente locale non privilegiato di ottenere l'esecuzione a livello di root sul sistema host.
La vulnerabilità deriva da una falla logica all'interno del sottosistema crittografico del kernel Linux, in particolare l' interfaccia algif_aead esposta tramite i socketAF_ALG. In determinate condizioni, questa falla consente la modifica controllata dellacache di paginain memoria del kernelper ifile disolalettura, compresi i binari rootsetuid. Quando un binario modificato viene eseguito, l'aggressore può ottenere privilegi elevati.
Un utente malintenzionato in grado di eseguire codice locale (ad esempio, un account utente standard, un account di servizio compromesso, un punto d'appoggio per il breakout del container o un lavoro CI dannoso) può:
A differenza delle precedentifalle diprivilege-escalationdi Linux, Copy Fail:
Sistemi interessati
Raccomandazioni
Integrity360 ha condotto un'analisi dinamica controllata deipayloadproof-of-conceptdi Copy Fail, disponibili pubblicamente, per convalidare la sfruttabilità e valutare il rischio operativo.
L'analisi dinamica attraverso l'esecuzione dei payload ha rivelato che l'exploit si rivolge al percorso del bug "Copy Fail" di Linux corrompendo la cache di pagina di un eseguibile protetto, in particolare "su", senza aprire il file per la scrittura. Il payload apre l'obiettivo in sola lettura, pilota ripetutamente un'interfaccia crittografica del kernel tramite "AF_ALG", sposta i dati supportati dall'obiettivo tramite splice e quindi segnala che la cache della pagina è stata mutata prima di eseguire l'obiettivo.
Non si tratta di una normale sovrascrittura di file. L'exploit abusa di un percorso di copia sul lato kernel in modo che l'immagine in memoria memorizzata nella cache dell'eseguibile venga alterata anche se il descrittore di file è di sola lettura. La traccia dell'analisi dinamica mostra un'esecuzione che passa attraverso "sh -c su", seguita dall'esecuzione di "su", che non si comporta più come l'helper"setuid"originalee passa invece a "sh". Durante l'esecuzione abbiamo osservato che "setgid(0)" e "setuid(0)" falliscono con "EPERM", il che è coerente con l'elevazione dei privilegi che viene soppressa sotto tracciamento; il comportamento dell'exploit è ancora visibile perché l'esecuzione viene reindirizzata in una shell.
L'exploit inizia aprendo "su" con "O_RDONLY" e annunciando un payload di 1704 byte (426 iterazioni). Questo numero è importante: il ciclo sembra applicare la patch all'obiettivo in pezzi da 4 byte, con 426 x 4 = 1704. Ogni iterazione crea un nuovo socket "AF_ALG", lo lega a un percorso crittografico "AEAD", imposta i parametri dell'algoritmo con "setsockopt" e invia un piccolo blocco di controllo artigianale con "sendmsg".
Il passaggio critico è la coppia di chiamate di splice. In primo luogo, i byte vengono uniti dal descrittore del file di destinazione di sola lettura in una pipe. Poi vengono giuntati dalla pipe alsocket"AF_ALG" accettato. In questo modo si mantiene il trasferimento all'interno dello spazio kernel e si evita una normale scrittura in spazio utente. Dopo ogni tentativo, "recvfrom" restituisce "EBADMSG", che indica che l'operazione di crittografia è fallita dal punto di vista dello spazio utente, ma la traccia mostra chiaramente che l'exploit si basa su un effetto collaterale del kernel che sopravvive al fallimento.
Verso la fine della traccia, l'exploit esegue il trasferimento completo di 1704 byte, chiude i descrittori, stampa la pagina della cache mutata; esegue l'obiettivo ed esegue immediatamente "sh -c su". Questo porta a "execve("/usr/bin/su", ...)", quindi a "setgid(0)" e "setuid(0)"falliti e infine a "execve("/bin/sh", ["sh"], [])". Questa sequenza indica che l'immagine di "su" nella cacheè stata modificata e che l'esecuzione non segue più la logica del programma originale.
Sfruttamento riuscito
Linux 5.4.0-122-generico (x86_64)
Sfruttamento non riuscito
Linux 7.0.0-15-generic (x86_64, kernel patchato)
Riferimento al payload
https:// github.com/tgies/copy-fail-c
Se siete preoccupati per una qualsiasi delle minacce descritte in questo bollettino o avete bisogno di aiuto per determinare le misure da adottare per proteggervi dalle minacce più importanti per la vostra organizzazione, contattate il vostro account manager o, in alternativa, contattateciper scoprire come potete proteggere la vostra organizzazione.