Erkennung von Exploits in strukturierten Dateiformaten (0‑Click Chains)
Reading time: 6 minutes
tip
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
Diese Seite fasst praktische Techniken zusammen, um 0‑Click mobile Exploit‑Dateien zu erkennen, indem strukturelle Invarianten ihrer Formate validiert werden, anstatt sich auf Byte‑Signaturen zu verlassen. Der Ansatz generalisiert über Samples, polymorphe Varianten und zukünftige Exploits, die dieselbe Parser‑Logik missbrauchen.
Kernidee: kodieren struktureller Unmöglichkeiten und feldübergreifender Inkonsistenzen, die nur auftreten, wenn ein verwundbarer Decoder/Parser‑Zustand erreicht wird.
Siehe auch:
Warum Struktur, statt Signaturen
Wenn weaponisierte Samples nicht verfügbar sind und Payload‑Bytes mutieren, versagen traditionelle IOC/YARA‑Muster. Strukturelle Erkennung prüft das deklarierte Layout des Containers gegenüber dem, was für die Formatimplementierung mathematisch oder semantisch möglich ist.
Typische Prüfungen:
- Validiere Tabellengrößen und Grenzen, abgeleitet aus der Spezifikation und sicheren Implementierungen
- Markiere illegale/undokumentierte opcodes oder Zustandsübergänge in eingebettetem bytecode
- Kreuzprüfe metadata gegen tatsächlich codierte Stream‑Komponenten
- Erkenne widersprüchliche Felder, die auf Parserverwirrung oder Integer‑Overflow‑Setups hindeuten
Unten folgen konkrete, feldgetestete Muster für mehrere hochwirksame Chains.
PDF/JBIG2 – FORCEDENTRY (CVE‑2021‑30860)
Target: In PDFs eingebettete JBIG2‑Symbolwörterbücher (oft beim mobilen MMS‑Parsing verwendet).
Strukturelle Signale:
- Widersprüchlicher Wörterbuchzustand, der in harmlosen Inhalten nicht vorkommt, aber erforderlich ist, um den Overflow in der arithmetischen Dekodierung auszulösen.
- Verdächtige Verwendung globaler Segmente kombiniert mit abnormalen Symbolzählungen während der Refinement‑Codierung.
Pseudo‑logic:
# Detecting impossible dictionary state used by FORCEDENTRY
if input_symbols_count == 0 and (ex_syms > 0 and ex_syms < 4):
mark_malicious("JBIG2 impossible symbol dictionary state")
Praktische Triage:
- JBIG2-Ströme aus dem PDF identifizieren und extrahieren
- pdfid/pdf-parser/peepdf verwenden, um Streams zu finden und zu dumpen
- Arithmetische-Codierungs-Flags und Parameter des Symboldictionaries gegen die JBIG2 spec prüfen
Hinweise:
- Funktioniert ohne eingebettete payload-Signaturen
- Niedrige FP-Rate in der Praxis, da der markierte Zustand mathematisch inkonsistent ist
WebP/VP8L – BLASTPASS (CVE‑2023‑4863)
Ziel: WebP lossless (VP8L) Huffman-Präfix-Code-Tabellen.
Strukturelle Signale:
- Die Gesamtgröße der konstruierten Huffman-Tabellen überschreitet die sichere obere Grenze, die von den Referenz-/gepatchten Implementierungen erwartet wird, was die Überlauf-Voraussetzung impliziert.
Pseudo‑logic:
# Detect malformed Huffman table construction triggering overflow
let total_size = sum(table_sizes)
if total_size > 2954: # example bound: FIXED_TABLE_SIZE + MAX_TABLE_SIZE
mark_malicious("VP8L oversized Huffman tables")
Praktische Triage:
- Überprüfe WebP-Container-Chunks: VP8X + VP8L
- Parst VP8L-Präfixcodes und berechnet tatsächlich alloziierte Tabellengrößen
Hinweise:
- Robust gegenüber byte‑level-Polymorphismus der payload
- Die Grenze wird aus upstream limits/patch analysis abgeleitet
TrueType – TRIANGULATION (CVE‑2023‑41990)
Target: TrueType bytecode inside fpgm/prep/glyf programs.
Strukturelle Signale:
- Vorhandensein von undokumentierten/verbotenen opcodes im Apple’s interpreter, die von der exploit chain verwendet werden.
Pseudo‑logic:
# Flag undocumented TrueType opcodes leveraged by TRIANGULATION
switch opcode:
case 0x8F, 0x90:
mark_malicious("Undocumented TrueType bytecode")
default:
continue
Praktische Triage:
- Font-Tabellen auslesen (z. B. mit fontTools/ttx) und fpgm/prep/glyf-Programme scannen
- Es ist nicht erforderlich, den Interpreter vollständig zu emulieren; Prüfungen auf Vorhandensein liefern oft bereits Wert
Hinweise:
- Kann selten False Positives erzeugen, wenn nichtstandardmäßige Fonts unbekannte Opcodes enthalten; mit sekundären Tools validieren
DNG/TIFF – CVE‑2025‑43300
Ziel: DNG/TIFF-Bildmetadaten vs. tatsächliche Anzahl der Komponenten im kodierten Stream (z. B. JPEG‑Lossless SOF3).
Strukturelle Signale:
- Inkonsistenz zwischen EXIF/IFD-Feldern (SamplesPerPixel, PhotometricInterpretation) und der Anzahl der Komponenten, die aus dem Image-Stream-Header geparst werden und von der Pipeline verwendet werden.
Pseudo‑Logic:
# Metadata claims 2 samples per pixel but stream header exposes only 1 component
if samples_per_pixel == 2 and sof3_components == 1:
mark_malicious("DNG/TIFF metadata vs. stream mismatch")
Praktische Triage:
- Primäre IFD- und EXIF-Tags parsen
- Eingebetteten JPEG-Lossless-Header (SOF3) finden und parsen; Komponentenanzahl vergleichen
Hinweise:
- In der Praxis als ausgenutzt gemeldet; ausgezeichneter Kandidat für strukturelle Konsistenzprüfungen
Implementierungsmuster und Leistung
Ein praktischer Scanner sollte:
- Dateityp automatisch erkennen und nur relevante Analysatoren starten (PDF/JBIG2, WebP/VP8L, TTF, DNG/TIFF)
- Streaming/Teilparsing verwenden, um Allokationen zu minimieren und frühes Abbrechen zu ermöglichen
- Analysen parallel ausführen (Thread‑Pool) für Massen‑Triage
Beispielablauf mit ElegantBouncer (Open‑Source Rust-Implementierung dieser Prüfungen):
# Scan a path recursively with structural detectors
$ elegant-bouncer --scan /path/to/directory
# Optional TUI for parallel scanning and real‑time alerts
$ elegant-bouncer --tui --scan /path/to/samples
DFIR-Tipps und Sonderfälle
- Eingebettete Objekte: PDFs können Bilder (JBIG2) und Fonts (TrueType) einbetten; extrahieren und rekursiv scannen
- Decompression safety: verwende Bibliotheken, die Tabellen/Puffer vor der Allokation strikt begrenzen
- Fehlalarme: halte Regeln konservativ, bevorzuge Widersprüche, die gemäß Spezifikation unmöglich sind
- Versionsdrift: Grenzen neu bestimmen (z. B. VP8L-Tabellengrößen), wenn Upstream-Parser ihre Limits ändern
Verwandte Tools
- ElegantBouncer – struktureller Scanner für die oben genannten Erkennungen
- pdfid/pdf-parser/peepdf – PDF-Objekt-Extraktion und statische Analyse
- pdfcpu – PDF-Linter/Sanitizer
- fontTools/ttx – TrueType-Tabellen und Bytecode ausgeben
- exiftool – TIFF/DNG/EXIF-Metadaten lesen
- dwebp/webpmux – WebP-Metadaten und Chunks parsen
Quellen
- ELEGANTBOUNCER: When You Can't Get the Samples but Still Need to Catch the Threat
- ElegantBouncer project (GitHub)
- Untersuchung von FORCEDENTRY: Den Exploit ohne Samples erkennen
- Untersuchung von BLASTPASS – Den Exploit in einer WebP-Datei erkennen (Teil 1)
- Untersuchung von BLASTPASS – Analyse der Apple & Google WebP PoC-Datei (Teil 2)
- Untersuchung von TRIANGULATION – CVE‑2023‑41990 mit Ein-Byte-Signaturen erkennen
- CVE‑2025‑43300: Kritische Schwachstelle in Apples DNG-Bildverarbeitung entdeckt
tip
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.