← Back to Feed CACHED · 2026-07-31 01:29:16 · CACHE_KEY CVE-2026-10702
CVE-2026-10702 · CWE-843 · Disclosed 2026-06-02

JIT miscompilation in the JavaScript Engine: JIT component.

ASSESSED — NOISGATE V0.5
Vendor
Reassessed
Verdict:
Do you agree?
01 · The Real Story

Mozilla labeled a loaded gun as a noisemaker — this JIT type confusion gives attackers arbitrary read/write in every unpatched Firefox renderer

CVE-2026-10702 is a type confusion flaw (CWE-843) in the IonMonkey/Warp JIT compiler within Firefox's SpiderMonkey engine. The MObjectToIterator instruction was defined with an incorrect alias set — treating a write operation (lazy property resolution that allocates new buffers) as a pure load. This breaks Global Value Numbering and Scalar Replacement optimizations, producing a use-after-free: subsequent slot access references a stale buffer pointer after reallocation. Nebula Security demonstrated a full exploitation chain from this primitive to arbitrary read/write in the renderer, and then chained it with CVE-2026-43499 (GhostLock, a Linux kernel futex UAF) for one-click root on Android 17. Affected versions: all Firefox builds prior to 151.0.3, including Firefox for Android. Tor Browser was vulnerable until version 15.0.19 (patched July 20, 2026).

The vendor's CVSS of 4.3 MEDIUM (C:N/I:N/A:L) is factually wrong. Scoring a JIT type confusion that yields arbitrary read/write as 'no confidentiality impact, no integrity impact, low availability impact' ignores the actual exploitation outcome demonstrated by Nebula Security. Red Hat independently scored this 7.5 HIGH (AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H), which is far more aligned with reality. The vendor assessment appears to reflect only the surface-level crash behavior, not the weaponized outcome. With a public one-click exploit chain, a working PoC, and Tor Browser exposure, this is a textbook case of vendor under-rating.

"Vendor scored this JIT RCE as DoS-only; a public exploit chain proves full renderer code execution."
02 · The Attack Path

5 steps from start to impact.

STEP 01

Lure victim to attacker-controlled page

The attacker hosts a webpage containing JavaScript designed to exercise the vulnerable JIT compilation path. Delivery can be via phishing email, malvertising, watering-hole injection, or a compromised legitimate site. No authentication or special browser configuration is required — default Firefox with JIT enabled (the default) is sufficient.
Conditions required:
  • Victim uses Firefox < 151.0.3 (desktop or Android) or Tor Browser < 15.0.19
  • Victim navigates to attacker-controlled or compromised page
Where this breaks in practice:
  • Firefox desktop market share is ~3-5%, limiting the reachable population compared to Chrome-targeting exploits
  • Enterprise browser management policies may auto-update Firefox, shrinking the vulnerable window
Detection/coverage: Email gateway URL reputation and web proxy category filtering can block known malicious domains. EDR with browser exploit telemetry (e.g., CrowdStrike Falcon, Microsoft Defender for Endpoint) may flag anomalous renderer behavior.
STEP 02

Trigger JIT miscompilation via MObjectToIterator

The JavaScript pre-fills function property slots to force buffer reallocation, then invokes Object.keys() to trigger lazy resolution of Function.name, Function.length, and Function.prototype. The incorrect alias set on MObjectToIterator causes GVN to eliminate the reload, leaving a stale pointer. This creates a reliable use-after-free primitive in the JIT-compiled code path.
Conditions required:
  • JIT (IonMonkey/Warp) is enabled — this is the default
  • JavaScript execution reaches the hot path triggering IonMonkey compilation
Where this breaks in practice:
  • Firefox's existing JIT mitigations (e.g., StructuredSpewer, Spectre mitigations) add some noise but do not prevent this specific miscompilation
  • Content Security Policy on the target page does not help — the attacker controls the page
STEP 03

Achieve arbitrary read/write in renderer

Using the use-after-free, the attacker performs out-of-bounds reads to leak Hidden Class pointers from adjacent heap-sprayed objects. From these, they construct fake Uint8Array objects to achieve arbitrary read/write within the content process address space. This is a stable, deterministic primitive — not a probabilistic race.
Conditions required:
  • Successful UAF from step 2
  • Heap layout is predictable enough for spray — demonstrated reliable on both desktop and Android
Where this breaks in practice:
  • Firefox sandbox (content process) contains the damage to the renderer — a sandbox escape is needed for system-level impact
  • ASLR and CFI provide defense-in-depth but are bypassed by the info leak in the demonstrated chain
