Skip to main content
Mallory
HighCISA KEVExploited in the wildPublic exploit

WebKit Type Confusion Remote Code Execution

IdentifiersCVE-2024-23222CWE-843· Access of Resource Using…Also known ascassowary

CVE-2024-23222 is a type confusion vulnerability in Apple WebKit, with multiple references in the provided content indicating the bug is in the WebKit/JavaScriptCore JIT path. Apple states the issue was addressed with improved checks. Processing maliciously crafted web content can trigger the flaw and lead to arbitrary code execution. The content further associates this vulnerability with the Coruna exploit kit’s "cassowary" WebContent R/W stage and notes it was used for initial browser renderer/WebContent code execution on affected iOS versions prior to the fix. Apple fixed the issue in Safari 17.3, iOS 17.3, iPadOS 17.3, iOS 16.7.5, iPadOS 16.7.5, iOS 15.8.7, iPadOS 15.8.7, macOS Monterey 12.7.3, macOS Ventura 13.6.4, macOS Sonoma 14.3, tvOS 17.3, and visionOS 1.0.2.

Share:
For your environment

Are you exposed to this one?

Mallory correlates every CVE against your assets, your vendors, and active adversary campaigns. Know which vulnerabilities matter for you, not just which ones are loud.

ANALYST BRIEF

Impact, mitigation & remediation

What it means. What to do now. Patch path, mitigations, and the assume-compromise checklist.

Impact

What an attacker gets, and what they’ve been doing with it.

Successful exploitation can result in arbitrary code execution in the context of WebKit/WebContent while a target processes attacker-controlled web content. In the exploit-chain context described in the content, this provides the initial remote code execution foothold used to continue with additional stages such as sandbox escape, PAC bypass, privilege escalation, and eventual device compromise. Apple and the supplied reporting also indicate the vulnerability has been observed exploited in the wild as part of the Coruna exploit kit.

Mitigation

If you can’t patch tonight, do this now.

If immediate patching is not possible, reduce exposure to malicious web content. The provided content specifically notes that Apple Lockdown Mode blocks Coruna-related attacks even on older systems, and that Safari Safe Browsing helps block known malicious domains. Operationally, restrict browsing to untrusted sites, avoid opening unsolicited links, and monitor for known Coruna delivery infrastructure and related indicators until patching is completed.

Remediation

Patch, then assume compromise.

Apply Apple security updates that include the fix for CVE-2024-23222. The provided content states the issue is fixed in Safari 17.3, iOS 17.3, iPadOS 17.3, iOS 16.7.5, iPadOS 16.7.5, iOS 15.8.7, iPadOS 15.8.7, macOS Monterey 12.7.3, macOS Ventura 13.6.4, macOS Sonoma 14.3, tvOS 17.3, and visionOS 1.0.2. For legacy devices unable to move to the latest major release, install the relevant backported Apple updates immediately.
PUBLIC EXPLOITS

Exploits

4 valid exploits after Mallory filtered fakes, detection scripts, and README-only repos.

VALID 4 / 4 TOTALView more in app
webkit-cve-2024-23222MaturityPoCVerified exploit

