
Harness di analisi e validazione non armato per CVE-2016-5195 (Dirty COW) con ricerca sulle cause profonde, revisione della patch upstream e PoC sicuro esclusivamente per laboratorio per kernel confermati.
Ricerca difensiva, validazione non weaponizzata e analisi della patch per CVE-2016-5195 (Dirty COW), una condizione di gara copy-on-write nel kernel Linux che può consentire a un utente locale di modificare dati associati a un mapping di sola lettura e ottenere privilegi elevati.
| Campo | Valore |
|---|---|
| Componente | Gestione della memoria del kernel Linux / get_user_pages() |
| Debolezza | CWE-362: Esecuzione concorrente mediante risorsa condivisa con sincronizzazione impropria |
| Gravità | Alta, CVSS 3.1: 7.0 |
| Vettore | CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H |
| Prerequisito dell'attacco | Accesso locale con privilegi limitati |
| Fix upstream | 19be0eaffa3ac7d8eb6784ad9bdbc7d67ed8e619 |
| Prima release upstream corretta | Linux 4.8.3; i backport delle distribuzioni variano |
Dirty COW è una gara nella gestione da parte del kernel Linux delle scritture forzate e dei
mapping copy-on-write (COW). Un utente locale può mettere in gara l'invalidazione delle pagine contro una
scrittura tramite /proc/self/mem. Su un kernel affetto, la gara può far sì che i dati
associati a un mapping privato nominalmente di sola lettura vengano riscritti nel
file sottostante.
L'impatto pubblico è l'elevazione locale dei privilegi quando un attaccante può applicare la primitiva a un file sensibile per la sicurezza. La vulnerabilità è stata sfruttata in natura nell'ottobre 2016. Questo repository non automatizza tale percorso di elevazione.
L'harness predefinito è volutamente vincolato:
cc -std=c11 -Wall -Wextra -Wpedantic -Werror -O2 \
poc.c -o dirtycow-safe -pthread
La primitiva exploit solo per laboratorio può essere compilata separatamente:
cc -std=c11 -Wall -Wextra -Wpedantic -Werror -O2 \
exploit.c -o dirtycow-exploit -pthread
./dirtycow-safe
Conteggio di iterazioni limitato opzionale:
./dirtycow-safe --iterations 5000000
Risultati possibili:
marker-observed: il comportamento vulnerabile è stato osservato sull'inode usa e getta.marker-not-observed: non conclusivo. Una gara che non si innesca non prova
che il kernel sia corretto.77: l'interfaccia Linux richiesta /proc/self/mem non è disponibile.Non usare il risultato del PoC come controllo primario dello stato della patch. Consulta l'avviso del pacchetto kernel per la distribuzione in esecuzione e verifica che il kernel patchato sia attivo dopo il riavvio.
exploit.c accetta un file esplicito e un prefisso di sostituzione e
dimostra la primitiva di scrittura su file arbitrario su un kernel affetto. Richiede
la conferma letterale --i-understand, applica limiti limitati di payload e di
iterazioni e non costruisce un payload di elevazione dei privilegi.
Il file selezionato può essere modificato in modo permanente. Usalo solo in un
laboratorio isolato e usa e getta di tua proprietà o esplicitamente autorizzato al test. L'analisi
completa della gara e delle transizioni di stato è in ROOT_CAUSE.md.
evidence/evidence.json registra le firme sorgente
osservate nelle revisioni Linux ufficiali pre-fix e fixed, il risultato della compilazione del
PoC senza warning e le proprietà di sicurezza della validazione.
evidence/validation.log fornisce un riepilogo conciso.
La validazione catturata non ha eseguito la gara.
Installa l'aggiornamento del kernel fornito dal vendor e riavvia nel kernel patchato. Non determinare l'esposizione solo dalla stringa di versione upstream: i kernel enterprise e delle distribuzioni in genere backportano il fix senza adottare il numero di versione upstream. I container usano il kernel dell'host, quindi il rimedio deve coprire l'host.
Vedi PATCH_ANALYSIS.md per la modifica upstream esatta e
VULNERABILITY_REPORT.md per le linee guida di validazione.
Usa questo materiale solo su sistemi di tua proprietà o esplicitamente autorizzati al test.
| Percorso | Scopo |
|---|
poc.c | Validazione non weaponizzata che usa solo un inode temporaneo non collegato |
exploit.c | Primitiva di scrittura su file arbitrario per un laboratorio usa e getta autorizzato |
ROOT_CAUSE.md | Analisi dettagliata della transizione di stato vulnerabile e della gara |
VULNERABILITY_REPORT.md | Precondizioni, causa principale, impatto e rimedio |
PATCH_ANALYSIS.md | Analisi riga per riga del fix upstream FOLL_COW |
evidence/ | Output di validazione strutturato e note di interpretazione |