← Back to Feed CACHED · 2026-09-04 07:22:17 · CACHE_KEY CVE-2026-85046
CVE-2026-85046 · CWE-843 · Disclosed 2026-09-03

Type confusion in V8 in Google Chrome prior to 152.0.7977.82 allowed a remote attacker to execute arbitrary…

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

Someone left the engine running inside a locked garage — dangerous, but the walls are still holding

CVE-2026-85046 is a type confusion flaw in Chrome's V8 JavaScript engine affecting all versions prior to 152.0.7977.82 (stable channel update September 3, 2026). A remote attacker can craft a malicious HTML page that tricks V8's JIT compiler into misinterpreting an object's type, corrupting heap metadata and achieving arbitrary read/write primitives — ultimately yielding code execution inside the renderer sandbox. The attack requires no authentication; the victim only needs to navigate to or be redirected to a hostile page. Every Chrome, Chromium, and Edge (Chromium-based) installation below the patched version is in scope — that is billions of browser instances globally.

Google rates this HIGH at CVSS 8.8, and for once the vendor label is accurate. The key nuance is the phrase *"inside the sandbox."* V8 type confusions are potent — they routinely appear in exploit chains used by commercial spyware vendors (NSO, Intellexa lineage) and state-sponsored actors — but on their own they grant code execution only within Chrome's heavily restricted renderer process. A full host compromise requires chaining this with a separate sandbox escape (e.g., a Mojo IPC bug or kernel vulnerability). Google's advisory confirms active exploitation in the wild as of disclosure, though CISA has not yet added it to the KEV catalog. The combination of confirmed wild exploitation and the inherent sandbox ceiling makes HIGH the right call — not CRITICAL, not MEDIUM.

"Actively exploited V8 type confusion — sandboxed RCE limits blast radius but demands fast patching"
02 · The Attack Path

5 steps from start to impact.

STEP 01

Victim navigates to attacker-controlled page

The attacker hosts or injects a crafted HTML page containing malicious JavaScript. Delivery vectors include spear-phishing links, malvertising on ad networks, watering-hole compromises of legitimate sites, or iframe injection via XSS on a trusted domain. No credentials or prior access to the victim's machine are required.
Conditions required:
  • Victim uses Chrome/Chromium < 152.0.7977.82
  • Victim clicks a link or is redirected to attacker-controlled content
Where this breaks in practice:
  • Enterprise email gateways and URL reputation filters block many phishing links
  • Chrome's Safe Browsing may flag known malicious URLs
  • Users on managed Chrome with auto-update enabled may already be patched
Detection/coverage: Safe Browsing, enterprise proxy URL categorization, email gateway link scanning
STEP 02

V8 JIT type confusion triggered

The malicious JavaScript forces V8's TurboFan or Maglev JIT compiler to optimize a code path where an object's hidden class (map) no longer matches the compiler's assumptions. This creates a type-confused object that the attacker can use to read and write memory at arbitrary offsets within the V8 heap. The trigger is entirely within JavaScript execution — no plugins or special APIs are needed.
Conditions required:
  • JavaScript execution is enabled (default)
  • V8 JIT optimization is active (default)
Where this breaks in practice:
  • V8 sandbox (memory cage) introduced in recent Chrome versions adds an inner sandbox around V8 heap operations, complicating arbitrary r/w exploitation
  • ASLR and heap partitioning raise the bar for reliable exploitation
Detection/coverage: Chrome's CrashPad telemetry may capture renderer crashes during failed exploitation attempts; no public Sigma/YARA rules specific to CVE-2026-85046 yet
STEP 03

Arbitrary read/write primitive established

Using the type-confused object, the attacker constructs stable read and write primitives over the renderer process's memory. This typically involves corrupting ArrayBuffer backing stores or TypedArray lengths to achieve out-of-bounds access. With these primitives, the attacker can overwrite function pointers or JIT-compiled code to redirect execution.
Conditions required:
  • Successful type confusion in step 2
  • Exploit must handle V8's pointer compression and sandboxed pointers
Where this breaks in practice:
  • V8 sandbox (memory cage) restricts pointer dereferencing to the V8 heap region, preventing direct access to process memory outside the cage
  • Exploit reliability varies across OS/architecture — x64 vs ARM64 have different memory layouts
STEP 04

Code execution inside renderer sandbox

