Strukturele Lêer‑formaat Eksploit Opsporing (0‑Click Chains)
Reading time: 7 minutes
tip
Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
Hierdie bladsy som praktiese tegnieke op om 0‑click mobiele exploit lêers te ontdek deur die strukturele invarianties van hul formate te valideer in plaas daarvan om op byte‑handtekeninge te vertrou. Die benadering generaliseer oor monsters, polymorphic variants, en toekomstige exploits wat dieselfde parser logic misbruik.
Belangrikste idee: enkodeer strukturele onmoontlikhede en kruis‑veld inkonsekwenthede wat slegs verskyn wanneer 'n kwesbare decoder/parser‑toestand bereik word.
See also:
Waarom struktuur, nie handtekeninge nie
Wanneer weaponized samples onbeskikbaar is en payload bytes muteer, faal tradisionele IOC/YARA patrone. Strukturele opsporing inspekteer die houer se verklaarde uitleg teenoor wat wiskundig of semanties moontlik is vir die formaat‑implementering.
Tipiese kontroles:
- Valideer tabelgroottes en grense wat afgelei is uit die spesifikasie en veilige implementerings
- Merk onwettige/ondokumenteerde opcodes of toestandsoorgange in ingesluit bytecode
- Kruis‑kontroleer metadata VS werklike gekodeerde stroomkomponente
- Detecteer teenstrydige velde wat parser‑verwarring of integer overflow‑opstellings aandui
Hieronder is konkrete, veld‑getoetste patrone vir verskeie hoë‑impak chains.
PDF/JBIG2 – FORCEDENTRY (CVE‑2021‑30860)
Target: JBIG2 symbol dictionaries ingebed binne PDFs (dikwels gebruik in mobiele MMS parsing).
Strukturele seine:
- Teenstrydige dictionary‑toestand wat nie in goedaardige inhoud kan voorkom nie maar vereis word om die overflow in arithmetic decoding te trigger.
- Verdagte gebruik van global segments gekombineer met abnormale symbol counts tydens refinement coding.
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")
Praktiese triage:
- Identifiseer en ekstraheer JBIG2-strome uit die PDF
- pdfid/pdf-parser/peepdf om strome te lokaliseer en te dump
- Verifieer aritmetiese koderingvlae en simboolwoordeboek-parameters teen die JBIG2-spesifikasie
Aantekeninge:
- Werk sonder ingesette payload-handtekeninge
- Lae FP in praktyk omdat die geflagte toestand wiskundig inkonsistent is
WebP/VP8L – BLASTPASS (CVE‑2023‑4863)
Doelwit: WebP lossless (VP8L) Huffman prefix‑code tables.
Strukturele seinale:
- Totale grootte van die saamgestelde Huffman-tabelle oortref die veilige boonste grens wat deur die verwysings-/gepatchte implementasies verwag word, wat die oorloop-voorwaarde impliseer.
Pseudo‑logika:
# 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")
Praktiese triage:
- Kontroleer WebP container chunks: VP8X + VP8L
- Ontleed VP8L prefix codes en bereken werklike toegewezen tabelgroottes
Aantekeninge:
- Robuust teen byte‑vlak polimorfisme van die payload
- Grens is afgelei van upstream-limiete/patch-analise
TrueType – TRIANGULATION (CVE‑2023‑41990)
Teiken: TrueType bytecode binne fpgm/prep/glyf programme.
Strukturele seine:
- Aanwesigheid van ongedokumenteerde/verbode opcodes in Apple’s interpreter wat deur die exploit chain gebruik word.
Pseudo‑logika:
# Flag undocumented TrueType opcodes leveraged by TRIANGULATION
switch opcode:
case 0x8F, 0x90:
mark_malicious("Undocumented TrueType bytecode")
default:
continue
Praktiese triage:
- Eksporteer font‑tabelle (bv. met fontTools/ttx) en skandeer fpgm/prep/glyf‑programme
- Geen behoefte om die tolk volledig te emuleer om waarde uit aanwesigheidskontroles te kry
Aantekeninge:
- Kan seldsame FPs produseer as nie‑standaard fonte onbekende opkodes bevat; valideer met sekondêre gereedskap
DNG/TIFF – CVE‑2025‑43300
Doelwit: DNG/TIFF beeldmetadata VS werklike komponenttelling in die gekodeerde stroom (bv. JPEG‑Lossless SOF3).
Strukturele seine:
- Inkonsekwentheid tussen EXIF/IFD‑velde (SamplesPerPixel, PhotometricInterpretation) en die komponenttelling wat gepars word uit die beeldstroom‑header wat deur die pipeline gebruik word.
Pseudo‑logika:
# 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")
Praktiese triage:
- Ontleed primêre IFD- en EXIF-tags
- Vind en ontleed die ingeslote JPEG‑Lossless-kop (SOF3) en vergelyk komponenttelle
Aantekeninge:
- In die veld gerapporteer as uitgebuit; uitstekende kandidaat vir strukturele konsekwentheidskontroles
Implementasiepatrone en prestasie
'n Praktiese skandeerder moet:
- Outomaties lêertipe herken en slegs toepaslike ontleders aanroep (PDF/JBIG2, WebP/VP8L, TTF, DNG/TIFF)
- Stroom-/gedeeltelike ontleding om toewysings te minimaliseer en vroeë beëindiging moontlik te maak
- Voer ontledings parallel uit (thread‑pool) vir massa‑triage
Voorbeeld‑werkstroom met ElegantBouncer (open‑source Rust‑implementering van hierdie kontroles):
# 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 wenke en randgevalle
- Ingebedde objekte: PDFs kan beelde (JBIG2) en lettertipes (TrueType) inbed; onttrek en rekursief skandeer
- Decompressiebeveiliging: gebruik biblioteke wat tabelle/buffers streng beperk voordat hulle geallokeer word
- Valse positiewe: hou reëls konservatief, gee voorkeur aan teenstrydighede wat onmoontlik is volgens die spesifikasie
- Weergawe‑drift: stel die grondlyn vir grenswaardes weer (bv. VP8L-tabelgroottes) wanneer upstream parsers hul grense verander
Verwante gereedskap
- ElegantBouncer – strukturele skandeerder vir bogenoemde deteksies
- pdfid/pdf-parser/peepdf – PDF-objek-uittrekking en statiese ontleding
- pdfcpu – PDF-linter/saniteerder
- fontTools/ttx – lees TrueType-tabelle en bytekode uit
- exiftool – lees TIFF/DNG/EXIF-metadata
- dwebp/webpmux – ontleed WebP-metadata en chunks
References
- ELEGANTBOUNCER: When You Can't Get the Samples but Still Need to Catch the Threat
- ElegantBouncer project (GitHub)
- Researching FORCEDENTRY: Detecting the exploit with no samples
- Researching BLASTPASS – Detecting the exploit inside a WebP file (Part 1)
- Researching BLASTPASS – Analysing the Apple & Google WebP PoC file (Part 2)
- Researching TRIANGULATION – Detecting CVE‑2023‑41990 with single‑byte signatures
- CVE‑2025‑43300: Critical vulnerability found in Apple’s DNG image processing
tip
Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.