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
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za hacking kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.
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:
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:
# 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:
# 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:
# 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:
# 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):
# 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
- 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
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
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za hacking kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.