The attacker achieves arbitrary code execution within the Chrome renderer process. This process runs at low integrity on Windows, within a seccomp-bpf sandbox on Linux, and within the macOS App Sandbox. The attacker can access renderer-visible data (DOM content, cookies for the current site, session tokens) but cannot directly touch the filesystem, other processes, or OS resources without escaping the sandbox.
Conditions required:
  • Successful r/w primitive from step 3
Where this breaks in practice:
  • Chrome's multi-process architecture isolates each renderer
  • Site isolation ensures cross-origin data is in separate processes
  • Without a sandbox escape, the attacker's access is confined to the renderer
Detection/coverage: EDR behavioral monitoring may detect anomalous child process spawning from chrome renderer; CrowdStrike Falcon, SentinelOne, and Microsoft Defender for Endpoint have renderer anomaly detections
STEP 05

(Theoretical) Sandbox escape chain

To achieve full host compromise, the attacker must chain this V8 bug with a separate sandbox escape vulnerability — typically a Mojo IPC deserialization flaw, a GPU process bug, or a kernel vulnerability. There is no public evidence that CVE-2026-85046 is currently being chained with a sandbox escape, though state-sponsored actors have historically paired V8 bugs with escape primitives (e.g., CVE-2024-5274 + CVE-2024-4947 chain).
Conditions required:
  • A separate unpatched sandbox escape vulnerability
  • Exploit development resources (typically state-level or commercial spyware)
Where this breaks in practice:
  • Chrome's sandbox is one of the strongest in the industry
  • Sandbox escape bugs are rare, expensive, and patched quickly
  • MiraclePtr and PartitionAlloc hardening have eliminated many historical escape classes
Detection/coverage: Kernel-level EDR telemetry, Windows Exploit Guard, Linux seccomp audit logs
03 · Intelligence Metadata

The supporting signals.

In-the-wild exploitationConfirmed. Google acknowledges active exploitation at time of disclosure (Sept 3, 2026). German tech outlet deskmodder.de independently confirms. No public campaign attribution yet.
CISA KEV statusNot listed as of 2026-09-04. Expect addition within days given confirmed exploitation.
Proof-of-conceptNo public PoC. No GitHub repositories or researcher write-ups with working exploit code. V8 type confusion PoCs historically appear 2–8 weeks post-patch once the Chromium commit diff is analyzed.
EPSS scoreNot yet scored (CVE published < 24 hours ago). Historical V8 type confusion CVEs with confirmed exploitation typically reach 95th+ percentile within the first EPSS update cycle.
CVSS v3.1 vectorCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H — 8.8 HIGH. Network-attackable, no privileges needed, user interaction required (page visit). Scope is Unchanged because execution is contained within the sandbox.
Affected versionsAll Google Chrome versions prior to 152.0.7977.82. All Chromium-based browsers (Edge, Brave, Opera, Vivaldi) shipping an unpatched V8 are also affected until they rebase.
Fixed versionsChrome 152.0.7977.82 (Linux), 152.0.7977.82/.83 (Windows/macOS), 152.0.7977.82 (Android). Edge and other Chromium forks: check vendor-specific release notes.
Scanning / exposure dataNot applicable for client-side browser vulns — no Shodan/GreyNoise/Censys footprint. Enterprise exposure is determined by browser version telemetry (Chrome Enterprise reporting, SCCM, Intune, osquery).
Disclosure date2026-09-03 (reserved 2026-09-02, published 2026-09-03)
Researcher creditExternally reported by a security researcher (name not yet public in Google advisory). Not discovered by AI or internal fuzzing per deskmodder.de.
04 · The Call

noisgate verdict.

Final Verdict
= UNCHANGED to HIGH (8.8/10)

The single most decisive factor is confirmed active exploitation in the wild combined with sandbox containment. The exploitation evidence prevents any downgrade below HIGH, while the sandbox ceiling — code execution is explicitly limited to the renderer process with no public evidence of a paired escape — prevents escalation to CRITICAL.

HIGH Vulnerability existence and severity
HIGH Active exploitation status
MEDIUM Absence of sandbox escape chain (no public evidence, but state actors may have one)
LOW Specific campaign attribution and targeting details

