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

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 mobile 0‑click kwa kuthibitisha masharti ya kimuundo yasiyobadilika ya miundo yao badala ya kutegemea saini za byte. Mbinu hii inatumika kwa sampuli mbalimbali, tofauti za polymorphic, na exploits zijazo zinazotumia mantiki ile ile ya parser.

Wazo kuu: kodisha (encode) mambo ya kimuundo yasiyowezekana na utofauti wa mashamba yanayopingana ambayo hujitokeza tu wakati hali dhaifu ya decoder/parser inafikiwa.

See also:

PDF File analysis

Kwa nini muundo, si saini

Wakati sampuli zilizokuwa weaponized hazipatikani na bytes za payload zinabadilika, mifumo ya jadi ya IOC/YARA inashindwa. Ugunduzi wa kimuundo huchunguza muundo uliotangazwa wa kontena dhidi ya kile kinachowezekana kihisabati au kimaana kwa utekelezaji wa umbizo.

Mikaguzi ya kawaida:

  • Thibitisha ukubwa wa jedwali na mipaka inayotokana na spec na utekelezaji salama
  • Tilisha opcodes haramu/zisizoelezewa au mabadiliko ya hali katika bytecode iliyowekwa
  • Kagua kwa msalaba metadata dhidi ya vipengele halisi vilivyosimbwa kwenye mtiririko
  • Tambua mashamba yanayopingana yanayoashiria mkanganyiko wa parser au maandalizi ya integer overflow

Hapa chini kuna mifumo halisi, iliyothibitishwa uwanjani kwa minyororo kadhaa zenye athari kubwa.


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

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

Sinyali za kimuundo:

  • Hali ya kamusi inayopingana ambayo haiwezi kutokea katika maudhui yasiyotishia lakini inahitajika kuamsha overflow katika arithmetic decoding.
  • Matumizi ya kutiliwa shaka ya global segments ikichanganywa na hesabu zisizo za kawaida za symbols wakati wa refinement coding.

Pseudo‑mantiki:

# 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 JBIG2 streams kutoka kwenye PDF
  • Tumia pdfid/pdf-parser/peepdf kutafuta na ku-dump streams
  • Thibitisha arithmetic coding flags na symbol dictionary parameters dhidi ya JBIG2 spec

Vidokezo:

  • Inafanya kazi bila saini za payload zilizojumuishwa
  • FP ndogo katika vitendo kwa sababu hali iliyotajwa haiendani kihisabati

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

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

Ishara za muundo:

  • Ukubwa wa jumla wa meza za Huffman zilizojengwa unazidi kikomo salama cha juu kinachotarajiwa na implementations za marejeo/zilizorekebishwa (patched), ikionyesha overflow precondition.

Pseudo‑logic:

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

Triage ya vitendo:

  • Kagua WebP container chunks: VP8X + VP8L
  • Changanua VP8L prefix codes na ukokotoe ukubwa halisi wa jedwali zilizotengwa

Notes:

  • Ina uimara dhidi ya byte‑level polymorphism ya payload
  • Kiukomo kinatokana na uchambuzi wa mipaka/patch za upstream

TrueType – TRIANGULATION (CVE‑2023‑41990)

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

Ishara za kimuundo:

  • Uwepo wa opcodes zisizoandikwa/zilizo marufuku katika Apple’s interpreter zinazotumika na exploit chain.

Mantiki ya bandia:

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

Triage ya vitendo:

  • Kutoa jedwali za fonti (mfano, kwa kutumia fontTools/ttx) na skana programu za fpgm/prep/glyf
  • Hakuna haja kuiga kabisa interpreter ili kupata thamani kutokana na ukaguzi wa uwepo

Vidokezo:

  • Inaweza kusababisha FPs nadra ikiwa fonti zisizo za kawaida zina opcodes zisizojulikana; thibitisha kwa zana za pili

DNG/TIFF – CVE‑2025‑43300

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