This repository is a multi-file Apple WebKit/JSC exploit research collection centered on CVE-2024-23222, with numerous auxiliary HTML PoCs for other Safari/WebKit vulnerabilities. It is not a framework module; it is a standalone research repo containing browser-delivered exploit pages, a local Python HTTP collector, and one native C helper. Structure: - README.md documents the intended full exploit chain: a malicious HTML page triggers CVE-2024-23222 in JavaScriptCore, obtains addrof/read64/write64 primitives, then uses a crafted WebAssembly indirect-call trampoline to invoke native libc functions on an A11 iPhone X running iOS 16.4.1. The documented post-exploitation action is opening and writing /tmp/pwned_cve_2024_23222, presented as proof of sandbox escape. - poc/server.py is the operator-side infrastructure. It serves HTML files over HTTP on port 8765, exposes GET/POST /results for telemetry collection, and GET/POST /signal for auxiliary signaling. - find_gigacage.c is a native Mach-based memory scanner that uses task_for_pid, vm_region_recurse_64, and vm_read to locate JSC/Gigacage-related regions and sentinels in another process. This supports exploit development and address discovery rather than remote exploitation. - poc/exploit_23222.html is an earlier standalone Stage 1 exploit for CVE-2024-23222. It contains the core exploitation logic: WebAssembly modules, type confusion setup, arbitrary read/write primitives, addrof, and JIT/JSC structure offset handling. It posts progress markers and results back to /results. - poc/ironloader_diag.html is a diagnostic page for CVE-2023-32409 (“IronLoader”), reusing similar Stage 1 primitives and adding logic to inspect IPC/GPU-related structures. - The remaining poc/cve-*.html files are mostly self-contained browser PoCs or vulnerability checkers for specific CVEs. They generally trigger a suspicious code path, observe crashes/misbehavior, and POST a verdict plus logs to /results. Several are more detection-oriented than weaponized. Main exploit capabilities: - Browser-based initial access via a malicious HTML page. - JSC/WebAssembly memory corruption leading to arbitrary address disclosure and 64-bit read/write in the renderer. - Arbitrary native function invocation by overwriting a WASM indirect-call target slot. - Demonstrated sandbox escape behavior by calling _open/_write on /tmp/pwned_cve_2024_23222. - Extensive telemetry/logging back to a local HTTP server. Notable targeting details: - Primary target is Apple iPhone X (A11, no PAC), iOS 16.4.1, Safari 16.4.1. - The exploit assumes device/version-specific offsets and an ASLR slide known in advance/offline. - README explicitly notes limitations such as inability to directly read dyld cache from JS and failure of mmap(PROT_EXEC), indicating this is a real exploit-development repo rather than a simple detector. Assessment: - The repository contains genuine exploit code and PoCs. The main CVE-2024-23222 chain is operational but environment-specific, with a basic hardcoded payload (proof-file creation) rather than a flexible post-exploitation framework. Auxiliary files broaden the repo into a WebKit vulnerability lab with multiple browser-based tests and diagnostics.

Umit-MHLDisclosed May 19, 2026markdowncbrowserweblocal
coruna_analysisMaturityPoCVerified exploit

This repository is a deobfuscated, split-out browser exploit kit for Apple iOS targeting CVE-2024-23222 in WebKit/JavaScriptCore, not a benign analysis tool despite the misleading README. The structure is centered around group_loader.html, which acts as the main entry point and loads the core modules: utility_module.js, platform_module.js, sha256.js, module_loader.js, exploit_trigger.js, and fingerprint.js. The code is clearly organized as a staged exploit chain. Core purpose and flow: fingerprint.js first performs victim profiling by checking the user agent, limiting execution to iOS 13-17, discovering the public IP via icanhazip/ipify, and POSTing telemetry including a campaign code to https://8df7.cc/api/ip-sync/sync. group_loader.html also embeds Google Analytics tracking (G-LKHD0572ES), suggesting campaign measurement. exploit_trigger.js then orchestrates the actual exploitation: it detects platform/version, checks for Lockdown Mode and simulator conditions, loads version-specific stage modules, executes a WebAssembly/JSC memory corruption primitive, detects runtime type, conditionally loads a PAC bypass for ARM64e/PAC-enabled devices, and finally loads one of two sandbox-escape stage3 variants. It reports result codes through a telemetry helper, though the visible path is blank in the provided deobfuscation. module_loader.js implements a custom module system (obChTK) using SHA1-like module IDs and remote loading. It derives remote filenames as SHA256(salt + moduleId).substring(0,40)+'.js', using salt cecd08aa6ff548c2 and a base URL derived from ./7a7d99099b035b2c6512b6ebeeea6df1ede70fbb.min.js. This means additional exploit stages are intended to be fetched dynamically from the same hosting path. The loader executes fetched code with new Function(), caches modules, and supports base64-encoded module registration. The exploitation internals are substantial. utility_module.js provides low-level integer, pointer, typed-array, and conversion helpers needed for memory corruption. platform_module.js performs iOS version parsing, runtime selection, Lockdown Mode and simulator checks, PAC state handling, and Mach-O image parsing support. stage1_wasm_primitives.js contains the main browser exploit primitive: a WebAssembly-based JavaScriptCore type-confusion chain that yields addrof/fakeobj and arbitrary read/write, then scans memory backward from JIT code to locate a Mach-O header. stage2_pac_bypass.js implements a PAC bypass using Intl.Segmenter iterator/vtable corruption and Mach-O/gadget discovery, enabling execution on PAC-protected ARM64e devices. Post-exploitation delivery is represented by stage4_payload_stub.js, stage5_main_payload.js, and stage6_README.md. Stage 4 and Stage 5 both invoke window["qbrdr"] with encrypted base64 payloads; qbrdr is described as a decryption/execution handler registered by earlier stages. Stage 5 is documented as a PLASMAGRID stager/implant loader with persistence, exfiltration, remote access, and C2 behavior. Stage 6 is described as a non-JavaScript encrypted/binary blob loaded later in the chain. Overall, this is a real, multi-stage, operational exploit kit with telemetry, dynamic module retrieval, exploit staging, and encrypted payload delivery.

MeysamshiraliiDisclosed Mar 15, 2026javascripthtmlbrowsernetwork
Cassowary-CVE-2024-23222-x86_64MaturityPoCVerified exploit

Repository contains two related but distinct JavaScriptCore/WebKit exploit artifacts plus a helper deobfuscator. The top-level README is a detailed technical write-up of CVE-2024-23222, describing a TOCTOU race in JavaScriptCore DFG constant folding (Graph::tryGetConstantProperty) and how stale JSValue cell pointers can later crash in freeze() or GC marking. The practical Linux PoC is toctou_clean_asan_v2.js, a parameterized jsc-shell harness that warms a property-read probe for DFG compilation, waits for an instrumented race window, then drops references and forces GC to trigger an ASan-visible stale-cell crash. It supports multiple GC modes, pressure strategies, release timing controls, and optional synchronization through the file /tmp/jsc_toctou_signal. This is a real exploit PoC, not just detection, but it is research-oriented and depends on a specially instrumented vulnerable engine. The cassowary-CVE-2024-23222/ directory contains an obfuscated iOS WebKit exploit module and analysis tooling. deobfuscate.js is a Node.js utility that decodes XOR-obfuscated strings/constants, cleans minified literals, renames APIs, and writes a deobfuscated copy. yAerzw_d6cb72f5.js is the original obfuscated exploit. yAerzw_d6cb72f5_deobfuscated.js and yAerzw_d6cb72f5_analytic_rewrite.js show the exploit’s structure clearly: it targets iOS 16.6–17.2.1, uses JIT type confusion plus WebAssembly instances to build an arbitrary read/write primitive in WebContent, warms JIT-compiled functions, triggers confusion via crafted argument/accessor behavior, resolves internal addresses, initializes a Wasm-backed memory primitive, then scans memory from a WebAssembly.Table executable pointer backward by 0x1000 pages until the Mach-O magic 0xfeedfacf is found. No external network C2 or remote URLs are present; the notable observables are local file paths and in-memory target artifacts. Overall, the repository’s purpose is exploit research and analysis for CVE-2024-23222, including both a Linux crash reproducer and a deobfuscated in-the-wild-style iOS exploitation component.

FuzzySecurityDisclosed Mar 13, 2026markdownjavascriptbrowsernetworkless local JSC shellrace condition / TOCTOU in JIT compiler
CVE-2024-23222-Coruna-Exploit-Kit-DeobfuscatedMaturityPoCVerified exploit

