
Kit didattico e difensivo per due LPE di corruzione della page cache di Linux (DirtyClone CVE-2026-43503, pedit COW CVE-2026-46331): hardening, rilevamento, verifica, seccomp + harness di validazione. Solo rilevamento e prevenzione — nessun codice di exploit. TLP:CLEAR.
Rileva, contieni e verifica le difese contro due escalation dei privilegi locali su Linux dovute alla corruzione della page-cache — DirtyClone (CVE-2026-43503) e pedit COW (CVE-2026-46331) — su host e container.
Questo è un kit di sicurezza educativo e difensivo. Spiega come funzionano entrambe le vulnerabilità a livello di syscall e include strumenti di hardening, rilevamento, verifica e seccomp — oltre a un harness di validazione che dimostra che gli strumenti funzionano su kernel reali. Non contiene exploit, shellcode o offset target, di proposito.
Entrambe le CVE consentono a un utente locale non privilegiato di diventare root corrompendo la page cache (la copia in RAM) di un binario con setuid root come /usr/bin/su — senza toccare mai il file su disco. Questo le rende furtive: il monitoraggio dell'integrità dei file rimane verde, la forense del disco non trova nulla e la corruzione si azzera al riavvio.
La vera soluzione è applicare la patch al kernel. Ma durante la finestra di distribuzione — e successivamente come difesa in profondità — devi chiudere i percorsi d'attacco, osservare la catena d'attacco e verificare la tua postura. È ciò che offre questo kit, con ogni controllo ricondotto a un passo documentato della catena dell'exploit, così puoi vedere perché funziona.
Entrambi i bug appartengono alla stessa classe di difetti: il kernel scrive in un buffer che ritiene privato mentre quel buffer è ancora supportato da memoria page-cache condivisa e basata su file. Due porte strutturali governano ogni variante di entrambe le catene:
Corretto a monte nelle release puntuali stabili (DirtyClone ≥ 6.12.91 / 7.0.10; pedit COW 6.12.94 / 7.0.13) più i backport dei vendor; il mainline 7.1 è definitivo. Verifica il tuo kernel sul tracker della tua distribuzione — vedi docs/analysis.md §8.
Solo host Linux. Questi script leggono e scrivono lo stato reale del kernel. Esegui l'hardening su un host che controlli; esegui l'harness di validazione distruttivo su una VM monouso. Vedi Requisiti.
# 1. Preview the host containment changes (writes nothing)
sudo ./kit/harden-pagecache-lpe.sh --dry-run
# 2. Apply userns restrictions + vulnerable-module blocks
sudo ./kit/harden-pagecache-lpe.sh
# 3. Verify posture — run the functional probe as an UNPRIVILEGED user
sudo -u nobody ./kit/verify-pagecache-lpe.sh # exit: 0=PASS 1=WARN 2=FAIL
# 4. (Optional) Watch the attack chain live with eBPF
sudo bpftrace ./kit/detect-pagecache-lpe.bt
Per i container, applica l'overlay seccomp (kit/seccomp-pagecache-lpe.json):
docker run --security-opt seccomp=kit/seccomp-pagecache-lpe.json <image>
Nuovo qui? Leggi START-HERE.md — un percorso guidato, in stile lezione, dalla causa principale fino a una run di validazione completa.
.
├── START-HERE.md Guided walkthrough — the recommended entry point
├── docs/ The "why": analysis and operator guidance
│ ├── analysis.md Root-cause analysis, attack chains, detection engineering
│ ├── HARDENING-GUIDE.md Operator containment guide (host → systemd → Docker → Kubernetes)
│ └── plain-language-summary.md Gentler, plain-English overview of both bugs
├── kit/ The "what you run": four self-contained artifacts
│ ├── harden-pagecache-lpe.sh Apply host containment (sysctl + module blocks)
│ ├── verify-pagecache-lpe.sh Read-only posture check (PASS/WARN/FAIL)
│ ├── detect-pagecache-lpe.bt bpftrace/eBPF telemetry for the staging chain
│ └── seccomp-pagecache-lpe.json Container seccomp overlay denying the chain's syscalls
└── testkit/ The "proof": validation harness + SHOWCASE.md writeup
harden, verify): un host Linux con bash, sysctl, modprobe e unshare. È richiesto root per l'hardening; esegui la sonda di verifica come utente non root.detect-pagecache-lpe.bt): richiede root, bpftrace ≥ 0.16 e kernel BTF (/sys/kernel/btf/vmlinux). Alcuni kprobe potrebbero essere inline su un dato kernel — l'intestazione dello script spiega come adattarsi.testkit/): una VM Linux monouso — scrive configurazione reale e rimuove i moduli del kernel. Il launcher EC2 richiede AWS CLI v2 e jq; non viene usato SSH (il trasporto è AWS SSM). Gli utenti macOS possono eseguire lo smoke test Docker locale, ma la validazione completa richiede Linux.TLP:CLEAR — distribuzione pubblica, senza restrizioni. Questo repository è solo rilevamento e prevenzione. Include deliberatamente:
…ed esclude deliberatamente:
I limiti onesti di questo approccio — cosa la validazione dimostra e cosa non dimostra — sono documentati in testkit/SHOWCASE.md §8. Usalo solo su sistemi di tua proprietà o su cui sei autorizzato a testare. L'hardening è contenimento, non una cura: applica la patch al kernel.
START-HERE.md — il percorso guidato (inizia qui)docs/analysis.md — l'analisi tecnica completadocs/plain-language-summary.md — una panoramica più accessibile in inglese sempliceIssue e pull request sono benvenute — vedi CONTRIBUTING.md. Poiché i controlli sono rispecchiati su più file (l'elenco dei moduli, le manopole userns, la bitmap di rilevamento), leggi gli invarianti di sincronizzazione in quella guida prima di modificare la superficie d'attacco.
Rilasciato sotto la Apache License 2.0.
| Porta | Cos'è | Efficacia come controllo |
|---|
| 1. Percorso delle capability | CAP_NET_ADMIN ottenuta tramite namespace utente non privilegiati (unshare(CLONE_NEWUSER|CLONE_NEWNET)) | Robusto punto di strozzatura — ogni variante deve passare da qui, nota e sconosciuta. Chiudilo per primo. |
| 2. Superficie dei moduli | Moduli vulnerabili: act_pedit, esp4/esp6, rxrpc, xt_TEE, nf_dup_ipv4/nf_dup_ipv6 | Difesa in profondità — rimuove solo le primitive note; un sink inedito lo aggirerebbe. |
| Componente | Ruolo |
|---|
docs/analysis.md | Fonte di verità: causa principale, catene d'attacco comportamentali, ingegneria del rilevamento, hardening, tabella comparativa. |
docs/HARDENING-GUIDE.md | Contenimento a più livelli per host, unità systemd, Docker/Podman e Kubernetes. |
kit/ | I quattro artefatti. Copia questa directory su un host per difenderlo. |
testkit/ | Validazione riproducibile su kernel reali (Docker locale + EC2 monouso) e SHOWCASE.md — una valutazione onesta di cosa i test dimostrano e cosa non dimostrano. |