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
copy-fail-checker — Controllore Bash in sola lettura per la vulnerabilità Copy Fail del kernel Linux (CVE-2026-31431) | Kitploit
Strumenti/GitHubGitHub/samanzamani/copy-fail-checker
Escalation di PrivilegiScanner di VulnerabilitàAnalisi delle VulnerabilitàExploitScripting e AutomazioneCrittografiaApprendimento e Formazione
GitHubsamanzamani/copy-fail-checker

copy-fail-checker

Controllore Bash in sola lettura per la vulnerabilità Copy Fail del kernel Linux (CVE-2026-31431)

Vedi Repository
512 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

Copy Fail Checker — CVE-2026-31431

Uno script Bash piccolo e leggero in termini di dipendenze che ti dice se il tuo sistema Linux è esposto alla vulnerabilità di escalation dei privilegi locali Copy Fail (CVE-2026-31431).

Lo script è read-only: non sfrutta mai il bug, non carica mai moduli del kernel e non modifica mai il sistema.


Cos'è Copy Fail?

Copy Fail è un bug logico nel template crittografico AEAD authencesn del kernel Linux, raggiungibile dallo spazio utente tramite l'interfaccia socket AF_ALG (algif_aead).

CampoValore
CVECVE-2026-31431
Divulgato2026-04-29
CVSS v3.17.8 (Alto)
ClasseEscalation dei Privilegi Locale
Componente affettocrypto/authencesn + crypto/algif_aead
Introdotto in2017 (ottimizzazione AEAD in-place in algif_aead.c)
Correzione principalecommit a664bf3d603d, merged 2026-04-01

Perché è importante

Un utente locale non privilegiato può attivare una scrittura deterministica e controllata di 4 byte nella cache delle pagine di qualsiasi file che può leggere. Un proof-of-concept pubblico (732 byte di Python) usa questa primitiva per sovrascrivere un binario setuid e ottenere root su praticamente ogni distribuzione mainstream rilasciata dal 2017.

Chi è affetto

Ogni distribuzione Linux che fornisce un kernel costruito dal 2017 con algif_aead abilitato. Le famiglie confermate affette includono:

  • Ubuntu 18.04 → 25.10 (Ubuntu 26.04 "Resolute" non è affetto)
  • Debian (tutte le suite attualmente supportate)
  • RHEL / AlmaLinux / Rocky / CentOS Stream 8, 9, 10
  • SUSE Linux Enterprise / openSUSE
  • Amazon Linux 2023
  • La maggior parte degli host container e delle immagini di nodi Kubernetes gestiti derivati da quanto sopra

Avvio rapido

root@kitploit:~
# Download the script
curl -fsSLO https://raw.githubusercontent.com/samanzamani/copy-fail-checker/main/check-copy-fail.sh

# Make it executable
chmod +x check-copy-fail.sh

# Run it
./check-copy-fail.sh

Oppure clona il repository:

root@kitploit:~
git clone https://github.com/samanzamani/copy-fail-checker.git
cd copy-fail-checker
./check-copy-fail.sh

Lo script non richiede root. Eseguirlo come utente normale fornisce la visione più realistica della superficie d'attacco, perché è esattamente il contesto che un attaccante avrebbe.


Cosa controlla lo script

Lo script esegue tre controlli indipendenti e li combina in un unico verdetto.

1. Versione del kernel

Legge /etc/os-release e uname -r, quindi confronta il kernel in esecuzione con la versione ufficiale corretta pubblicata dal team di sicurezza della distribuzione. La tabella delle versioni attualmente copre:

Se la tua distribuzione non è nella tabella, lo script utilizza i controlli di runtime qui sotto.

2. Stato del modulo algif_aead

Lo script ispeziona quattro cose senza modificare nulla:

  • Se il modulo è attualmente caricato (lsmod)
  • Se il modulo è disponibile per il caricamento (modinfo)
  • Se il modulo è blacklistato in /etc/modprobe.d, /usr/lib/modprobe.d, o /run/modprobe.d
  • Se il modulo è built-in in /boot/config-<uname> o /proc/config.gz

Un modulo blacklistato, non caricato e non built-in chiude la superficie d'attacco anche su un kernel non patchato.

3. Raggiungibilità del socket AF_ALG

Il segnale più affidabile è ciò che un attaccante vedrebbe effettivamente. Lo script utilizza una piccola sonda Python (socket.socket(AF_ALG, SOCK_SEQPACKET, 0) seguita da bind() al template AEAD authencesn(hmac(sha256),cbc(aes))) per scoprire se i socket AF_ALG possono essere creati e associati da un contesto non privilegiato. La sonda crea, associa e chiude immediatamente il socket senza lasciare nulla di sfruttabile.

Se python3 non è installato, la sonda viene saltata e il verdetto si basa sui controlli 1 e 2.


Verdetti possibili


Output JSON per automazione

Per pipeline, gestione della configurazione o scansione di flotte, passa --json:

root@kitploit:~
./check-copy-fail.sh --json

Esempio di output:

