Skip to content
KitploitKITPLOIT
StrumentiBlog
Log in
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.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-31431-Copy-Fail---Vulnerability-Detection-Script — Script di rilevamento per CVE-2026-31431 (Copy Fail) che verifica la versione del kernel, la presenza di patch, le configurazioni del kernel, la disponibilità dei socket AF_ALG, i binari setuid e le mitigazioni per determinare lo stato di vulnerabilità sui sistemi Linux. | Kitploit
Strumenti/GitHubGitHub/liamromanis101/cve-2026-31431-copy-fail---vulnerability-detection-script
Sicurezza dell'Infrastruttura CloudScanner di VulnerabilitàSicurezza dei ContenitoriAnalisi delle VulnerabilitàAudit di ConfigurazioneDevSecOpsRilevamento IntrusioniRisposta agli Incidenti
GitHubliamromanis101/cve-2026-31431-copy-fail---vulnerability-detection-script

CVE-2026-31431-Copy-Fail---Vulnerability-Detection-Script

Script di rilevamento per CVE-2026-31431 (Copy Fail) che verifica la versione del kernel, la presenza di patch, le configurazioni del kernel, la disponibilità dei socket AF_ALG, i binari setuid e le mitigazioni per determinare lo stato di vulnerabilità sui sistemi Linux.

Vedi Repository
252325 mesi faRevisionato da Kitploit

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

CVE-2026-31431 — Copy Fail — Script di rilevamento vulnerabilità

Solo rilevamento. Un PoC funzionante esiste già su copy.fail/#exploit. Questo script è pensato per sysadmin e team di sicurezza che devono determinare dove sono vulnerabili — o ancora vulnerabili dopo l'applicazione delle patch.


Di cosa si tratta?

Il 29 aprile 2026, una vulnerabilità chiamata Copy Fail (CVE-2026-31431) è stata divulgata pubblicamente dal Xint Code Research Team. È un bug logico presente silenziosamente nel kernel Linux da circa 2017 — quasi un decennio — e consente a qualsiasi utente locale non privilegiato di ottenere root.

Non "ottenere root in condizioni specifiche con un po' di fortuna e un vento favorevole." Semplicemente... ottenere root. In modo affidabile. Praticamente su ogni principale distribuzione Linux.

Colpisce Ubuntu, Amazon Linux, RHEL, SUSE e qualsiasi altro sistema che esegue un kernel mainstream degli ultimi ~8 anni. Stesso script, nessuna ricompilazione, nessuna modifica per distribuzione richiesta.

Sì, è grave quanto sembra.

La versione breve di come funziona

Il kernel Linux ha un sottosistema crittografico accessibile agli utenti non privilegiati tramite socket AF_ALG. Esiste un meccanismo chiamato splice() che può inoltrare dati di file direttamente in quel sottosistema senza copiarli — il che significa che la copia cache in memoria del kernel di un file (la "page cache") finisce all'interno di un'operazione crittografica.

Un algoritmo specifico — authencesn, usato per i numeri di sequenza estesi IPsec — ha una particolarità: usa il buffer di output come spazio di lavoro e scrive 4 byte leggermente oltre la posizione prevista. Normalmente innocuo. Ma quando le pagine della page cache di un binario setuid come /usr/bin/su finiscono concatenate in quel buffer di output (grazie a una "ottimizzazione" del 2017 in algif_aead.c), quei 4 byte finiscono direttamente nella copia cache del binario nel kernel.

L'operazione fallisce con un errore. Il kernel non marca mai quella pagina come sporca. Il file su disco è intatto. Gli strumenti di integrità dei file che verificano i checksum su disco non rilevano nulla di anomalo.

Ma la page cache è ciò che viene eseguito. E su è setuid root.

Il resoconto tecnico completo è su xint.io e merita davvero di essere letto.


Cosa controllano gli script

Script Python — 13 controlli

Sette dalla versione originale più sei nuovi controlli aggiunti per colmare le lacune di rilevamento:

