A stale pointer in Chrome's display layer that a booby-trapped webpage can turn into code execution inside the renderer sandbox
Ozone is Chromium's abstraction layer for the underlying windowing/display system — X11, Wayland, Fuchsia, headless, etc. A use-after-free here means Chrome frees a graphics-related object but keeps using the dangling pointer, letting a crafted HTML page corrupt the heap in the renderer process. Affected: all Chrome/Chromium desktop channels prior to 150.0.7871.115; downstream Edge, Brave, Opera, Vivaldi, and Electron apps built on older Chromium ship the same defect until they rebase.
The vendor's HIGH (8.8) rating is *directionally correct but slightly inflated*. CVSS gives no credit for Chrome's site-isolation renderer sandbox, which is the wall between a renderer RCE and OS-level compromise. In practice, exploiting this bug alone gets an attacker code execution inside a sandboxed renderer — meaningful, but a sandbox escape (a separate bug) is required for full host compromise. Reassessed at 7.8: still HIGH, still worth the fast auto-update cycle, not a drop-everything CRITICAL unless chained.
5 steps from start to impact.
Lure user to attacker-controlled page
- Attacker owns or compromises a reachable web resource
- Victim uses vulnerable Chrome build
- Victim clicks through or is redirected
- Enterprise web proxies + SWG (Zscaler, Netskope, Umbrella) block known malicious domains
- Safe Browsing / SmartScreen catches known bad URLs pre-navigation
Trigger the Ozone use-after-free
- Victim page executes attacker JS
- Renderer allocator state is groomed
- PartitionAlloc-Everywhere and MiraclePtr (raw_ptr<T>) increasingly neutralize UAFs in renderer allocations — many recent Chrome UAFs degrade to DoS rather than RCE
- ASLR + control-flow integrity raise the exploit-dev cost
Heap corruption → renderer code execution
- Successful trigger from step 2
- MiraclePtr does not scoop this allocation type
- Chrome's V8 sandbox and renderer sandbox contain the payload
- No public exploit is known for this specific CVE at time of assessment
Chain a sandbox escape (required for host impact)
- A working sandbox-escape 0/1-day exists AND targets the same Chrome version window
- Sandbox-escape bugs are scarce and highly valuable; unlikely to burn one for opportunistic drive-by
- Windows Hypervisor-Protected Code Integrity (HVCI) and MDAG raise the cost further
Persistence / lateral movement
- Sandbox escape achieved
- No EDR blocks payload
- Modern EDR (CrowdStrike, SentinelOne, Defender for Endpoint) catches common post-exploit tooling
The supporting signals.
| In-the-wild status | Not KEV-listed. No public reports of active exploitation as of 2026-07-10. Chrome bulletin does not flag it as exploited-in-the-wild (contrast: bugs Google flags with 'exists in the wild' language). |
|---|---|
| Public PoC | None public at disclosure. Patch-diff reversing by researchers such as *man yue mo (GitHub Security Lab)* and *@_manfp* typically yields renderer-crash PoCs within 2–4 weeks of Chrome stable-channel drops. |
| EPSS | 0.00185 (~0.19%) — below the 50th percentile. Consistent with 'patched, not weaponized yet.' |
| KEV | Not listed by CISA as of 2026-07-10. |
| CVSS vector | CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H = 8.8. UI:R is the load-bearing constraint — no zero-click. S:U ignores the renderer sandbox, which is why the raw score overstates real host impact. |
| Affected versions | All Chrome/Chromium < 150.0.7871.115 (Stable). Downstream: Edge, Brave, Opera, Vivaldi, Electron apps until rebased. ChromeOS via LTS channel. |
| Fixed version | Chrome 150.0.7871.115 (Stable, 2026-07-08). Edge and other Chromium downstreams typically ship equivalents within 24–72h. |
| Exposure data | Chrome installed base ≈ 65% of desktop browsers (StatCounter). Auto-update means well-managed fleets patch within 7 days; unmanaged / kiosk / air-gapped fleets lag indefinitely. |
| Disclosure | 2026-07-08 in the Chrome Stable Channel Update. Credit typically to external researcher via Chrome VRP; assume named credit in the bulletin. |
| Bug class trend | Ozone/graphics UAFs are a recurring Chrome bug class (see CVE-2024-4671, CVE-2023-3079, etc.). MiraclePtr rollout has reduced weaponization rate meaningfully but not to zero. |
noisgate verdict.
HIGH is retained because the affected component is the world's most widely deployed browser and a crafted webpage suffices to trigger the flaw — the exposure population is enormous. Downgraded only fractionally from 8.8 because renderer-sandbox containment blocks full host compromise without a chained escape, which is not publicly available today.
Why this verdict
- Massive install base: Chrome + Chromium downstreams are on essentially every enterprise endpoint. Even with UI:R, the reachable population is >90% of your fleet — friction does not narrow this the way it would for a niche server product.
- UI:R is real friction, not theoretical: a user must load an attacker page. That is stopped by web-proxy category blocking, Safe Browsing, and email-gateway URL rewriting for the majority of opportunistic delivery. This is why 8.8 → 7.8 rather than 8.8 → 8.8.
- Sandbox containment caps blast radius: renderer RCE ≠ host RCE. Without a second (sandbox-escape) bug, the attacker gets code execution in a process that cannot read your home directory, cookies from other origins, or credential stores. CVSS gives no credit for this — noisgate does.
- Role multiplier: Chrome runs primarily on workstations (typical role — chain ends at user-context compromise post-escape) and on some VDI/jump hosts (elevated role — a jump host RCE gets an attacker onto the admin plane, but this is a small fraction of installs). No canonical high-value role is defined by 'runs Chrome' — the floor is HIGH, not CRITICAL.
- No exploit, no KEV, low EPSS today — but patch-diffing Chrome UAFs is a known cottage industry, so weaponization within weeks is a reasonable planning assumption.
Why not higher?
CRITICAL is reserved for chains that end in fleet or identity compromise on their own. This bug requires user interaction AND a separate sandbox-escape bug to reach the host. Neither is present in a public exploit today, and Chrome's auto-update will patch the majority of the fleet within a week without operator action.
Why not lower?
MEDIUM would understate the risk: Chrome is on every endpoint, drive-by delivery is the #1 initial-access vector in commodity intrusion sets, and Chromium UAFs are historically weaponized within weeks of patch. Ignoring this because 'it's just the renderer' gets you owned when a chain drops.
What to do — in priority order.
- Force Chrome auto-update fleet-wide — Push
RelaunchNotification= 2 (Required) andRelaunchNotificationPeriod≤ 86400000 (24h) via GPO/Intune/Jamf so users cannot indefinitely defer the relaunch that finalizes the update. Deploy within the noisgate mitigation SLA of 30 days, ideally within 7. - Verify Chromium downstreams — Edge, Brave, Opera, Vivaldi, and every Electron app in your inventory (Slack, Teams-classic, VS Code, Discord, Notion, 1Password desktop) each carry their own Chromium fork. Confirm each ships an equivalent patch and roll it. Same 30-day mitigation window.
- Enable Site Isolation everywhere — Set
IsolateOriginsandSitePerProcess= enabled via policy. This is the control that turns renderer-RCE into a per-origin blast radius rather than an all-tabs compromise. Verify now; it should already be the default on desktop. - Tighten web egress via SWG — Ensure Zscaler / Netskope / Umbrella / Defender for Cloud Apps categories 'Newly Registered Domains', 'Uncategorized', and 'Malware' are set to Block. Blocks drive-by delivery pre-navigation.
- EDR: alert on chrome.exe child processes — chrome.exe should almost never spawn cmd.exe, powershell.exe, wscript.exe, or unexpected LOLBINs. Tune EDR to alert; this catches sandbox-escape post-conditions even if the initial UAF succeeds.
- WAF / IPS signatures on inbound web traffic — the malicious page is served to your users from *outbound* browsing, not into your DMZ. WAFs don't see it.
- Disabling JavaScript — theoretically kills the trigger, breaks 100% of business web apps. Non-starter operationally.
- MFA / SSO hardening — irrelevant to the exploit chain itself; it only limits post-escape lateral movement, not the RCE.
- Network segmentation — the exploit rides an outbound HTTPS session the user initiated. Segmentation between endpoints doesn't affect delivery.
Crowdsourced verification payload.
Run on a target Windows endpoint (or via your RMM/Intune script deployment against the fleet). Requires standard user rights — reads Chrome's on-disk version from Program Files. Invoke with .\Check-CVE-2026-15112.ps1 for local, or wrap in your RMM's PowerShell task for fleet-wide execution.
#requires -Version 5.0
# noisgate verifier: CVE-2026-15112 (Chrome Ozone UAF)
# Exit 0 = PATCHED, 1 = VULNERABLE, 2 = UNKNOWN
$FixedVersion = [Version]'150.0.7871.115'
$paths = @(
"$env:ProgramFiles\Google\Chrome\Application\chrome.exe",
"${env:ProgramFiles(x86)}\Google\Chrome\Application\chrome.exe",
"$env:LOCALAPPDATA\Google\Chrome\Application\chrome.exe"
)
$found = $false
$vulnerable = $false
foreach ($p in $paths) {
if (Test-Path $p) {
$found = $true
try {
$vi = (Get-Item $p).VersionInfo
$installed = [Version]$vi.ProductVersion
Write-Host "Found Chrome at $p : $installed"
if ($installed -lt $FixedVersion) {
Write-Host "VULNERABLE: $installed < $FixedVersion" -ForegroundColor Red
$vulnerable = $true
} else {
Write-Host "PATCHED: $installed >= $FixedVersion" -ForegroundColor Green
}
} catch {
Write-Host "UNKNOWN: could not parse version at $p" -ForegroundColor Yellow
exit 2
}
}
}
if (-not $found) {
Write-Host "UNKNOWN: Chrome not installed at standard paths." -ForegroundColor Yellow
exit 2
}
if ($vulnerable) { exit 1 } else { exit 0 }
If you remember one thing.
RelaunchNotification = Required so users can't sit on the old build — this is your compensating control and it must be complete within the noisgate mitigation SLA of 30 days for HIGH (target ≤ 7 days given the volume of exposed endpoints). Fleet-wide remediation — meaning every endpoint including Chromium downstreams (Edge, Brave, Electron apps like Slack/Teams/VS Code) verified on the fixed version — falls under the noisgate remediation SLA of 180 days but should realistically close inside 30. No KEV, no public exploit, no ITW campaign today — this is not a fire drill, but Chromium UAFs get patch-diffed fast, so don't let this slip past a normal patch window.Sources
What defenders are saying.
Crowdsourced verification outputs.
Results submitted by users who ran the verification payload against their environment.