Detection/coverage: EDR behavioral detection may flag anomalous memory allocation patterns or shellcode execution within the Firefox renderer process.
STEP 04

Execute code in content process

With arbitrary read/write, the attacker overwrites function pointers or JIT code pages to redirect execution to attacker-controlled shellcode within the sandboxed content process. At this stage the attacker can steal cookies, session tokens, saved passwords, and perform actions as the logged-in user across all open tabs. On Tor Browser, this deanonymizes the user.
Conditions required:
  • Arbitrary read/write from step 3
Where this breaks in practice:
  • Impact is contained to the browser sandbox without a second vulnerability for escape
  • On desktop, the content process runs with reduced privileges
Detection/coverage: Browser telemetry and EDR process-level monitoring should detect code injection or anomalous child-process behavior from the Firefox content process.
STEP 05

(Optional) Chain with GhostLock for kernel root

Nebula Security demonstrated chaining CVE-2026-10702 with CVE-2026-43499 (GhostLock), a 15-year-old Linux kernel futex stack use-after-free, to escalate from the sandboxed renderer to full kernel root on Android 17. This turns the browser bug into a one-click device compromise. The GhostLock exploit runs in ~5 seconds and escapes containers.
Conditions required:
  • Target runs a vulnerable Linux kernel (most unpatched distros)
  • GhostLock (CVE-2026-43499) is not yet patched on the target
Where this breaks in practice:
  • GhostLock is a separate CVE requiring its own patch — if the kernel is updated, this step fails
  • Desktop Linux and Android patch cadences differ; enterprise-managed desktops may have kernel patches applied
Detection/coverage: Kernel exploit detection via eBPF-based tools (e.g., Falco, Tracee) or EDR with kernel telemetry. SELinux/AppArmor may limit post-exploitation actions even after root.
03 · Intelligence Metadata

The supporting signals.

In-the-Wild ExploitationNo confirmed in-the-wild exploitation. Mozilla has not reported active attacks. Not listed in CISA KEV. However, the public IonStack chain is a turnkey exploit — the gap between 'research demo' and 'weaponized' is negligible.
Proof of ConceptPublic and weaponized. Nebula Security published the full IonStack chain (nebusec.ai/research/ionstack-part-1-cve-2026-10702/) on July 21, 2026, demonstrating one-click root on Android 17 via Firefox. The PoC is deterministic, not probabilistic.
EPSS0.00722 (0.72%) — low predicted exploitation probability. EPSS likely lags the public PoC release; expect this to climb.
KEV StatusNot listed as of 2026-07-31.
CVSS VectorsVendor (CISA-ADP): CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:L4.3 MEDIUM. Red Hat: CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H7.5 HIGH. Red Hat's vector correctly reflects the full CIA impact of the demonstrated exploit.
Affected VersionsFirefox < 151.0.3 (desktop and Android). Tor Browser < 15.0.19. Thunderbird and Firefox ESR status should be verified via MFSA-2026-54.
Fixed VersionsFirefox 151.0.3 (released June 2, 2026). Tor Browser 15.0.19 (released July 20, 2026). Distro backports: check RHEL, Debian, Ubuntu advisories for ESR/Thunderbird.
Scanning / ExposureNo GreyNoise or Shodan data applicable — this is a client-side browser vulnerability, not a server-side exposure. Vulnerability scanners (Qualys QID, Tenable plugin) should flag Firefox version < 151.0.3 on managed endpoints.
Disclosure TimelineMay 20, 2026: reported to Mozilla. June 2, 2026: patched in Firefox 151.0.3. July 20, 2026: Tor Browser 15.0.19. July 21, 2026: public disclosure by Nebula Security.
Reporting ResearcherNebula Security (discovered via their VEGA automated code scanning tool). Individual researchers not named. Mozilla bug: bugzilla.mozilla.org/show_bug.cgi?id=2040903.
04 · The Call

noisgate verdict.

Final Verdict
UPGRADED to HIGH (7.5/10)

The single most decisive factor is the public, weaponized exploit chain demonstrating arbitrary code execution from a JIT type confusion the vendor scored as DoS-only. The vendor's CVSS vector (C:N/I:N/A:L) is empirically disproven by Nebula Security's IonStack chain, which achieves full renderer RCE and, when paired with GhostLock, one-click kernel root on Android — Red Hat's 7.5 HIGH is the correct baseline.