#ControlloCosa cerca
1Versione del kernelQuesto kernel è nell'intervallo interessato (4.10–6.14)?
2Presenza della patchIl commit di correzione è effettivamente nel kernel in esecuzione?
3Modulo algif_aeadIl modulo vulnerabile è caricato o caricabile?
4CONFIG_CRYPTO_AUTHENC (nuovo)CONFIG_CRYPTO_AUTHENC è integrato (=y) o un modulo (=m)? Questa singola opzione compila sia authenc che authencesn. Integrato significa che la mitigazione con blacklist di modprobe non serve a nulla.
5CONFIG_CRYPTO_USER_API_AEAD (nuovo)L'interfaccia utente AF_ALG AEAD è persino compilata? Se no, l'intero percorso di exploit è chiuso in fase di compilazione.
6Socket AF_ALGUn utente non privilegiato può aprirne uno adesso?
7Python os.spliceIl percorso di exploit in puro Python è disponibile?
8Binari setuidElenco esteso di target setuid-root leggibili presenti sul sistema.
9MitigazioniAppArmor, SELinux, seccomp — cosa c'è in atto?
10Namespace utente (nuovo)I namespace utente non privilegiati sono abilitati? (Non blocca direttamente Copy Fail, ma influisce sulla più ampia superficie di privesc locale.)
11Hugepage trasparenti (nuovo)Stato THP — può influire sull'allineamento della page cache e sull'affidabilità dell'exploit.
12Rilevamento ambiente (nuovo)Contesto Docker/container/VM — i container condividono il kernel dell'host; è l'host che deve essere patchato.
13Avviso utente root (nuovo)Avvisa se si esegue come root, poiché diversi controlli danno falsi positivi per root indipendentemente dalle restrizioni per non privilegiati.

Script shell — 10 controlli

Lo script Bash copre la stessa logica di rilevamento principale ma omette tre elementi specifici di Python:

#ControlloNote
1Versione del kernel
2Presenza della patch
3Modulo algif_aead
4Socket AF_ALGUsa Python come helper se disponibile; altrimenti ripiega sull'inferenza dalla configurazione del kernel
5Binari setuidElenco esteso, come nella versione Python
6MitigazioniAppArmor, SELinux, seccomp
7CONFIG_CRYPTO_AUTHENC
8Namespace utente
9Hugepage trasparenti
10Rilevamento ambiente

Non presenti nello script shell (rispetto a Python):

Controllo mancanteMotivo
CONFIG_CRYPTO_USER_API_AEADNon ancora implementato — pianificato
Disponibilità Python os.spliceNon applicabile a uno script shell
Avviso utente rootNon ancora implementato — pianificato

Nessuno dei due script risolve o sfrutta nulla. Ti dicono la verità sul tuo sistema così puoi agire di conseguenza.


Requisiti

  • Python 3.6+
  • Nessuna dipendenza esterna — solo stdlib
  • Nessun requisito di root (intenzionalmente — controlliamo ciò che un attaccante non privilegiato può vedere)
  • Consigliato: eseguire come utente non root — alcuni controlli (socket AF_ALG, stat setuid) riescono sempre per root e riporteranno falsi positivi

Utilizzo

# Clona o scarica lo script, poi:
python3 cve-2026-31431-detect.py

Tutto qui. Report con codici colore e un riepilogo alla fine.

Codici di uscita

Lo script esce con un codice non zero in caso di risultati vulnerabili, rendendolo adatto all'uso in pipeline:

CodiceSignificato
0Nessuna condizione vulnerabile trovata
1Una o più condizioni vulnerabili trovate
# Esempio: fai fallire uno step CI se l'host è vulnerabile
python3 cve-2026-31431-detect.py
rc=$?
if [ $rc -eq 1 ]; then
  echo "VULNERABILE — blocca il deployment"
elif [ $rc -ne 0 ]; then
  echo "ERRORE — lo script non è riuscito a completare (exit $rc)"
fi

Esempio di output

CVE-2026-31431 'Copy Fail' — Rilevamento vulnerabilità
Corruzione page cache authencesn / escalation privilegi locale
Esecuzione come uid=1001, euid=1001

=== Versione del kernel ===
  [VULNERABILE] Versione del kernel
          Motivo : Il kernel è nell'intervallo vulnerabile (4.10 – 6.14)
          Dettaglio : Release: 6.12.0-124.45.1.el10_1 — lo stato della patch deve essere confermato

=== CONFIG_CRYPTO_AUTHENC (Configurazione kernel) ===
  [VULNERABILE] CONFIG_CRYPTO_AUTHENC
          Motivo : Compilato come modulo (=m): si carica automaticamente su bind() AF_ALG; la blacklist di modprobe è la mitigazione corretta

=== CONFIG_CRYPTO_USER_API_AEAD (Configurazione kernel) ===
  [VULNERABILE] CONFIG_CRYPTO_USER_API_AEAD
          Motivo : L'interfaccia AEAD AF_ALG è un modulo caricabile — gli utenti non privilegiati possono accedere al sottosistema crittografico tramite socket AF_ALG

...

  IL SISTEMA È PROBABILMENTE VULNERABILE A CVE-2026-31431
Scarica lo strumento