root@kitploit:~
{
  "verdict": "vulnerable",
  "distro_id": "ubuntu",
  "distro_version_id": "24.04",
  "kernel": "6.8.0-31-generic",
  "patched_version": "",
  "kernel_status": "unknown",
  "module_loaded": 0,
  "module_builtin": 0,
  "module_available": 1,
  "module_blacklisted": 0,
  "af_alg_status": "reachable"
}

Mitigazione

Raccomandato: installare l'aggiornamento del kernel del vendor

Questa è l'unica correzione completa. Dopo l'aggiornamento, riavvia affinché il nuovo kernel sia effettivamente in esecuzione.

root@kitploit:~
# Debian / Ubuntu
sudo apt update && sudo apt full-upgrade && sudo reboot

# RHEL / AlmaLinux / Rocky / CentOS Stream
sudo dnf clean metadata && sudo dnf upgrade && sudo reboot

# openSUSE / SLES
sudo zypper refresh && sudo zypper update && sudo reboot

# Amazon Linux 2023
sudo dnf upgrade --releasever=latest && sudo reboot

Soluzione temporanea: disabilitare algif_aead

Se non puoi riavviare su un kernel patchato immediatamente, blacklista il modulo vulnerabile. Questo interrompe qualsiasi applicazione che utilizza legittimamente cifrari AEAD AF_ALG (raro sulla maggior parte dei server — verifica prima in un ambiente di staging).

root@kitploit:~
# Persist the blacklist across reboots
echo "install algif_aead /bin/false" | sudo tee /etc/modprobe.d/disable-algif-aead.conf

# Unload it from the running kernel right now
sudo rmmod algif_aead 2>/dev/null || true

Se il modulo è built-in, il blacklist non funzionerà ma è possibile disabilitare l'initcall. È necessario un riavvio.

root@kitploit:~
sudo grubby --update-kernel=ALL --args="initcall_blacklist=algif_aead_init"

sudo reboot

Per carichi di lavoro containerizzati, blocca anche la famiglia di socket AF_ALG dal tuo profilo seccomp in modo che un container compromesso non possa raggiungere la superficie del kernel.


Esecuzione di esempio

root@kitploit:~
== System information ==
[INFO]    Distribution : Ubuntu 24.04.2 LTS (ubuntu 24.04)
[INFO]    Kernel       : 6.8.0-31-generic

== Check 1 / 3 — Kernel version ==
[WARN]    No vendor-fixed kernel version is recorded for ubuntu 24.04.
[WARN]    Falling back to runtime mitigation checks below.

== Check 2 / 3 — algif_aead kernel module ==
[WARN]    algif_aead is not loaded but can be autoloaded on demand (no blacklist found).

== Check 3 / 3 — AF_ALG socket reachability ==
[VULN]    AF_ALG sockets are reachable from this unprivileged context.

== Verdict ==
[VULN]    This system appears to be VULNERABLE to CVE-2026-31431.
[VULN]    Apply the vendor kernel update or blacklist algif_aead as a temporary mitigation.

Limitazioni

  • La tabella delle versioni corrette copre solo le famiglie elencate sopra. Le PR per estenderla sono benvenute.
  • Lo script si fida di uname -r. Se stai eseguendo un kernel out-of-tree o ricostruito, il confronto delle versioni potrebbe non riflettere se la correzione è stata effettivamente backportata.
  • Gli ambienti container/sandbox live potrebbero segnalare blocked_permission per AF_ALG semplicemente perché è in atto seccomp — il kernel host stesso potrebbe essere ancora vulnerabile.

Riferimenti

  • Avviso CERT-EU 2026-005
  • Divulgazione Xint: 732 byte per root su ogni principale distribuzione Linux
  • AlmaLinux: patch CVE-2026-31431 rilasciate
  • Ubuntu: correzioni per vulnerabilità Copy Fail disponibili
  • Blog sulla sicurezza Microsoft: Copy Fail in ambienti cloud
  • Sophos: exploit PoC disponibile
  • Risposta di SUSE a copy.fail
  • Copertura di The Hacker News
  • Bugcrowd: Cosa sappiamo su Copy Fail
  • Copertura di The Register

Licenza

MIT — usa, modifica e distribuisci liberamente. Nessuna garanzia.

Scarica lo strumento
DistribuzioneKernel corretto (≥)
AlmaLinux / RHEL / Rocky / CentOS 84.18.0-553.121.1.el8_10
AlmaLinux / RHEL / Rocky / CentOS 95.14.0-611.49.2.el9_7
AlmaLinux / RHEL / Rocky / CentOS 106.12.0-124.52.2.el10_1
Ubuntu 26.04+ ("Resolute")non affetto
Ubuntu 18.04 – 25.10rolling, vedere apt
Debian (tutte le suite)rolling, vedere DSA
VerdettoCodice di uscitaSignificato
patched0Il kernel in esecuzione è alla versione corretta dal vendor o superiore.
mitigated0AF_ALG è bloccato e il modulo non è caricato.
likely_mitigated0Il modulo è blacklistato e non caricato; nessuna sonda live possibile.
vulnerable1Il kernel non è patchato e algif_aead / AF_ALG è raggiungibile.
unknown2Segnale insufficiente per decidere. Considerare potenzialmente vulnerabile.
not_applicable3Non in esecuzione su Linux.