Why this verdict

  • Active wild exploitation: Google confirms exploitation at disclosure. This is not theoretical — someone is weaponizing this today, which anchors the severity at HIGH minimum regardless of friction analysis.
  • Sandbox containment caps blast radius: The advisory explicitly states code execution *inside the sandbox*. Without a chained sandbox escape, the attacker gains access only to renderer-process data (current-tab DOM, session cookies, form data). They cannot touch the filesystem, install persistence, or pivot laterally. This is the primary reason the verdict does not reach CRITICAL.
  • User interaction required but trivially achievable: The CVSS UI:R component (victim must visit a page) is real friction in theory, but in practice phishing click rates in enterprise remain 5–15% per campaign, and malvertising/watering-hole delivery bypasses the click requirement entirely.
  • Role multiplier: Chrome is a universal endpoint application. In the *low-value role* (general browsing workstation), sandboxed RCE yields limited data theft. In the *high-value role* (admin workstation used to access IdP consoles, cloud management planes, PAM vaults via browser), renderer compromise can steal active session tokens for Okta, Azure AD, AWS Console, or CyberArk — enabling identity-tier pivot *without* sandbox escape. However, this session-theft outcome requires the admin to be actively authenticated in the same browser profile, narrowing the realistic window. The blast radius is session-scale, not fleet-scale, which keeps the verdict at HIGH rather than CRITICAL.
  • Chromium monoculture amplifies population: Chrome holds ~65% desktop browser share. Edge, Brave, Opera, and Vivaldi share the same V8 engine. The affected population is enormous — virtually every managed endpoint runs a vulnerable version until patched.

Why not higher?

CRITICAL would require either a confirmed sandbox escape chain (making this a full host-compromise zero-day) or the affected component being a canonical high-value-role product (hypervisor, DC, IdP). Chrome is an endpoint application whose sandbox explicitly limits the blast radius to renderer-process data. While session-token theft from an admin browser is serious, it is session-scoped and requires the admin to be actively logged in — it does not inherently yield domain takeover or fleet compromise. No public evidence of a paired sandbox escape exists.

Why not lower?

Active exploitation in the wild is confirmed by Google at disclosure. Downgrading below HIGH with confirmed exploitation would be negligent. The attack is network-delivered, requires zero authentication, and targets the single most widely deployed application on enterprise endpoints. Even sandboxed, the renderer has access to authentication cookies and session tokens that can enable significant lateral movement in the hands of a sophisticated attacker.

05 · Compensating Control

What to do — in priority order.

  1. Force Chrome auto-update and verify version ≥ 152.0.7977.82 — Chrome's built-in updater is the primary remediation. Use Chrome Enterprise policy TargetVersionPrefix or ChromeManagementEnabled with your MDM (Intune, SCCM, Workspace) to force updates. Given the noisgate mitigation SLA of ≤ 30 days for HIGH, confirm fleet-wide update within that window — but given active exploitation, push for 72 hours.
  2. Disable JIT compilation via Chrome enterprise policy — Set --js-flags=--jit-less or use the enterprise policy DefaultJavaScriptJitSetting = 2 to disable TurboFan/Maglev JIT. This eliminates the JIT type confusion attack surface entirely. Performance impact is 10–30% on JavaScript-heavy pages. Deploy within the noisgate mitigation SLA (≤ 30 days) if patching is delayed, but preferably within days given active exploitation.
  3. Enable site isolation and strict site engagement policies — Ensure SitePerProcess is enabled (default since Chrome 67) and consider IsolateOrigins for high-value internal apps. This limits what a compromised renderer can access across origins.
  4. Deploy browser-level URL filtering at the proxy/SASE layer — Block uncategorized and newly registered domains at the network edge (Zscaler, Netskope, Palo Prisma). This reduces the likelihood of users reaching attacker-controlled pages delivering the exploit.
  5. Monitor for anomalous renderer behavior via EDR — Tune EDR policies to alert on Chrome renderer processes spawning unexpected child processes, making outbound connections to unusual destinations, or accessing sensitive file paths. CrowdStrike, SentinelOne, and Defender for Endpoint all support renderer anomaly detection.
What doesn't work
  • WAF / network IDS signatures — the exploit payload is JavaScript executing in the browser's V8 engine. It does not transit the network in a pattern detectable by traditional IDS/IPS rules. TLS encryption makes deep packet inspection of the payload infeasible.
  • Disabling JavaScript globally — while technically effective, this breaks virtually every web application and is not viable in enterprise environments.
  • Chrome's built-in V8 sandbox (memory cage) — while the V8 sandbox adds defense-in-depth against heap corruption, type confusion bugs in the JIT compiler can sometimes bypass cage boundaries. Do not rely on this as a standalone mitigation.
