Structural File‑Format Exploit Detection (0‑Click Chains)
Reading time: 7 minutes
tip
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।
यह पृष्ठ व्यवहारिक तकनीकों का सारांश देता है जो 0‑click mobile exploit फाइलों का पता लगाने के लिए उनके फॉर्मैट की संरचनात्मक इनवेरिएंट्स को वैलिडेट करती हैं बजाय कि byte signatures पर निर्भर रहने के। यह तरीका नमूनों, polymorphic variants, और भविष्य के exploits पर सामान्यीकृत होता है जो समान parser लॉजिक का दुरुपयोग करते हैं।
Key idea: encode structural impossibilities and cross‑field inconsistencies that only appear when a vulnerable decoder/parser state is reached.
See also:
Why structure, not signatures
जब weaponized samples उपलब्ध नहीं होते और payload bytes बदलते रहते हैं, पारंपरिक IOC/YARA patterns विफल हो जाते हैं। संरचनात्मक डिटेक्शन कंटेनर के घोषित लेआउट की जाँच करता है बनाम उस लेआउट के जो फ़ॉर्मैट इम्प्लीमेंटेशन के लिए गणितीय या सैमांटिक रूप से संभव है।
Typical checks:
- spec और सुरक्षित implementations से व्युत्पन्न table sizes और bounds को वैलिडेट करें
- अवैध/undocumented opcodes या embedded bytecode में state transitions को flag करें
- metadata को actual encoded stream components के साथ cross‑check करें
- parser confusion या integer overflow set‑ups का संकेत देने वाले विरोधाभासी फ़ील्ड्स का पता लगाएँ
नीचे कई high‑impact chains के लिए ठोस, field‑tested पैटर्न दिए गए हैं।
PDF/JBIG2 – FORCEDENTRY (CVE‑2021‑30860)
लक्षित: JBIG2 symbol dictionaries जो PDFs के अंदर embedded होते हैं (अक्सर mobile MMS parsing में उपयोग होते हैं)।
संरचनात्मक संकेत:
- ऐसा विरोधाभासी dictionary state जो benign content में नहीं हो सकता लेकिन arithmetic decoding में overflow ट्रिगर करने के लिए आवश्यक होता है।
- refinement coding के दौरान global segments के संदिग्ध उपयोग के साथ असामान्य symbol counts।
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")
व्यावहारिक ट्रायज:
- PDF से JBIG2 स्ट्रीम्स की पहचान करें और उन्हें एक्सट्रैक्ट करें
- pdfid/pdf-parser/peepdf का उपयोग करके स्ट्रीम्स का पता लगाएं और dump करें
- arithmetic coding flags और symbol dictionary parameters को JBIG2 spec के खिलाफ सत्यापित करें
Notes:
- embedded payload signatures के बिना भी काम करता है
- व्यवहार में Low FP कम होते हैं क्योंकि flagged state गणितीय रूप से असंगत है
WebP/VP8L – BLASTPASS (CVE‑2023‑4863)
लक्ष्य: WebP lossless (VP8L) Huffman prefix‑code tables.
संरचनात्मक संकेत:
- निर्मित Huffman टेबल्स का कुल आकार reference/patched implementations द्वारा अपेक्षित सुरक्षित ऊपरी सीमा से अधिक है, जो overflow की पूर्वशर्त को सूचित करता है।
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")
व्यावहारिक प्राथमिक जाँच:
- WebP container chunks जाँचें: VP8X + VP8L
- VP8L prefix codes को पार्स करें और वास्तविक आवंटित तालिका आकार की गणना करें
नोट्स:
- payload के byte‑level polymorphism के प्रति मजबूत
- सीमा upstream limits/patch analysis से व्युत्पन्न है
TrueType – TRIANGULATION (CVE‑2023‑41990)
लक्ष्य: fpgm/prep/glyf प्रोग्राम्स के अंदर TrueType bytecode।
संरचनात्मक संकेत:
- Apple के interpreter में undocumented/forbidden opcodes की उपस्थिति, जिन्हें exploit chain द्वारा उपयोग किया जा रहा है।
स्यूडो‑लॉजिक:
# Flag undocumented TrueType opcodes leveraged by TRIANGULATION
switch opcode:
case 0x8F, 0x90:
mark_malicious("Undocumented TrueType bytecode")
default:
continue
प्रायोगिक ट्रायेज़:
- font टेबल्स डंप करें (उदा., fontTools/ttx का उपयोग करके) और fpgm/prep/glyf प्रोग्राम स्कैन करें
- presence checks से जानकारी पाने के लिए interpreter को पूरी तरह emulate करने की आवश्यकता नहीं
नोट:
- अगर nonstandard fonts में unknown opcodes शामिल हों तो यह कभी-कभार दुर्लभ FPs उत्पन्न कर सकता है; secondary tooling से validate करें
DNG/TIFF – CVE‑2025‑43300
Target: DNG/TIFF image metadata बनाम encoded stream में वास्तविक component count (उदा., JPEG‑Lossless SOF3).
Structural signals:
- EXIF/IFD fields (SamplesPerPixel, PhotometricInterpretation) और pipeline द्वारा उपयोग किए गए image stream header से parsed component count के बीच असंगति।
छद्म-तर्क:
# 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:
- प्राथमिक IFD और EXIF टैग पार्स करें
- एम्बेडेड JPEG‑Lossless header (SOF3) को ढूँढें और पार्स करें तथा कम्पोनेंट गिनती की तुलना करें
नोट:
- वाइल्ड में शोषण की रिपोर्ट मिली है; संरचनात्मक संगतता जाँचों के लिए उत्कृष्ट उम्मीदवार
कार्यान्वयन पैटर्न और प्रदर्शन
एक व्यावहारिक स्कैनर को:
- फ़ाइल प्रकार को ऑटो‑डिटेक्ट करें और केवल संबंधित analyzers (PDF/JBIG2, WebP/VP8L, TTF, DNG/TIFF) को डिस्पैच करें
- स्ट्रीम/आंशिक‑पार्स करें ताकि आवंटन न्यूनतम हों और पूर्व‑समाप्ति सक्षम हो
- बड़े पैमाने वाले triage के लिए analyses को समानांतर (thread‑pool) चलाएँ
ElegantBouncer के साथ उदाहरण वर्कफ़्लो (इन जाँचों की open‑source Rust implementation):
# 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 टिप्स और किनारे के मामले
- Embedded objects: PDFs में images (JBIG2) और fonts (TrueType) एम्बेड हो सकते हैं; इन्हें निकालें और पुनरावर्ती रूप से स्कैन करें
- Decompression safety: ऐसी लाइब्रेरीज़ उपयोग करें जो आवंटन से पहले टेबल/बफ़र की कड़ाई से सीमा निर्धारित करें
- False positives: नियमों को सावधान रखें, उन विरोधाभासों को प्राथमिकता दें जो spec के अंतर्गत असंभव हों
- Version drift: जब upstream parsers सीमाएँ बदलें तो bounds को फिर से बेसलाइन करें (उदा., VP8L table sizes)
Related tools
- ElegantBouncer – उपरोक्त डिटेक्शनों के लिए संरचनात्मक स्कैनर
- pdfid/pdf-parser/peepdf – PDF ऑब्जेक्ट निकालना और स्थैतिक विश्लेषण
- pdfcpu – PDF linter/sanitizer
- fontTools/ttx – TrueType टेबल्स और bytecode डंप करें
- exiftool – TIFF/DNG/EXIF मेटाडेटा पढ़ें
- dwebp/webpmux – WebP मेटाडेटा और 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
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।