Source et contexte — nadsec.online (par NadSec) publie en mars 2026 une rétro‑ingénierie de 28 modules JavaScript du kit d’exploits iOS « Coruna », complémentaire aux rapports de Google Threat Intelligence Group et iVerify (03/03/2026). L’étude (6 630 lignes) reconstitue, depuis le JavaScript obfusqué, une chaîne complète visant iOS 16.0–17.2, détaillant 8 vulnérabilités (WebKit RCE, PAC bypass, JIT cage escape, sandbox escape), jusqu’au binaire kernel récupéré dans la nature.
Principaux résultats techniques
- Trois chemins WebKit RCE: 1) NaN‑boxing type confusion (macOS, YGPUu7), 2) JIT structure check elimination (macOS, KRfmo6), 3) OfflineAudioContext heap corruption + SVG feConvolveMatrix R/W (iOS). Tous convergent vers un primitif R/W commun.
- Post‑exploitation: hijack Wasm call_indirect pour obtenir un appel natif contrôlé, contournement PAC via GOT‑swap non signé (confused‑deputy dans des frameworks Apple), mach_vm_allocate de pages RWX depuis le sandbox WebContent, puis falsification du hash PACDB (rolling) pour franchir la vérification JIT cage et exécuter du shellcode ARM64.
- Côté kernel: ajout par CISA KEV de CVE‑2023‑41974 (use‑after‑free iOS, IOSurfaceRoot) lié au binaire de 2 MB (« dump.bin ») injecté dans powerd, menant à r/w kernel, élévation de privilèges, bypass AMFI/sandbox, remontage rootfs et persistance.
Attribution et prolifération
- Chronologie établie par Google: kit probablement développé pour des usages US, volé par un initié (Peter Williams), revendu à Operation Zero (sanctionnée), déployé par UNC6353 (soupçonné espionnage russe) via des sites ukrainiens, puis mass‑déployé par UNC6691 (acteur financier chinois) sur des leurres crypto/jeux d’argent.
- Le kit étudié (b27.icu) correspond au lot UNC6691, avec similitudes partielles aux exploits « Triangulation » (Kaspersky, 2023) et une chaîne identifiée côté Google comme « cassowary/seedbell » (incluant CVE‑2024‑23222).
Infrastructure et charge utile
- Les 13 payloads JS demeurent actifs sur b27.icu (CNAME CloudFront), byte‑identiques au dump public. Lure 7P.GAME (SPA Vite, TikTok pixel), livraison via iFrame caché et nommage par sha256(COOKIE+ID). Le C2 exfiltre User‑Agent/URL/process et télécharge le binaire kernel; la persistance s’appuie sur PlasmaLoader/PLASMAGRID (DGA en .xyz « lazarus »‑seedé, objectif vol de cryptomonnaies).
IOCs et TTPs
- IOCs (sélection): domaines de livraison/C2: b27.icu, h4k.icu, 7p.game, spin7.icu, k96.icu, seven7.vip; CDN: AWS CloudFront; binaire kernel: dump.bin (Mach‑O ARM64 DYLIB ~2 MB); processus cible: powerd.
- TTPs: WebKit RCE multi‑voies (NaN‑boxing, JIT SCE, Audio/SVG), R/W mémoire arbitraire, Wasm trampoline, PAC bypass par GOT‑swap, mach_vm_allocate RWX, PACDB rolling hash forgery pour JIT cage, kernel r/w via CVE‑2023‑41974 (IOSurfaceRoot), persistance root avec PlasmaLoader.
Conclusion — Il s’agit d’une publication de recherche à vocation de documentation technique approfondie, centrée sur l’ingénierie interne de la chaîne d’exploits Coruna telle qu’implémentée en JavaScript.
🧠 TTPs et IOCs détectés
TTP
WebKit RCE multi-voies (NaN-boxing, JIT SCE, Audio/SVG), R/W mémoire arbitraire, Wasm trampoline, PAC bypass par GOT-swap, mach_vm_allocate RWX, PACDB rolling hash forgery pour JIT cage, kernel r/w via CVE-2023-41974 (IOSurfaceRoot), persistance root avec PlasmaLoader
IOC
b27.icu, h4k.icu, 7p.game, spin7.icu, k96.icu, seven7.vip, AWS CloudFront, dump.bin (Mach-O ARM64 DYLIB ~2 MB), processus cible: powerd
🔗 Source originale : https://www.nadsec.online/blog/coruna#article