HIGH Vulnerability exploitability and demonstrated RCE impact
HIGH Vendor severity understatement (C:N/I:N/A:L contradicted by public chain)
MEDIUM In-the-wild exploitation timeline (public PoC exists but no confirmed campaigns yet)

Why this verdict

  • Vendor CVSS is empirically wrong. The C:N/I:N/A:L impact rating is disproven by a public exploit achieving arbitrary read/write and code execution in the renderer. Red Hat's independent assessment of 7.5 HIGH (C:H/I:H/A:H) is correct.
  • Public weaponized exploit chain. Nebula Security's IonStack writeup (July 21, 2026) provides a deterministic, reliable exploit — not a theoretical PoC. The gap from 'published research' to 'in-the-wild' is days, not months, for browser JIT bugs.
  • Tor Browser amplifier. CVE-2026-10702 deanonymizes Tor Browser users (pre-15.0.19), making this a high-value target for state-sponsored actors and surveillance operations — an outsized impact on a specific, vulnerable population.
  • Role multiplier: Firefox is predominantly deployed on *workstations and mobile endpoints* (category a/b). It is not a server, hypervisor, IdP, or fleet-management component. The blast radius of successful exploitation is per-user (session cookies, credentials, local files) — not fleet-scale or domain-scale. On Tor Browser, the blast radius includes identity exposure, which is critical for that population but does not translate to enterprise fleet compromise. No high-value-role floor override applies.
  • Friction: user interaction required. The attack requires the victim to navigate to an attacker-controlled page. This is standard for browser exploitation and is a real but modest friction point — phishing and malvertising are well-understood delivery mechanisms.
  • Friction: Firefox market share. Desktop Firefox sits at ~3-5% market share globally. In a 10,000-host enterprise, this likely means 300-500 endpoints running Firefox as primary or secondary browser, limiting the exposed population compared to Chrome/Edge-targeting attacks.

Why not higher?

Not CRITICAL because the blast radius is per-endpoint, not fleet-scale. Firefox is a workstation browser, not a domain controller, hypervisor, or identity provider. The exploit requires user interaction (visiting a malicious page), and Firefox's ~3-5% desktop market share limits the reachable population in most enterprises. No confirmed in-the-wild exploitation or KEV listing exists yet.

Why not lower?

Not MEDIUM because the vendor's 4.3 MEDIUM rating is factually wrong — a public, deterministic exploit chain achieves full renderer RCE, not just a DoS crash. The PoC is weaponized and published, EPSS will lag but the exploit maturity is undeniable, and the Tor Browser deanonymization risk adds a targeted-attack dimension that pure CVSS scoring misses.

05 · Compensating Control

What to do — in priority order.

  1. Force-update Firefox to 151.0.3+ across all managed endpoints immediately — This is the definitive fix. Use your enterprise browser management tool (SCCM, Intune, Jamf, or Firefox's enterprise policies via policies.json) to enforce minimum version 151.0.3. Deploy within 30 days per the noisgate mitigation SLA for HIGH severity, though given the public PoC, moving faster is prudent.
  2. Disable IonMonkey JIT as an interim control — Set javascript.options.ion to false via Firefox enterprise policy or about:config. This kills the vulnerable optimization pass entirely. Performance will degrade on JS-heavy sites but the JIT miscompilation cannot occur. Use this as a bridge if patching takes more than a few days. Deploy within 30 days per noisgate mitigation SLA.
  3. Block known IonStack/PoC indicator domains at web proxy — Monitor threat intel feeds for domains hosting IonStack exploit pages. Add them to your web proxy and DNS sinkhole block lists. This is a partial control — novel domains will bypass it — but raises the cost for opportunistic attackers.
  4. Enable browser exploit detection in EDR — Ensure your EDR (CrowdStrike, Defender for Endpoint, SentinelOne) has browser exploitation detection policies active. These should flag anomalous shellcode execution or memory manipulation within Firefox renderer child processes.
  5. Audit Tor Browser deployments — If your organization permits Tor Browser (security researchers, journalists, privacy-sensitive roles), verify all instances are updated to 15.0.19+. Tor Browser users are high-value targets for this specific exploit. Deploy within 30 days per noisgate mitigation SLA.
What doesn't work
  • Content Security Policy (CSP) — CSP protects pages the *defender* controls, not the attacker's page. The exploit runs on an attacker-hosted page where they set the CSP (or don't).
  • Network-level IDS/IPS signatures — The exploit payload is JavaScript delivered over HTTPS. Without TLS inspection, network sensors cannot see the payload. Even with inspection, JIT trigger code looks like normal JavaScript.
  • Site isolation / Fission — Firefox's site isolation (Fission) separates origins into different processes but does not prevent exploitation within a single origin's renderer. The attacker controls the origin.
