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
Strumenti/GitHubGitHub/rippsec/cve-2026-31431-copy-fail
Escalation di PrivilegiAnalisi delle VulnerabilitàExploitApprendimento e FormazioneRed TeamingRisposta agli Incidenti
GitHubrippsec/cve-2026-31431-copy-fail

CVE-2026-31431-Copy-Fail

Analisi completa di CVE-2026-31431, una LPE del kernel Linux, che include metodologia di exploit, script di rilevamento, regole YARA, configurazioni auditd e Falco, e indicazioni di remediation.

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
Vedi Repository
1245 mesi faNon ancora revisionato

CVE-2026-31431 — "Copy Fail": Escalatione dei Privilegi Locali nel Kernel Linux algif_aead

CISA KEV | CVSS 7.8 ALTO | Interessa i kernel Linux 4.14 – inizio 2026 (~9 anni)


Indice

  1. Sommario Esecutivo
  2. Valutazione del Rischio
  3. Analisi Tecnica Approfondita
  4. Metodologia di Attacco — Red Team
  5. Rilevamento e Risposta agli Incidenti — Blue Team
  6. Patch e Rimedio
  7. Ambiente di Laboratorio
  8. Riferimenti

1. Sommario Esecutivo

CVE-2026-31431, soprannominata "Copy Fail", è una vulnerabilità di escalatione dei privilegi locali (LPE) ad alta gravità nel sottosistema crittografico del kernel Linux. Un utente locale con privilegi bassi può ottenere accesso root in pochi secondi su qualsiasi sistema non patchato.

AttributoValore
CVECVE-2026-31431
SoprannomeCopy Fail
CVSS v3.17.8 ALTO
Vettore di AttaccoLocale
Privilegi RichiestiBassi
Interazione UtenteNessuna
Componentecrypto/algif_aead.c — template authencesn
Introdotta2017 (commit 72548b093ee3)
Divulgata2026
Anni di Silenzio~9 anni
CISA KEVSì
PoC PubblicoSì (script Python autonomo da 732 byte)

Impatto Aziendale

  • Accesso root su qualsiasi server Linux, VM, istanza cloud o host di container non patchato
  • Fuga dal container dai pod Kubernetes — la cache di pagina è condivisa con il kernel host
  • Nessuna impronta su disco — lo sfruttamento non lascia modifiche ai file, pagine sporche o tracce di audit tramite i tool standard di integrità dei file (Tripwire, AIDE)
  • Interessa Red Hat, Ubuntu, Debian, SUSE, Amazon Linux e praticamente tutte le principali distribuzioni che eseguono kernel dal 2017 in poi

Azione Immediata Raccomandata

  1. Mitigazione temporanea (implementare subito, nessun riavvio richiesto se il modulo non è caricato): ```bash echo "install algif_aead /bin/false" | sudo tee /etc/modprobe.d/disable-algif-aead.conf sudo rmmod algif_aead 2>/dev/null || true
  2. Correzione permanente: aggiorna i pacchetti del kernel tramite il gestore pacchetti della tua distribuzione e riavvia.
  3. Verifica: esegui detection/check_vulnerable.sh prima e dopo la correzione.

2. Valutazione del rischio

Stringa del vettore CVSS 3.1```

CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

| Metrica | Valore | Motivazione |
|--------|-------|-----------|
| Vettore di attacco | **Locale** | Richiede accesso alla shell (SSH, exec in container, fisico) |
| Complessità dell'attacco | **Bassa** | Affidabile, completamente automatizzato — nessuna race condition richiesta |
| Privilegi richiesti | **Bassi** | Qualsiasi account utente non privilegiato |
| Interazione utente | **Nessuna** | Nessuna interazione con la vittima richiesta |
| Riservatezza | **Alta** | Compromissione completa del sistema |
| Integrità | **Alta** | Compromissione completa del sistema |
| Disponibilità | **Alta** | Compromissione completa del sistema |

### Panorama delle minacce

