
Semantische Analyse-Engine zur Erkennung von Schwachstellenbehebungen in Windows-Kernel-Treiber-Patches — 58 YAML-Regeln, Ghidra-Dekompilierung, Erreichbarkeitsverfolgung und Bewertung
Automatisiertes Patch-Intelligence- und Finding-Framework
Eine semantische Analyse-Engine zur Erkennung von Sicherheitslücken-Fixes in Windows-Kernel-Treiber-Patches. AutoPiff verwendet konservative YAML-Regeln, um sicherheitsrelevante Codeänderungen mit hoher Präzision und Erklärbarkeit zu identifizieren.
AutoPiff analysiert die Unterschiede zwischen verwundbaren und gepatchten Treiberversionen, um automatisch Folgendes zu erkennen:
ExFreePool)memcpy)ProbeForRead/ProbeForWrite)Hersteller veröffentlicht 500 Treiber-Updates/Jahr
├── 490 sind Funktions-/Leistungs-/kosmetische Änderungen
├── 8 sind kleinere Fehlerbehebungen
└── 2 sind stille Sicherheitsfixes (kein CVE zugewiesen)
Ohne Automatisierung: Manuelles Überprüfen von 500, um 2 zu finden
Mit AutoPiff: Überprüfung von 10 hoch bewerteten, um 2 zu finden
Sicherheitspatches werden oft ohne CVE-Zuweisung veröffentlicht. Manuelles Reverse-Engineering jedes Treiber-Updates, um die sicherheitsrelevanten zu finden, ist nicht praktikabel. AutoPiff löst dieses Problem, indem es automatisch die relevanten Änderungen hervorhebt.
| Phase | Manueller Aufwand | Mit AutoPiff | Zeitersparnis |
|---|---|---|---|
| Versionspaarung | 5-15 Min./Treiber | Automatisch | ~100 % |
| Dekompilierung | 2-10 Min./Binärdatei | Gebündelt, parallel | ~95 % |
| Funktionsabgleich | 30-60 Min./Paar | Sofort | ~100 % |
| Identifizierung von Sicherheitsänderungen | 2-8 Std./Paar | Sekunden | ~99 % |
| Erste Sichtung & Bewertung | 1-2 Std. | Sofort | ~100 % |
| Berichterstellung | 30-60 Min. | Sofort | ~100 % |
Gesamt: 4-12 Stunden pro Treiberpaar auf 2-5 Minuten reduziert
┌─────────────────────────────────────────────────────────────────┐
│ AUTOMATISIERT durch AutoPiff │
│ ├── Finde die Nadel: "Diese Funktion hat sich nahe ExFreePool │
│ │ geändert" │
│ ├── Klassifiziere: "Sieht aus wie ein Use-After-Free-Fix" │
│ └── Bewerte: "Punktzahl 5,5 – eine Untersuchung wert" │
├─────────────────────────────────────────────────────────────────┤
│ WEITERHIN MANUELL (Ihr Fachwissen) │
│ ├── Bestätige Ausnutzbarkeit: "Kann ich das tatsächlich │
│ │ auslösen?" │
│ ├── Ursachenanalyse: "Warum war das verwundbar?" │
│ ├── Exploit-Entwicklung: "Wie erreiche ich diesen Sink?" │
│ └── Auswirkungsbewertung: "Welches reale Risiko besteht?" │
└─────────────────────────────────────────────────────────────────┘
AutoPiff ersetzt nicht die Exploit-Forschung. Es macht sie im großen Maßstab durchführbar, indem es die Aufklärungsphase automatisiert.
1. Stille Patch-Erkennung
2. 1-Tage-Schwachstellenforschung
3. Sicherheitsaudit von Herstellern
4. Aufbau eines historischen CVE-Korpus
AutoPiff läuft als Karton-Pipeline mit 8 aufeinanderfolgenden Stufen plus einem parallelen DriverAtlas-Triage-Zweig. Jede Stufe ist ein unabhängiger Mikroservice, der über Redis/RabbitMQ kommuniziert.
graph LR
sources["WinBIndex<br/>VirusTotal"]:::src --> s0["Stufe 0<br/>Monitor"]
s0 --> s14["Stufen 1-4<br/>Patch Differ"]
s0 --> triage["DriverAtlas<br/>Triage"]:::triage
s14 --> s5["Stufe 5<br/>Erreichbarkeit"]
s5 --> s6["Stufe 6<br/>Bewertung"]
s6 --> s7["Stufe 7<br/>Bericht"]
s6 --> s8["Stufe 8<br/>Alarm"]
triage --> alerts["MWDB-Tags<br/>+ Alarme"]:::triage
classDef src fill:#1a1a2e,stroke:#e94560,color:#eee
classDef triage fill:#1a1a2e,stroke:#e9a345,color:#eee
classDef default fill:#16213e,stroke:#0f3460,color:#eee
| Stufe | Service | Aufgabe |
|---|---|---|
| 0 | driver-monitor | Fragt WinBIndex und VirusTotal nach neuen Treiberversionen ab, lädt in MWDB hoch |
| 1-4 | karton-patch-differ | Versionspaarung, Ghidra-Dekompilierung, Funktionsabgleich, semantische Regelauswertung |
| 5 | karton-reachability | Ghidra-Call-Graph-BFS von IOCTL/IRP-Einstiegspunkten zu geänderten Funktionen, vollständiger Dekompilierungs-Export |
| 6 | karton-ranking | Bewertet Funde anhand von Erreichbarkeit, semantischer Schwere und Angriffsfläche |
| 7 | karton-report | Erstellt strukturierte Markdown-Berichte, lädt in MWDB hoch |
| 8 | autopiff-alerter | Sendet Telegram-Benachrichtigungen für Funde mit einem Wert >= 8,0 |
| — | autopiff-driver-triage | DriverAtlas-Angriffsflächenbewertung (parallel zu 1-4), taggt MWDB-Beispiele, Telegram-Benachrichtigungen |
AutoPiff enthält 58 Regeln in 22 Kategorien. Siehe Docs/semantic_rules.md für die vollständige Spezifikation und Docs/SEMANTIC_RULES_REFERENCE.md für die technische Referenz.
| Kategorie | Beispielerkennung |
|---|---|
bounds_check | Hinzugefügte Längenprüfung vor memcpy |
lifetime_fix | Null-Zuweisung nach ExFreePool |
user_boundary_check | Hinzugefügte ProbeForRead/ProbeForWrite |
int_overflow | Verwendung sicherer Mathe-Helfer |
state_hardening | Interlocked-Referenzzählungsoperationen |
ioctl_input_validation | Neue Größen-/Typenprüfungen in Dispatch-Handlern |
pool_type_hardening | Migration zu NonPagedPoolNx |
privilege_check | Hinzugefügte SeSinglePrivilegeCheck |
Die Regel-Engine verfolgt 50+ gefährliche API-Symbole in 8 Sink-Gruppen: