
Nicht-waffenfähiger Analyse- und Validierungs-Harness für CVE-2016-5195 (Dirty COW) mit Root-Cause-Analyse, Upstream-Patch-Review und sicherem, nur für Labore bestimmtem PoC für bestätigte Kernel.
Defensive Forschung, nicht-weaponisierte Validierung und Patch-Analyse für CVE-2016-5195 (Dirty COW), eine Copy-on-Write-Race-Condition im Linux-Kernel, die es einem lokalen Benutzer ermöglichen kann, Daten zu verändern, die mit einem schreibgeschützten Mapping verknüpft sind, und erhöhte Privilegien zu erlangen.
| Feld | Wert |
|---|---|
| Komponente | Linux-Kernel-Speicherverwaltung / get_user_pages() |
| Schwachstelle | CWE-362: Concurrent Execution using Shared Resource with Improper Synchronization |
| Schweregrad | Hoch, CVSS 3.1: 7.0 |
| Vektor | CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H |
| Angriffsvoraussetzung | Lokaler Zugriff mit niedrigen Privilegien |
| Upstream-Korrektur | 19be0eaffa3ac7d8eb6784ad9bdbc7d67ed8e619 |
| Erste korrigierte Upstream-Version | Linux 4.8.3; Distribution-Backports variieren |
Dirty COW ist eine Race-Condition in der Behandlung von erzwungenen Schreibvorgängen und Copy-on-Write-Mappings (COW) des Linux-Kernels. Ein lokaler Benutzer kann die Seiteninvalidierung gegen einen Schreibvorgang über /proc/self/mem ausspielen. Auf einem betroffenen Kernel kann die Race-Condition dazu führen, dass Daten, die mit einem nominell schreibgeschützten privaten Mapping verknüpft sind, zurück in die zugrunde liegende Datei geschrieben werden.
Die öffentliche Auswirkung ist eine lokale Privilegienausweitung, wenn ein Angreifer die Primitive auf eine sicherheitsrelevante Datei anwenden kann. Die Schwachstelle wurde im Oktober 2016 in freier Wildbahn ausgenutzt. Dieses Repository automatisiert diesen Pfad zur Privilegienausweitung nicht.
Das Standard-Harness ist absichtlich eingeschränkt:
cc -std=c11 -Wall -Wextra -Wpedantic -Werror -O2 \
poc.c -o dirtycow-safe -pthread
Die rein auf das Labor beschränkte Exploit-Primitive kann separat erstellt werden:
cc -std=c11 -Wall -Wextra -Wpedantic -Werror -O2 \
exploit.c -o dirtycow-exploit -pthread
./dirtycow-safe
Optionale begrenzte Iterationsanzahl:
./dirtycow-safe --iterations 5000000
Mögliche Ergebnisse:
marker-observed: anfälliges Verhalten wurde auf dem Wegwerf-Inode beobachtet.marker-not-observed: nicht schlüssig. Eine nicht ausgelöste Race-Condition beweist nicht, dass der Kernel korrigiert ist.77: die erforderliche Linux-Schnittstelle /proc/self/mem ist nicht verfügbar.Verwenden Sie das PoC-Ergebnis nicht als primäre Prüfung des Patch-Status. Konsultieren Sie das Kernel-Paket-Advisory für die laufende Distribution und verifizieren Sie, dass der gepatchte Kernel nach einem Neustart aktiv ist.
exploit.c akzeptiert eine explizite Datei und ein Ersetzungspräfix und demonstriert die Schreibprimitive für beliebige Dateien auf einem betroffenen Kernel. Es erfordert die wörtliche Bestätigung --i-understand, wendet begrenzte Nutzlast- und Iterationslimits an und erstellt keine Nutzlast zur Privilegienausweitung.
Die ausgewählte Datei kann dauerhaft verändert werden. Verwenden Sie sie nur in einem isolierten Wegwerf-Labor, das Ihnen gehört oder für das Sie ausdrücklich zum Testen autorisiert sind. Die vollständige Analyse der Race-Condition und des Zustandsübergangs finden Sie in ROOT_CAUSE.md.
evidence/evidence.json hält die Quellsignaturen fest, die in den offiziellen Linux-Versionen vor und nach dem Fix beobachtet wurden, das warnungsfreie PoC-Build-Ergebnis und die Sicherheitseigenschaften der Validierung. evidence/validation.log liefert eine prägnante Zusammenfassung. Die erfasste Validierung hat die Race-Condition nicht ausgeführt.
Installieren Sie das vom Hersteller bereitgestellte Kernel-Update und starten Sie in den gepatchten Kernel neu. Entscheiden Sie über die Gefährdung nicht allein anhand der Upstream-Versionszeichenfolge: Enterprise- und Distributions-Kernel portieren den Fix häufig zurück, ohne die Upstream-Versionsnummer zu übernehmen. Container verwenden den Host-Kernel, daher muss die Behebung den Host abdecken.
Siehe PATCH_ANALYSIS.md für die genaue Upstream-Änderung und VULNERABILITY_REPORT.md für Hinweise zur Validierung.
Verwenden Sie dieses Material nur auf Systemen, die Ihnen gehören oder für die Sie ausdrücklich zum Testen autorisiert sind.
| Pfad | Zweck |
|---|
poc.c | Nicht-weaponisierte Validierung, die ausschließlich einen unverlinkten temporären Inode verwendet |
exploit.c | Schreibprimitive für beliebige Dateien für ein autorisiertes Wegwerf-Labor |
ROOT_CAUSE.md | Detaillierte Analyse des anfälligen Zustandsübergangs und der Race-Condition |
VULNERABILITY_REPORT.md | Vorbedingungen, Grundursache, Auswirkungen und Behebung |
PATCH_ANALYSIS.md | Analyse auf Zeilenebene der Upstream-Korrektur FOLL_COW |
evidence/ | Strukturierte Validierungsausgabe und Hinweise zur Interpretation |