Sinyali za kimuundo:

  • Kutokubaliana kati ya sehemu za EXIF/IFD (SamplesPerPixel, PhotometricInterpretation) na idadi ya vipengele iliyochanganuliwa kutoka kwa kichwa cha mtiririko wa picha kinachotumika 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")

Practical triage:

  • Chambua IFD kuu na tagi za EXIF
  • Tambua na chambua header iliyounganishwa ya JPEG‑Lossless (SOF3) na linganisha idadi ya vipengele

Notes:

  • Imeripotiwa kutumiwa katika mazingira ya kweli; mgombea mzuri kwa ukaguzi wa uthabiti wa muundo

DNG/TIFF – Samsung libimagecodec.quram.so (CVE‑2025‑21042) + Imeongezwa ZIP payload (LANDFALL)

Target: Picha za DNG (zitokanazo na TIFF) zenye archive ya ZIP iliyovishwa na kuongezwa mwishoni (EOF) ili kusafirisha native payloads baada ya parser RCE.

Structural signals:

  • Magic ya faili inaonyesha TIFF/DNG (II*\x00 or MM\x00*) lakini jina la faili linajifanya kuwa JPEG (mfano, .jpg/.jpeg WhatsApp naming).
  • Uwepo wa ZIP Local File Header au EOCD magic karibu na EOF (PK\x03\x04 or PK\x05\x06) ambao haujatajwa na eneo lolote la data la TIFF IFD (strips/tiles/JPEGInterchangeFormat).
  • Data kubwa isiyo ya kawaida iliyobaki baada ya block ya mwisho ya data ya IFD iliyotajwa (mamia ya KB hadi MB), inayoendana na archive iliyofungwa ya moduli za .so.

Pseudo‑logic:

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

Practical triage:

  • Tambua muundo dhidi ya jina:
  • sampuli ya faili; exiftool -s -FileType -MIMEType sample
  • Pata footer/header ya ZIP karibu na EOF na 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
  • Hakiki kwa busara kwamba maeneo ya data ya TIFF hayavuki carved ZIP region:
  • tiffdump -D sample.dng | egrep ‘StripOffsets|TileOffsets|JPEGInterchangeFormat|StripByteCounts|TileByteCounts|JPEGInterchangeFormatLength’
  • Thibitisha max(offset+length) << zip_off
  • One‑shot carving (coarse): binwalk -eM sample.dng

Notes:

  • Ilitumiwa katika mazingira halisi dhidi ya Samsung’s libimagecodec.quram.so (CVE‑2025‑21042). ZIP iliyoongezwa ilikuwa na native modules (kwa mfano: loader + SELinux policy editor) ambazo zilichukuliwa/zikatekelezwa baada ya post‑RCE.

Implementation patterns and performance

Skana ya vitendo inapaswa:

  • Gundua aina ya faili moja kwa moja na peleka tu wachambuzi husika (PDF/JBIG2, WebP/VP8L, TTF, DNG/TIFF)
  • Fanya stream/partial‑parse ili kupunguza allocations na kuwezesha kumaliza mapema
  • Endesha uchambuzi kwa sambamba (thread‑pool) kwa ajili ya triage ya wingi

Mfano wa mtiririko wa kazi na ElegantBouncer (utekelezaji wa Rust, chanzo‑wazi wa ukaguzi hizi):

# 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

Vidokezo vya DFIR na kesi za pembezoni

  • Vitu vilivyojumuishwa: PDFs zinaweza kujumuisha picha (JBIG2) na fonti (TrueType); toa na skana kwa mfululizo
  • Usalama wa unyunyuzaji: tumia maktaba zinazoweka kikomo thabiti kwa jedwali/baferi kabla ya kugawa
  • Matokeo ya uwongo chanya: tumia sheria za tahadhari, zingatia pingamizi zisizowezekana chini ya spec
  • Mabadiliko ya toleo: rekebisha mipaka ya msingi (e.g., VP8L table sizes) wakati upstream parsers wanabadilisha mipaka

Zana zinazohusiana

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

Marejeo

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