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-deconstructed — Versione facile da capire di CVE-2026-31431 | Kitploit
Strumenti/GitHubGitHub/bootsareme/copyfail-deconstructed
Escalation di PrivilegiExploitShellcodeApprendimento e FormazioneSviluppo PayloadBinary Exploitation
GitHubbootsareme/copyfail-deconstructed

copyfail-deconstructed

Versione facile da capire di CVE-2026-31431

Vedi Repository
3163 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-deconstructed

Versione facile da comprendere di CVE-2026-31431, una tecnica di escalation dei privilegi che consente a chiunque di diventare root. Il proof-of-concept originale si trova qui: https://github.com/theori-io/copy-fail-CVE-2026-31431, ma è fortemente compresso e minificato per avere un ingombro il più piccolo possibile. Questo repository tenta di scomporre quel codice in una forma più leggibile, includendo cosa fa il codice, come viene caricato il payload e come prendere di mira diverse architetture. Vedi l'analisi più tecnica qui: https://xint.io/blog/copy-fail-linux-distributions.

Utilizzo

Per impostazione predefinita, eseguendo python3 copyfail.py verrà eseguito uno shellcode x64 che sfrutta /usr/bin/su. Puoi fornire il tuo payload eseguendo python3 copyfail.py [path/to/custom/payload.elf]. Ad esempio, all'interno di payloads/ è presente un assembly shellcode per ARM64. Quindi, per testare su dispositivi ARM64, devi prima creare un payload minimizzato con il nostro script di linker personalizzato:

root@kitploit:~
as -o shellcode_aarch64.o payloads/shellcode_aarch64.S
ld -nostdlib -static -o shellcode_aarch64.elf shellcode_aarch64.o
strip -s shellcode_aarch64.elf

Poi puoi eseguire l'exploit principale usando python3 copyfail.py shellcode_aarch64.elf.

Per l'esecuzione in C:

  1. compila (vedi sotto)
  2. ./c_copyfail che esegue lo stesso shellcode predefinito di cui sopra.
  • Puoi di nuovo fornire il tuo payload eseguendo ./c_copyfail [path/to/custom/payload.elf].

Per compilare la versione C:

root@kitploit:~
cd c_port
make

Nello specifico, compila il file .S di destinazione in un binario grezzo che viene generato come array C di unsigned char:

root@kitploit:~
gcc -c payloads/[shellcode].S
objcopy -O binary [shellcode].o [payload].raw
xxd -i [payload].raw > payload.txt

oppure, per x86 a 32 bit,

root@kitploit:~
gcc -c -m32 payloads/[shellcode].S
objcopy -O binary [shellcode].o [payload].raw
xxd -i [payload].raw > payload.txt

Puoi quindi copiare il contenuto di questo file nel tuo codice sorgente, oppure eseguire direttamente ./c_copyfail.exe [path/to/payload.elf] dove payload.elf è generato da as + ld e NON da gcc + objcopy.

Correzioni

Per evitare lo sfruttamento, esegui:

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

Se il sistema è già stato sfruttato, puoi riavviare la macchina oppure eseguire: echo 3 | sudo tee /proc/sys/vm/drop_caches

Spiegazione

  1. Il kernel consente all'utente di comunicare con la crypto API tramite il socket di tipo AF_ALG
  • Nel 2017, l'"ottimizzazione in-place" è stata aggiunta alla parte algif_aead della crypto API
  • Quando i dati vengono inviati tramite il socket usando la system call splice(), il kernel inserisce le pagine effettive della page-cache del file su cui hai eseguito splice() nell'area di lavoro della crypto
  • L'algoritmo crypto authencsn tratta il suo buffer di output come spazio di lavoro temporaneo e scrive 4 byte oltre il punto previsto
  1. Cosa può fare un ipotetico attaccante
  • Scegliere un qualsiasi file leggibile (ad es., /usr/bin/su in questo caso)
  • Scegliere l'offset all'interno del file in cui avverrà la scrittura di 4 byte
  • Scegliere il valore di 4 byte da scrivere (parte dei dati associati nell'operazione AEAD)
  • Scrivere lo shellcode per sovrascrivere il file in memoria
  1. Sovrascrittura della page-cache per ottenere root
  • Il kernel non marca mai la pagina corrotta come dirty, quindi il file sembra invariato
  • Quando si esegue /usr/bin/su, il kernel lo legge dalla page cache e ottiene i byte modificati
  • Ripetendo la scrittura di 4 byte (circa 40 volte), è possibile sovrascrivere il controllo dell'UID all'interno di /usr/bin/su così che l'UID sia 0 (root)
  • Shell di root ottenuta per qualsiasi utente
  1. Rimedio
  • Svuotare la page cache per rimuovere i file modificati in memoria, così la prossima volta verranno letti dal disco
  • Rimuovere il modulo del kernel
  • Mettere in blacklist il caricamento
  • Se si tratta di un modulo integrato, devi bloccare la syscall usando seccomp o eBPF. Oppure rimuoverlo dall'inizializzazione e riavviare la macchina.

Il binario su viene corrotto in memoria, quindi la modifica del file non verrà rilevata. Per ripristinarlo dal disco, puoi svuotare la page-cache.

Scarica lo strumento