06 · Verification

Crowdsourced verification payload.

Run on any host where you want to check the installed Chrome version. Execute with python3 check_cve_2026_85046.py — no special privileges required. Works on Windows, macOS, and Linux.

noisgate-verify.py
PYTHONREAD-ONLYSAFE
#!/usr/bin/env python3
"""Check if installed Chrome/Chromium is vulnerable to CVE-2026-85046.
Type confusion in V8 — fixed in 152.0.7977.82.
Exit codes: 0 = PATCHED, 1 = VULNERABLE, 2 = UNKNOWN
"""
import subprocess
import sys
import platform
import os
import re

FIXED_VERSION = (152, 0, 7977, 82)

def parse_version(version_str):
    parts = re.findall(r'(\d+)', version_str)
    if len(parts) >= 4:
        return tuple(int(p) for p in parts[:4])
    return None

def get_chrome_version():
    system = platform.system()
    candidates = []
    if system == 'Windows':
        candidates = [
            [r'C:\Program Files\Google\Chrome\Application\chrome.exe', '--version'],
            [r'C:\Program Files (x86)\Google\Chrome\Application\chrome.exe', '--version'],
            ['reg', 'query', r'HKLM\SOFTWARE\Google\Chrome\BLBeacon', '/v', 'version'],
        ]
    elif system == 'Darwin':
        candidates = [
            ['/Applications/Google Chrome.app/Contents/MacOS/Google Chrome', '--version'],
        ]
    else:
        candidates = [
            ['google-chrome', '--version'],
            ['google-chrome-stable', '--version'],
            ['chromium-browser', '--version'],
            ['chromium', '--version'],
        ]
    for cmd in candidates:
        try:
            result = subprocess.run(cmd, capture_output=True, text=True, timeout=10)
            output = result.stdout.strip() + result.stderr.strip()
            ver = parse_version(output)
            if ver:
                return ver, output
        except (FileNotFoundError, subprocess.TimeoutExpired, OSError):
            continue
    return None, None

def main():
    ver, raw = get_chrome_version()
    if ver is None:
        print('UNKNOWN — Could not detect Chrome/Chromium installation.')
        sys.exit(2)
    print(f'Detected version: {".".join(str(v) for v in ver)} (raw: {raw})')
    if ver >= FIXED_VERSION:
        print(f'PATCHED — version {".".join(str(v) for v in ver)} >= {".".join(str(v) for v in FIXED_VERSION)}')
        sys.exit(0)
    else:
        print(f'VULNERABLE — version {".".join(str(v) for v in ver)} < {".".join(str(v) for v in FIXED_VERSION)}')
        print('CVE-2026-85046: Type confusion in V8. Update Chrome immediately.')
        sys.exit(1)

if __name__ == '__main__':
    main()
07 · Bottom Line

If you remember one thing.

TL;DR
Patch Chrome to 152.0.7977.82+ immediately. Despite the noisgate mitigation SLA for HIGH being ≤ 30 days with remediation at ≤ 180 days, the confirmed active exploitation overrides the standard timeline — treat this as a patch-immediately item, targeting fleet-wide update within 72 hours. Use your MDM or Chrome Enterprise management to force the update and verify via version telemetry. If patching is blocked on any subset of endpoints (kiosks, locked-down builds, Chromium forks awaiting rebase), deploy JIT-less mode (--jit-less flag or DefaultJavaScriptJitSetting policy) as a compensating control within the same 72-hour window. Confirm zero remaining vulnerable instances within 7 days. Monitor EDR for renderer anomalies in the interim.

Sources

  1. Chrome Releases Blog — Stable Channel Update Sept 3, 2026
  2. deskmodder.de — Chrome 152.0.7977.82 fixes 12 vulnerabilities, one exploited in the wild
  3. offseq Radar — CVE-2026-85046 Live Threat Intelligence
  4. Malwarebytes — Two critical Chrome flaws (Sept 2026)
  5. Zeropath — Chrome V8 type confusion analysis (CVE-2026-6363 analog)
  6. CyberSecurityNews — Chrome 152 security fixes overview
  7. Sentrium — V8 type confusion zero-day vulnerability analysis
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.