
Rilevatore non distruttivo per l'escalation dei privilegi locale CVE-2026-31431 (Copy Fail) in XCP-ng 8.3 Dom0, che valida la vulnerabilità del kernel tramite test di corruzione della page-cache.
Uno script rilevatore sicuro e non distruttivo per CVE-2026-31431 ("Copy Fail"), validato su XCP-ng 8.3 LTS precedente all'aggiornamento di sicurezza del 5 maggio 2026.
⚠️ Solo uso autorizzato. Esegui questo script esclusivamente su sistemi di tua proprietà o per i quali sei esplicitamente autorizzato a testare.
CVE-2026-31431, soprannominata "Copy Fail", è una vulnerabilità di escalation dei privilegi locale (LPE) nell'interfaccia crittografica algif_aead del kernel Linux. Un difetto logico nel template authencesn — introdotto nel 2017 — consente a un utente locale non privilegiato di eseguire una scrittura controllata di 4 byte nella cache delle pagine del kernel di qualsiasi file leggibile, consentendo l'escalation dei privilegi a root.
a664bf3d603d di Herbert XuIl dominio di controllo Dom0 di XCP-ng gira su un kernel Linux ed è il livello di gestione dell'hypervisor. Qualsiasi utente non privilegiato con accesso shell a Dom0 — inclusi gli account di servizio creati per pipeline CI/CD, agenti di monitoraggio, strumenti di backup o automazione — può sfruttare questa vulnerabilità per ottenere root. Da root in Dom0, tutte le VM guest su quell'host sono compromesse.
Un'installazione XCP-ng predefinita ha un'esposizione minima poiché pochissimi processi girano come utenti non root. Il rischio reale si accumula nel tempo quando gli operatori aggiungono account di servizio per scopi legittimi senza limitare l'accesso shell.
Controlla gli account di servizio Dom0:
awk -F: '$7 ~ /bash|sh/' /etc/passwd
Questo è un rilevatore da laboratorio, non uno strumento di escalation dei privilegi. Esso:
algif_aead / authencesn contro quel fileI binari di sistema, /etc/passwd e altri file di sistema non vengono mai toccati. La corruzione della cache delle pagine è solo in memoria — nulla viene scritto su disco.
os.splice)python3 xcp_ng_cve_2026_31431_tester.py
| Codice | Significato |
|---|---|
0 | Nessuna corruzione osservata — il sistema è probabilmente patchato o algif_aead è disabilitato |
1 | Errore di attivazione — algif_aead potrebbe essere non disponibile o bloccato |
2 | Vulnerabile — corruzione della cache delle pagine confermata |
Nota: Il codice di uscita
1su un sistema patchato è un comportamento previsto, non un errore dello script. Seauthencesnè stato disabilitato a livello di kernel (come nella correzione XCP-ng del 5 maggio), il bind del socket fallirà e lo script uscirà con codice1.
| Data | Evento |
|---|---|
| 29 aprile 2026 | CVE-2026-31431 divulgata pubblicamente |
| 4 maggio 2026 | VATES pubblica VSA-2026-013 |
| 5 maggio 2026 | Rilasciato l'aggiornamento di sicurezza di maggio per XCP-ng 8.3 LTS — correzione del kernel disponibile |
Aggiorna i tuoi host XCP-ng e riavvia:
yum update
reboot
Dopo il riavvio, verifica che il kernel aggiornato sia in esecuzione:
uname -r
Riesegui questo script rilevatore dopo la patch. Un sistema patchato restituirà il codice di uscita 1 (errore di attivazione) poiché il template vulnerabile authencesn non è più disponibile.
Nota: La correzione XCP-ng disabilita il supporto IPSec ESN come conseguenza della rimozione del componente vulnerabile
authencesn. Per la maggior parte degli ambienti questo non ha alcun impatto pratico. VATES ha indicato che una futura patch potrebbe ripristinare questa funzionalità con una correzione adeguata.
Prima di applicare le mitigazioni, conferma se algif_aead è compilato come modulo (=m) o integrato nel kernel (=y):
grep CONFIG_CRYPTO_USER_API_AEAD /boot/config-$(uname -r)
=m — Basato su modulo; la blacklist modprobe funzionerà=y — Integrato nel kernel; la blacklist modprobe fallirà silenziosamente e non fornirà alcuna protezionePer i kernel della famiglia RHEL con =y, usa invece il parametro di avvio grubby:
grubby --update-kernel=ALL --args="initcall_blacklist=algif_aead_init"
reboot
Questo script è un derivato modificato del lavoro originale di rootsecdev. Verifica la licenza del repository a monte prima della ridistribuzione e assicurati che il tuo utilizzo sia conforme ai suoi termini.
Questo script è stato validato su XCP-ng 8.3 LTS con un kernel non patchato al 5 maggio 2026. Applica immediatamente l'aggiornamento di sicurezza ufficiale VATES se non lo hai già fatto.