Detekcija eksploatacije strukturnog formata datoteke (0‑Click Chains)

Reading time: 6 minutes

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

Ova stranica sažima praktične tehnike za otkrivanje 0‑click mobilnih exploit datoteka proverom strukturnih invarijanata njihovih formata umesto oslanjanja na byte potpise. Pristup se generalizuje preko uzoraka, polimorfnih varijanti i budućih exploit‑a koji zloupotrebljavaju istu parser logiku.

Ključna ideja: enkodirati strukturne nemoguћnosti i međupoljske nekonzistentnosti koje se pojavljuju samo kada je dostignuto ranjivo stanje dekodera/parsera.

Vidi takođe:

PDF File analysis

Zašto struktura, a ne potpisi

Kada weaponized uzorci nisu dostupni i payload bajtovi mutiraju, tradicionalni IOC/YARA paterni ne uspevaju. Strukturna detekcija ispituje deklarisani raspored kontejnera u odnosu na ono što je matematički ili semantički moguće za implementaciju formata.

Tipične provere:

  • Validirati veličine tabela i granice izvedene iz specifikacije i sigurnih implementacija
  • Obeležiti ilegalne/neudokumentovane opkode ili tranzicije stanja u ugrađenom bytecode‑u
  • Cross‑check metadata VS actual encoded stream components
  • Otkrivanje kontradiktornih polja koja ukazuju na zbunjenost parsera ili postavke za integer overflow

Ispod su konkretni, u praksi testirani obrasci za više lanaca visokog uticaja.


PDF/JBIG2 – FORCEDENTRY (CVE‑2021‑30860)

Cilj: JBIG2 symbol dictionaries ugrađene u PDF‑ove (često korišćeno pri parsiranju mobilnih MMS poruka).

Strukturni signali:

  • Kontradiktorno stanje rečnika koje ne može nastati u benignom sadržaju ali je potrebno da bi se pokrenuo overflow u aritmetičkom dekodiranju.
  • Sumnjiva upotreba global segments u kombinaciji sa abnormalnim brojem simbola tokom refinement kodiranja.

Pseudo‑logika:

pseudo
# 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:

  • Identifikovati i izdvojiti JBIG2 streamove iz PDF-a
  • pdfid/pdf-parser/peepdf za lociranje i dumpovanje streamova
  • Proveriti arithmetic coding flags i symbol dictionary parametre prema JBIG2 specifikaciji

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 prelazi sigurnu gornju granicu koju očekuju referentne/patch‑ovane implementacije, što implicira preuslov za overflow.

Pseudo‑logika:

pseudo
# 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 container chunks: VP8X + VP8L
  • Parsuj VP8L prefix codes i izračunaj stvarne dodeljene veličine tabela

Notes:

  • Otporno na polimorfizam na nivou bajta u payload-u
  • Gornja granica je izvedena iz analize upstream ograničenja/patch-eva

TrueType – TRIANGULATION (CVE‑2023‑41990)

Target: TrueType bytecode inside fpgm/prep/glyf programs.

Strukturni signali:

  • Prisutnost nedokumentovanih/zabranjenih opcodes u Apple-ovom interpreteru koji koristi exploit chain.

Pseudo‑logic:

pseudo
# Flag undocumented TrueType opcodes leveraged by TRIANGULATION
switch opcode:
case 0x8F, 0x90:
mark_malicious("Undocumented TrueType bytecode")
default:
continue

Praktična trijaža:

  • Izdvojiti font tabele (npr. koristeći fontTools/ttx) i skenirati fpgm/prep/glyf programe
  • Nije potrebno potpuno emulirati interpreter da bi provere prisustva bile korisne

Napomene:

  • Moguće retke lažno pozitivne detekcije ako nestandardni fontovi sadrže nepoznate opkode; validirati pomoću sekundarnih alata

DNG/TIFF – CVE‑2025‑43300

Cilj: DNG/TIFF metadata slike naspram stvarnog broja komponenti u kodiranom toku (npr. JPEG‑Lossless SOF3).

Strukturni signali:

  • Nekompatibilnost između EXIF/IFD polja (SamplesPerPixel, PhotometricInterpretation) i broja komponenti parsiranog iz zaglavlja toka slike koje koristi pipeline.

Pseudo‑logika:

pseudo
# 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 oznake
  • Pronaći i parsirati ugrađeno JPEG‑Lossless zaglavlje (SOF3) i uporediti broj komponenti

Napomene:

  • Prijavljeno iskorišćavanje u realnom okruženju; odličan kandidat za provere strukturne konzistentnosti

Obrasci implementacije i performanse

Praktičan skener treba:

  • Automatski otkriti tip fajla i pokretati samo relevantne analizatore (PDF/JBIG2, WebP/VP8L, TTF, DNG/TIFF)
  • Koristiti stream/delimično parsiranje da se minimizuju alokacije i omogući ranije prekinjanje
  • Pokretati analize paralelno (thread‑pool) za masovnu trijažu

Primer toka rada sa ElegantBouncer (open‑source Rust implementacija ovih provera):

bash
# 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 rubni slučajevi

  • Ugrađeni objekti: PDF fajlovi mogu da ugrade slike (JBIG2) i fontove (TrueType); izdvojiti i rekurzivno skenirati
  • Sigurnost dekompresije: koristiti biblioteke koje striktno ograničavaju veličine tabela/bafera pre alokacije
  • Lažno pozitivni: držati pravila konzervativnim, davati prednost kontradikcijama koje su nemoguće prema specifikaciji
  • Version drift: ponovo postaviti granice (npr. veličine VP8L tabela) kada upstream parseri promene limite

  • ElegantBouncer – strukturni skener za gore navedene detekcije
  • pdfid/pdf-parser/peepdf – izdvajanje PDF objekata i statička analiza
  • pdfcpu – PDF linter/sanitizator
  • fontTools/ttx – ispis TrueType tabela i bajtkoda
  • exiftool – čitanje TIFF/DNG/EXIF metapodataka
  • dwebp/webpmux – parsiranje WebP metapodataka i chunk-ova

References

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