| Fattore | Valutazione |
|--------|-----------|
| Disponibilità del PoC | Pubblico, armato, Python standalone da 732 byte |
| Affidabilità dell'exploit | Alta — funziona sulle distro testate senza modifiche |
| Difficoltà di rilevamento | Alta — nessuna scrittura su disco, nessuna dirty page |
| Competenza richiesta all'attaccante | Bassa — script kiddie con PoC pubblico |
| CISA KEV | Aggiunto nel 2026 — monitorato attivamente |
| Microsoft Defender | Segnalato come sotto indagine attiva |

### Ambienti interessati

| Ambiente | Rischio |
|-------------|------|
| Server Linux bare-metal | Critico |
| VM Linux (cloud o on-premise) | Critico |
| Nodi Kubernetes | Critico (consente anche la fuga dal container) |
| Host Docker | Critico |
| Hosting condiviso / multi-tenant | Critico |
| WSL2 / Linux su Windows | Valutare in base alla versione del kernel |

---

## 3. Approfondimento tecnico

### 3.1 Contesto: AF_ALG e AEAD

Il kernel Linux espone le operazioni crittografiche agli utenti tramite **socket AF_ALG** (`AF_ALG = 38`). Questa interfaccia (`algif_aead`) consente alle applicazioni non privilegiate di invocare gli acceleratori hardware crittografici del kernel senza necessitare di codice in modalità kernel.

**AEAD** (Authenticated Encryption with Associated Data), algoritmi come AES-GCM e ChaCha20-Poly1305, è ampiamente utilizzato per TLS, crittografia del disco e protocolli VPN. Il template vulnerabile è `authencesn` — una composizione AEAD che utilizza `hmac(sha256)` + `cbc(aes)` con supporto Extended Sequence Number (ESN), comunemente usato in IPsec.

### 3.2 Causa principale

Nel 2017, il commit `72548b093ee3` ha introdotto l'**operazione AEAD in-place** in `algif_aead` come ottimizzazione delle prestazioni — consentendo al motore crittografico di leggere e scrivere lo stesso buffer. Questo era difettoso:```
The bug chain:

1. Caller binds AF_ALG socket to:
      authencesn(hmac(sha256),cbc(aes))

2. Caller sends a decryption request via sendmsg() with specific flags

3. Caller uses splice() to feed PAGE CACHE PAGES from an open file
   descriptor directly into the socket's scatterlist

4. The authencesn template, during ESN header processing, uses the
   OUTPUT BUFFER as scratch space — writing 4 bytes past the
   expected output boundary

5. Because the scatterlist contains page cache pages (not private
   copies), this scratch write lands DIRECTLY IN THE PAGE CACHE

6. Page cache is shared kernel-wide — all processes reading the
   same file now see the modified bytes

Key insight: splice() is zero-copy — it hands page cache references
to the socket. The in-place "optimization" then writes INTO those
pages. No dirty bit is set because the write goes through the crypto
engine, not the normal write path.

3.3 La Primitiva di Scrittura

La vulnerabilità fornisce una scrittura controllata di 4 byte nella cache delle pagine di qualsiasi file che l'attaccante può aprire in lettura:

ProprietàValore
Dimensione della scrittura4 byte
Controllo dell'offsetSì — controllato dall'attaccante tramite l'offset di splice
TargetCache delle pagine di qualsiasi file leggibile
Marcatura della pagina sporcaNessuna
Modifica su discoNessuna
Aggiornamento del timestampNessuno
Voce nel log del kernelNessuna (a meno che auditd non sia configurato)

La scrittura è ripetibile — l'exploit esegue un loop sulla scrittura di 4 byte per applicare patch a sequenze di codice più grandi.

3.4 Catena di Sfruttamento```

[1] Open /usr/bin/su (or any setuid-root binary) for reading ↓ [2] Map a copy to find target instruction bytes (e.g., UID check, execve path, security gate) ↓ [3] Compute exact page cache offset of target bytes ↓ [4] Set up AF_ALG socket → authencesn(hmac(sha256),cbc(aes)) ↓ [5] splice() the target binary's page cache into the socket ↓ [6] Trigger decryption → authencesn scratch write patches the target bytes in page cache (4 bytes per iteration) ↓ [7] Repeat for each 4-byte patch needed ↓ [8] Execute /usr/bin/su → runs root-owned setuid binary but now with attacker-controlled code in page cache ↓ [9] Root shell

### 3.5 Perché le Difese Standard Falliscono
Scarica lo strumento