Repository appears to be a partial/deobfuscation-oriented research snapshot of an iOS WebKit/JSC exploit kit chain for CVE-2024-23222. Structure and purpose: - group_loader.html: Browser entry-point HTML that disables caching and loads multiple JavaScript modules (utility/platform/sha256/module loader/exploit trigger/fingerprint). It also embeds Google Analytics and comments describing the original (larger) inline ‘group.html’ and its module IDs. - utility_module.js: Substantial low-level helper library implementing typed-array reinterpret casts, Int64/BigInt conversions, pointer-tag stripping for JSC tagged pointers, encoding/decoding helpers (base64/LZW/LEB128 mentioned), and general primitives typically required to build addrof/fakeobj and pointer arithmetic in JSC exploits. - ConceptualJavaScript.js: High-level, mostly stubbed pseudocode outlining a 3-stage chain: (1) WASM-based memory primitives via type confusion, (2) PAC bypass via Intl.Segmenter iterator vtable corruption, (3) sandbox escape via Mach-O parsing/symbol resolution and payload execution, followed by deliverPayload(). - README.md: Claims iOS 13.0–17.x targeting WebKit/JSC; describes stages 1–6 including payload delivery of an encrypted blob and a “PLASMAGRID” stager; references additional modules (exploit_trigger.js, stage1/2/3 files, fingerprint.js) that are not present in the provided file list. Exploit capabilities (as represented in this snapshot): - Browser-based exploitation path (malicious HTML/JS) intended to trigger a JSC type confusion (CVE-2024-23222) to obtain memory read/write primitives (via WASM), then bypass ARM64e PAC, then escape the WebKit sandbox. - Telemetry/fingerprinting is indicated by comments: an IP fingerprinting IIFE sending telemetry to domain 8df7.cc (implementation file fingerprint.js is referenced but missing here). - Analytics tracking via Google Tag Manager (gtag) is explicitly included. Limitations of the snapshot: - Several key modules referenced by the loader and README (platform_module.js, sha256.js, module_loader.js, exploit_trigger.js, fingerprint.js) are not included in the provided repository contents, and ConceptualJavaScript.js contains placeholders (corruptIterator, parseWebKitMacho, resolveSymbols, buildPayload, executePayload, deliverPayload). As-is, this looks closer to a research/deobfuscation artifact and utility library than a fully runnable exploit kit.

RohitberiwalaDisclosed Mar 10, 2026javascripthtmlbrowser (remote) via malicious HTML/JavaScript targeting WebKit/JSC type confusion; includes PAC bypass and sandbox escape stages (as described)
EXPOSURE SURFACE

Affected products & vendors

Products and vendors Mallory has correlated with this vulnerability. Open in Mallory to drill down to specific CPE configurations and version ranges.

VendorProductType
AppleIpadosoperating_system
AppleIphone Osoperating_system
AppleMacosoperating_system
AppleSafariapplication
AppleTvosoperating_system
AppleVisionosoperating_system

Vendor-confirmed product mapping. Mallory continuously reconciles this list against your asset inventory.

What this page doesn’t show

The version that knows your environment.

This page is what’s public. Mallory adds the parts that aren’t: which of your assets are affected, which adversaries are exploiting it right now, which detections to deploy, and what to do tonight.
Exposure mapping

Query your assets running an affected version, and investigate the blast radius.

Threat actor evidence25

Every observed campaign linking this CVE to a named adversary.

Associated malware31

Malware families riding this exploit, with evidence and IOCs.

Detection signatures2

YARA, Sigma, Snort, and vendor rules, auto-deployed to your SIEM.

Vendor-by-vendor mapping

Cross-references every affected SKU, including bundled OEM variants.

Social activity8

Community discussion across Reddit, Mastodon, and other social sources.