Detekcija eksploata zasnovanih na strukturi formata fajla (0‑Click Chains)
Tip
Učite i vežbajte AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Ova stranica sažima praktične tehnike za otkrivanje 0‑click mobilnih fajlova za eksploataciju proverom strukturnih invarianti njihovih formata umesto oslanjanja na bajt potpise. Pristup se generalizuje preko uzoraka, polimorfnih varijanti i budućih eksploita koji zloupotrebljavaju istu logiku parsiranja.
Ključna ideja: kodirati strukturne nemogućnosti i međupoljske nedoslednosti koje se pojavljuju samo kada se dostigne ranjivo stanje dekodera/parsera.
Vidi takođe:
Zašto struktura, a ne potpisi
Kada naoružani uzorci nisu dostupni i payload bajtovi mutiraju, tradicionalni IOC/YARA obrasci propadaju. Strukturna detekcija ispituje deklarisani raspored kontejnera naspram onoga što je matematički ili semantički moguće za implementaciju formata.
Tipične provere:
- Proveriti veličine tabela i granice izvedene iz specifikacije i sigurnih implementacija
- Označiti ilegalne/nedokumentovane opkode ili prelaze stanja u ugrađenom bytecode-u
- Uporediti metapodatke naspram stvarnih komponenti enkodiranog toka
- Otkrivati kontradiktorna polja koja ukazuju na zabunu parsera ili podešavanja za celobrojni preliv
Ispod su konkretni, u praksi testirani obrasci za više lanaca visokog uticaja.
PDF/JBIG2 – FORCEDENTRY (CVE‑2021‑30860)
Target: JBIG2 symbol dictionaries embedded inside PDFs (often used in mobile MMS parsing).
Strukturni signali:
- Kontradiktorno stanje rečnika koje se ne može pojaviti u benignom sadržaju, ali je potrebno da bi se pokrenuo preliv u aritmetičkom dekodiranju.
- Sumnjiva upotreba globalnih segmenata u kombinaciji sa abnormalnim brojem simbola tokom refinement kodiranja.
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")
Praktična trijaža:
- Identifikujte i izdvojite JBIG2 tokove iz PDF-a
- pdfid/pdf-parser/peepdf za lociranje i dumpovanje tokova
- Proverite arithmetic coding flagove i symbol dictionary parametre u odnosu na JBIG2 spec
Napomene:
- Radi bez ugrađenih payload potpisa
- Nizak FP u praksi jer je označeno stanje matematički nekonzistentno
WebP/VP8L – BLASTPASS (CVE‑2023‑4863)
Cilj: WebP lossless (VP8L) Huffman prefix‑code tables.
Strukturni signali:
- Ukupna veličina konstruisanih Huffman tabela prevazilazi bezbedni gornji prag koji se očekuje od referentnih/patchovanih implementacija, što implicira preuslov za overflow.
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")
Praktična trijaža:
- Proveri WebP kontejnerske chunk-ove: VP8X + VP8L
- Parsuj VP8L prefiks kodove i izračunaj stvarne dodeljene veličine tabela
Napomene:
- Otporno na polimorfizam na nivou bajta payload‑a
- Granica proizilazi iz analize ograničenja i patch‑ova u upstream‑u
TrueType – TRIANGULATION (CVE‑2023‑41990)
Cilj: TrueType bytecode unutar fpgm/prep/glyf programa.
Strukturni signali:
- Prisutnost nedokumentovanih/zabranjenih opkodova u Apple‑ovom interpreteru koje koristi exploit chain.
Pseudo‑logika:
# Flag undocumented TrueType opcodes leveraged by TRIANGULATION
switch opcode:
case 0x8F, 0x90:
mark_malicious("Undocumented TrueType bytecode")
default:
continue
Praktična trijaža:
- Izdvoj font tabele (npr. koristeći fontTools/ttx) i skeniraj fpgm/prep/glyf programe
- Nije potrebno potpuno emulirati interpretator da bi se dobile informacije iz provera prisustva
Napomene:
- Može proizvesti retke FP-ove ako nestandardni fontovi sadrže nepoznate opcodes; verifikujte sekundarnim alatima
DNG/TIFF – CVE‑2025‑43300
Cilj: DNG/TIFF metapodaci slike naspram stvarnog broja komponenti u enkodiranom streamu (npr. JPEG‑Lossless SOF3).
Strukturni signali:
- Nesaglasnost između EXIF/IFD polja (SamplesPerPixel, PhotometricInterpretation) i broja komponenti parsiranog iz zaglavlja image streama koje koristi pipeline.
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")
Praktična trijaža:
- Parsirati primarne IFD i EXIF tagove
- Pronaći i parsirati ugrađeni JPEG‑Lossless header (SOF3) i uporediti broj komponenti
Notes:
- Zabeleženo iskorišćavanje u stvarnom svetu; odličan kandidat za provere strukturne konzistentnosti
DNG/TIFF – Samsung libimagecodec.quram.so (CVE‑2025‑21042) + Appended ZIP payload (LANDFALL)
Target: DNG (TIFF‑derived) images carrying an embedded ZIP archive appended at EOF to stage native payloads after parser RCE.
Strukturni signali:
- File magic indicates TIFF/DNG (
II*\x00orMM\x00*) but filename mimics JPEG (e.g.,.jpg/.jpegWhatsApp naming). - Prisutnost ZIP Local File Header ili EOCD magic blizu EOF (
PK\x03\x04iliPK\x05\x06) koji nije referenciran ni u jednom TIFF IFD data regionu (strips/tiles/JPEGInterchangeFormat). - Neoobično velika količina podataka nakon poslednjeg referenciranog IFD data bloka (stotine KB do MB), što odgovara priloženom arhivu .so modula.
Pseudo‑logika:
# Detect appended ZIP payload hidden after DNG/TIFF data (Samsung chain)
if is_tiff_dng(magic):
ext = file_extension()
if ext in {".jpg", ".jpeg"}: mark_suspicious("Extension/magic mismatch: DNG vs JPEG")
zip_off = rfind_any(["PK\x05\x06", "PK\x03\x04"], search_window_last_n_bytes=8*1024*1024)
if zip_off >= 0:
end_dng = approx_end_of_tiff_data() # max(end of Strip/Tile/JPEGInterchangeFormat regions)
if zip_off > end_dng + 0x200:
mark_malicious("DNG with appended ZIP payload (LANDFALL‑style)")
Praktična trijaža:
- Identifikujte format u odnosu na ime:
- file sample; exiftool -s -FileType -MIMEType sample
- Pronađite ZIP footer/header blizu EOF i carve:
- off=$(grep -aboa -E $‘PK\x05\x06|PK\x03\x04’ sample.dng | tail -n1 | cut -d: -f1)
- dd if=sample.dng of=payload.zip bs=1 skip=“$off”
- zipdetails -v payload.zip; unzip -l payload.zip
- Proverite da se TIFF data regije ne preklapaju sa carved ZIP regionom:
- tiffdump -D sample.dng | egrep ‘StripOffsets|TileOffsets|JPEGInterchangeFormat|StripByteCounts|TileByteCounts|JPEGInterchangeFormatLength’
- Verify
max(offset+length) << zip_off - One‑shot carving (coarse): binwalk -eM sample.dng
Napomene:
- Exploited in the wild against Samsung’s libimagecodec.quram.so (CVE‑2025‑21042). The appended ZIP contained native modules (e.g., loader + SELinux policy editor) extracted/executed post‑RCE.
Implementation patterns and performance
Praktičan skener treba:
- Automatski detektovati tip fajla i pokretati samo relevantne analizatore (PDF/JBIG2, WebP/VP8L, TTF, DNG/TIFF)
- Koristiti stream/partial‑parse da se minimizuju alokacije i omogući rani prekid
- Pokretati analize paralelno (thread‑pool) za masovnu trijažu
Example workflow with ElegantBouncer (open‑source Rust implementation of these checks):
# 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 saveti i granični slučajevi
- Embedded objects: PDFs may embed images (JBIG2) and fonts (TrueType); extract and recursively scan
- Decompression safety: use libraries that hard‑limit tables/buffers before allocation
- False positives: keep rules conservative, favor contradictions that are impossible under the spec
- Version drift: re‑baseline bounds (e.g., VP8L table sizes) when upstream parsers change limits
Povezani alati
- ElegantBouncer – strukturni skener za gore navedene detekcije
- pdfid/pdf-parser/peepdf – ekstrakcija PDF objekata i statička analiza
- pdfcpu – PDF linter/sanitizer
- fontTools/ttx – ispis TrueType tabela i bytecode-a
- exiftool – čitanje TIFF/DNG/EXIF metapodataka
- dwebp/webpmux – parsiranje WebP metapodataka i chunk-ova
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
- LANDFALL: New Commercial-Grade Android Spyware in Exploit Chain Targeting Samsung Devices
Tip
Učite i vežbajte AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
HackTricks