06 · Verification

Crowdsourced verification payload.

Run this on each managed endpoint (Linux/macOS) or adapt the version-check logic for Windows. Execute as the user who runs Firefox — no elevated privileges needed. Example: bash check_cve_2026_10702.sh

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/usr/bin/env bash
# CVE-2026-10702 Checker — Firefox JIT Type Confusion
# Checks if installed Firefox is vulnerable (< 151.0.3)
# Exit codes: 0 = PATCHED, 1 = VULNERABLE, 2 = UNKNOWN

set -euo pipefail

PATCHED_MAJOR=151
PATCHED_MINOR=0
PATCHED_PATCH=3

get_firefox_version() {
  local ff_bin
  for candidate in firefox firefox-esr firefox-bin; do
    ff_bin=$(command -v "$candidate" 2>/dev/null || true)
    if [ -n "$ff_bin" ]; then
      "$ff_bin" --version 2>/dev/null | grep -oE '[0-9]+\.[0-9]+\.?[0-9]*' | head -1
      return 0
    fi
  done
  # macOS application bundle
  if [ -x "/Applications/Firefox.app/Contents/MacOS/firefox" ]; then
    /Applications/Firefox.app/Contents/MacOS/firefox --version 2>/dev/null | grep -oE '[0-9]+\.[0-9]+\.?[0-9]*' | head -1
    return 0
  fi
  return 1
}

VERSION=$(get_firefox_version 2>/dev/null || true)

if [ -z "$VERSION" ]; then
  echo "UNKNOWN — Firefox not found on this host"
  exit 2
fi

IFS='.' read -r MAJOR MINOR PATCH <<< "$VERSION"
PATCH=${PATCH:-0}

echo "Detected Firefox version: $VERSION"

if [ "$MAJOR" -gt "$PATCHED_MAJOR" ]; then
  echo "PATCHED — Firefox $VERSION is newer than 151.0.3"
  exit 0
elif [ "$MAJOR" -eq "$PATCHED_MAJOR" ] && [ "$MINOR" -gt "$PATCHED_MINOR" ]; then
  echo "PATCHED — Firefox $VERSION is newer than 151.0.3"
  exit 0
elif [ "$MAJOR" -eq "$PATCHED_MAJOR" ] && [ "$MINOR" -eq "$PATCHED_MINOR" ] && [ "$PATCH" -ge "$PATCHED_PATCH" ]; then
  echo "PATCHED — Firefox $VERSION >= 151.0.3"
  exit 0
else
  echo "VULNERABLE — Firefox $VERSION is older than 151.0.3 (CVE-2026-10702)"
  exit 1
fi
07 · Bottom Line

If you remember one thing.

TL;DR
The vendor rated this a 4.3 MEDIUM DoS — it's actually a 7.5 HIGH renderer RCE with a public, deterministic exploit chain. Monday morning: query your endpoint management platform for Firefox < 151.0.3 and Tor Browser < 15.0.19. Push the update immediately. If patching is blocked, deploy the JIT-disable policy (javascript.options.ion = false) as a compensating control. Per the noisgate mitigation SLA for HIGH severity, compensating controls should be in place within 30 days — but with a weaponized public PoC published 10 days ago, treat this with urgency and aim for days, not weeks. The noisgate remediation SLA gives you 180 days to fully patch, but the browser auto-update mechanism means most managed endpoints should be remediated well within that window. Verify coverage with the provided script and close any gaps in your Firefox ESR and Tor Browser populations.

Sources

  1. Nebula Security — IonStack Part I: CVE-2026-10702 Technical Analysis
  2. NVD — CVE-2026-10702
  3. Rapid7 — MFSA-2026-54 / CVE-2026-10702
  4. Lookout — Firefox for Android JIT Type Confusion Vulnerability
  5. SentinelOne — CVE-2026-10702 Vulnerability Database
  6. The Hacker News — Tor Browser Compromise via Firefox JIT Flaw
  7. Cybersecurity News — Tor Browser Exploitation
  8. Mozilla Security Advisory MFSA-2026-54
Peer Review

What defenders are saying.

Submit a review attribution: handle + country only
0 flags selected · stored anonymously
Validation Results

Crowdsourced verification outputs.

Results submitted by users who ran the verification payload against their environment.