Ugunduzi wa Udhalilishaji wa Muundo wa Faili (0‑Click Chains)

Reading time: 7 minutes

tip

Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Jifunze na fanya mazoezi ya Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks

Ukurasa huu unatoa muhtasari wa mbinu za vitendo za kugundua faili za exploit za 0‑click za simu kwa kuthibitisha invarianti za kimuundo za miundo yao badala ya kutegemea byte signatures. Mbinu hii inatumika kwa sampuli tofauti, aina za polymorphic, na exploits za baadaye zinazotumia mantiki ile ile ya parser.

Wazo kuu: kodeka jinsi inkomeshanavyoweza kutokea kimuundo na kukosa muafaka kwa sehemu mbalimbali ambazo zinaonekana tu wakati hali dhaifu ya decoder/parser inafikiwa.

See also:

PDF File analysis

Kwanini muundo, si signatures

Wakati samples zilizofanyiwa kuwa silaha hazipatikani na payload bytes zinabadilika, pattern za jadi za IOC/YARA zinashindwa. Ugunduzi unaotegemea muundo unachunguza muundo uliotangazwa wa kontena dhidi ya kile kinachowezekana kimaandalizi au kimantiki kwa utekelezaji wa format.

Mikaguzi ya kawaida:

  • Thibitisha ukubwa wa jedwali na mipaka inayotokana na spec na implementations zenye usalama
  • Tandaza opcodes isiyo halali/isiyo dokumentiwa au mabadiliko ya state katika embedded bytecode
  • Kagua metadata dhidi ya sehemu za kweli za stream zilizokodishwa
  • Gundua mashamba yanayopingana yanayoashiria parser confusion au maandalizi ya integer overflow

Hapo chini kuna mifumo halisi, iliyojaribiwa shambani kwa chains nyingi zenye athari kubwa.


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

Target: JBIG2 symbol dictionaries embedded inside PDFs (often used in mobile MMS parsing).

Structural signals:

  • Hali ya kamusi yenye migongano ambayo haiwezi kutokea katika yaliyomo ya kawaida lakini inahitajika ili kusababisha overflow katika arithmetic decoding.
  • Matumizi ya kushtukiza ya global segments pamoja na idadi isiyo ya kawaida ya symbols wakati wa refinement coding.

Pseudo‑logic:

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")

Triage ya vitendo:

  • Tambua na toa mitiririko ya JBIG2 kutoka PDF
  • Tumia pdfid/pdf-parser/peepdf kupata na kutoa mitiririko
  • Thibitisha bendera za arithmetic coding na vigezo vya kamusi ya alama dhidi ya JBIG2 spec

Vidokezo:

  • Inafanya kazi bila saini za payload zilizojengewa ndani
  • False positives (FP) ni chache kwa vitendo kwa sababu hali iliyotajwa haiendani kihesabu

WebP/VP8L – BLASTPASS (CVE‑2023‑4863)

Lengo: WebP lossless (VP8L) jedwali za Huffman prefix‑code.

Sinyali za kimuundo:

  • Jumla ya ukubwa wa jedwali za Huffman zilizojengwa inazidi kikomo salama cha juu kinachotarajiwa na implementations za rejea/ zilizorekebishwa, ikibainisha masharti ya awali ya overflow.

Mantiki ya kuiga:

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")

Practical triage:

  • Angalia WebP container chunks: VP8X + VP8L
  • Parsa VP8L prefix codes na hesabu ukubwa halisi wa jedwali lililotengwa

Notes:

  • Imara dhidi ya byte‑level polymorphism ya payload
  • Bound imetokana na uchambuzi wa mipaka/patch za upstream

TrueType – TRIANGULATION (CVE‑2023‑41990)

Target: TrueType bytecode ndani ya fpgm/prep/glyf programs.

Structural signals:

  • Uwepo wa opcodes zisizoandikwa/zinazoruhusiwa katika interpreter ya Apple zinazotumiwa na mfululizo wa exploit.

Pseudo‑logic:

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

Triage ya vitendo:

  • Dump font tables (mfano, kutumia fontTools/ttx) na skana programu za fpgm/prep/glyf
  • Hakuna haja kuiga kabisa interpreter ili kupata thamani kutoka kwa presence checks

Vidokezo:

  • Inaweza kusababisha rare FPs ikiwa nonstandard fonts zina unknown opcodes; thibitisha kwa secondary tooling

DNG/TIFF – CVE‑2025‑43300

Lengo: metadata ya picha ya DNG/TIFF dhidi ya idadi halisi ya vipengele katika encoded stream (mfano, JPEG‑Lossless SOF3).

Sinyali za kimuundo:

  • Kutokuelewana kati ya EXIF/IFD fields (SamplesPerPixel, PhotometricInterpretation) na idadi ya vipengele iliyochanganuliwa kutoka kwenye header ya image stream inayotumika na pipeline.

Mantiki ya mfano:

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")

Triage ya vitendo:

  • Changanua tagu kuu za IFD na EXIF
  • Gunda na changanua header iliyojengwa ndani JPEG‑Lossless (SOF3) na linganisha idadi za komponente

Vidokezo:

  • Imeripotiwa exploited in the wild; mgombea mzuri kwa ukaguzi wa uthabiti wa muundo

Mifumo ya utekelezaji na utendaji

Skana ya vitendo inapaswa:

  • Gundua aina ya faili kwa otomatiki na peleka wachambuzi husika pekee (PDF/JBIG2, WebP/VP8L, TTF, DNG/TIFF)
  • Tumia stream/partial‑parse ili kupunguza ugawaji wa kumbukumbu na kuwezesha kusitisha mapema
  • Endesha uchambuzi kwa sambamba (thread‑pool) kwa triage ya wingi

Mfano wa mtiririko wa kazi na ElegantBouncer (utekelezaji wa chanzo wazi kwa Rust wa ukaguzi hivi):

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 vidokezo na kesi za pembezoni

  • Vitu vilivyowekwa ndani: PDFs zinaweza kujumuisha picha (JBIG2) na fonti (TrueType); toa na skana kwa kurudia
  • Usalama wa dekompressi: tumia maktaba zinazoweka kikomo thabiti kwa jedwali/mabafa kabla ya kugawa
  • Matokeo ya uwongo chanya: weka sheria kwa tahadhari, pendelea migongano ambayo haiwezekani chini ya spec
  • Mabadiliko ya toleo: fanya upya msingi wa mipaka (mf., VP8L table sizes) wakati parsers za upstream zinabadilisha vizingiti

Zana zinazohusiana

  • ElegantBouncer – skana ya kimuundo kwa utambuzi ulio hapo juu
  • pdfid/pdf-parser/peepdf – uchimbaji wa vitu vya PDF na static analysis
  • pdfcpu – PDF linter/sanitizer
  • fontTools/ttx – toa nje jedwali za TrueType na bytecode
  • exiftool – soma TIFF/DNG/EXIF metadata
  • dwebp/webpmux – changanua WebP metadata na chunks

References

tip

Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Jifunze na fanya mazoezi ya Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks