Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Copyfail-sh — Un'implementazione Bash di copyfail (CVE-2026-31431) | Kitploit
Strumenti/GitHubGitHub/nonameuserosint-hue/copyfail-sh
Escalation di PrivilegiAnalisi delle VulnerabilitàExploitShellcodePenetration TestingRed TeamingBinary Exploitation
GitHubnonameuserosint-hue/copyfail-sh

Copyfail-sh

Un'implementazione Bash di copyfail (CVE-2026-31431)

Vedi Repository
34 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

copyfail-sh

Nessuna race. Nessun offset. Nessun binario precompilato di cui fidarsi alla cieca.

Un'implementazione in bash di CVE-2026-31431 (Copy Fail). Lo script compila un helper C minimale inline in fase di esecuzione. Il livello bash gestisce il rilevamento dell'architettura, la decompressione del payload e la selezione del target; il livello C esegue l'effettiva interazione con il kernel (socket AF_ALG, splice, sendmsg) a cui bash non può accedere da sola.

Vedi copy.fail per l'analisi tecnica completa.

Come funziona (tl;dr)

Il bug si trova in algif_aead, l'interfaccia socket AF_ALG AEAD del kernel. Un'ottimizzazione in-place del 2017 consente alle pagine della page cache di finire nello scatterlist di destinazione scrivibile di un'operazione di decrittazione authencesn. Fornisci l'input giusto tramite splice() e ottieni una scrittura deterministica di 4 byte nella page cache di qualsiasi file leggibile, inclusi i binari setuid che non possiedi.

Sovrascrivi /usr/bin/su con shellcode 4 byte alla volta, eseguilo, ottieni una shell di root. Nessuna finestra di race, nessun simbolo specifico del kernel, nessun tentativo.

Uso

root@kitploit:~
chmod +x copyfail.sh

# Check if the system is vulnerable before doing anything
./copyfail.sh -c

# Run the exploit (must be non-root)
./copyfail.sh

# Specify a different setuid target
./copyfail.sh -t /usr/bin/passwd

# List all setuid-root candidates on the system
./copyfail.sh -s

Ripristinare su dopo aver ottenuto una shell

L'exploit sovrascrive solo la page cache in memoria, il file su disco non viene toccato. Un riavvio ripristina tutto. Se vuoi pulire immediatamente:

root@kitploit:~
# Inside your root shell
/usr/bin/su --version   # still works from disk if page cache is evicted
# Or just reboot

Se hai usato -t con qualcosa di diverso da su, vale lo stesso. Solo page cache, il disco è pulito.

Requisiti

  • Linux (kernel da 4.11 a 7.0, vedi sotto)
  • gcc per compilare l'helper C inline
  • python3 per decomprimere il payload dello shellcode (one-liner, nessun pacchetto richiesto)
  • Moduli del kernel: algif_aead, authencesn, hmac, cbc

Se l'algo non è disponibile:

root@kitploit:~
sudo modprobe algif_aead authencesn hmac cbc

Alcune distribuzioni includono un blocco in /etc/modprobe.d/ come workaround temporaneo. Rimuovilo se presente:

root@kitploit:~
sudo rm /etc/modprobe.d/disable-algif{_,-}aead.conf 2>/dev/null

Kernel interessati

root@kitploit:~
floor:    torvalds/linux 72548b093ee3   August 2017, v4.14
                                        (AF_ALG iov_iter rework that introduced
                                         the file-page write primitive via splice
                                         into the AEAD scatterlist)

ceiling:  torvalds/linux a664bf3d603d   April 2026, mainline
                                        (reverts the 2017 in-place optimization;
                                         source and destination scatterlists are
                                         now separate, page-cache pages can no
                                         longer end up as writable crypto output)

Tra questi due commit: ogni distribuzione importante che non ha backportato la correzione. Ubuntu, RHEL, SUSE, Amazon Linux e Debian sono risultati tutti vulnerabili al momento della divulgazione. I backport delle distribuzioni hanno iniziato ad arrivare intorno al 2026-04-29. Per verificare un kernel specifico, cerca a664bf3d603d (o il suo backport per la distribuzione) nel changelog.

Architetture supportate

ArchitetturaStato
x86_64✓
aarch64✓
i386 / i686✓
armv7l✓

Mitigazione

Permanente: aggiorna il kernel.

Workaround (blocca il socket AF_ALG; non influisce su IPsec/XFRM che utilizza direttamente l'API crittografica del kernel):

root@kitploit:~
echo "install algif_aead /bin/false" | sudo tee /etc/modprobe.d/disable-algif-aead.conf
sudo rmmod algif_aead 2>/dev/null

Contenitori: aggiungi un profilo seccomp che blocchi la creazione di socket AF_ALG e imposta allowPrivilegeEscalation: false nel security context del pod. Questo abilita no_new_privs, impedendo al kernel di onorare i bit setuid su execve().

Confronto con le altre implementazioni

La versione bash non vincerà sulle dipendenze, ma è un singolo script che puoi leggere dall'inizio alla fine prima di eseguirlo. L'helper C viene generato e compilato in fase di esecuzione da un heredoc, nessun blob binario da controllare separatamente.

Riferimenti

  • copy.fail - sito ufficiale e analisi
  • Xint.io blog - approfondimento tecnico
  • Correzione del kernel - a664bf3d603d
  • CVE-2026-31431 - NVD
  • Divulgazione oss-security
  • badsectorlabs/copyfail-go - implementazione Go (payload shellcode provenienti da qui)
  • xeloxa/copyfail-exploit - implementazione Python

Crediti

  • Taeyang Lee & Theori / Xint Code - scoperta della vulnerabilità e PoC originale

Disclaimer

Solo per test di sicurezza e ricerca autorizzati. Non eseguirlo su sistemi che non possiedi o per i quali non hai un'esplicita autorizzazione scritta a testarli.

Scarica lo strumento
PythonGoBash
Dipendenzepython3nessuno (binario statico)gcc + python3
Binario precompilatonosìno
File singolosìnosì
Fase di compilazionenonosì (inline, auto)