← Back to Feed CACHED · 2026-05-17 09:42:19 · cache_key CVE-2025-29912
CVE-2026-10940 · CWE-362 · Disclosed 2026-06-04

Race in Codecs in Google Chrome on Windows prior to 149

ASSESSED — NOISGATE V0.5
Vendor
Reassessed
Verdict:
01 · The Real Story

This is a second-story window, not the front door

CVE-2026-10940 is a race condition in Chrome's Codecs component on Windows that affects versions before 149.0.7827.53. The bug matters because it appears to let an attacker who already has code execution or strong control inside the renderer process use a crafted media path to push past Chrome's sandbox boundary; in plain English, this is not the bug that gets you *into* the browser, it's the bug that may help you get *out of* the renderer jail once you're already there.

Google's HIGH 8.3 label is defensible in a lab because sandbox escapes can turn a browser exploit into host impact, but it overstates fleet urgency for patch prioritization. The decisive real-world friction is the prerequisite: the attacker must first compromise the renderer, which means this CVE is a post-initial-compromise exploit-chain component, not a standalone remote compromise path across 10,000 endpoints.

"Important chain component, not an entry bug: it needs prior renderer compromise and a reliable Windows codec race"
02 · The Attack Path

4 steps from start to impact.

STEP 01

Land a renderer foothold with a separate bug

The attacker first needs a distinct renderer compromise, typically through another memory-corruption or logic bug triggered by a malicious page or media object. CVE-2026-10940 does not provide that initial foothold by itself; it only becomes relevant once the renderer is already under attacker control.
Conditions required:
  • Target is running vulnerable Chrome on Windows
  • User is driven to attacker-controlled content
  • Attacker has a separate working renderer exploit
Where this breaks in practice:
  • Requires chaining at least one more vulnerability before this CVE matters
  • Modern Safe Browsing, site isolation, and exploit mitigations raise the bar for the first-stage renderer bug
  • No public evidence located that this CVE is being used as part of active chains
Detection/coverage: Standalone scanners cannot prove renderer compromise. Detection comes from browser crash telemetry, EDR exploit detections, and investigation of suspicious browser-child process behavior.
STEP 02

Steer execution into the vulnerable Codecs path

With renderer control established, the attacker supplies a crafted video or media object that exercises the affected Codecs code on Windows. The exploit must reliably hit the vulnerable code path and line up the race window under real desktop timing conditions.
Conditions required:
  • Windows-specific affected build is present
  • Victim session can process attacker-controlled media
  • Exploit chain can reach the Codecs subsystem from the compromised renderer
Where this breaks in practice:
  • Windows-only scope cuts the reachable population versus all-platform Chrome bugs
  • Crafted media path narrows exposure compared with generic HTML/JS-only triggers
  • Race conditions are notoriously less reliable outside tuned lab conditions
Detection/coverage: Version-based exposure is easy to inventory, but network signatures are weak. Browser crash spikes around media handling are the best near-term telemetry.
STEP 03

Win the race and break sandbox assumptions

The attacker abuses the race in Codecs to corrupt state or violate synchronization guarantees in a way that can cross a security boundary from the renderer context. In exploit terms, this is the privilege-transition step: the vulnerability is valuable because it may convert renderer control into a sandbox escape on Windows.
Conditions required:
  • Exploit timing is stable enough on the target hardware and browser build
  • The crafted media object reaches the vulnerable synchronization path
  • Browser and OS mitigations do not fully blunt the primitive
Where this breaks in practice:
  • Race exploitation reliability degrades across hardware, load, and patch-level variance
  • Windows mitigations such as AppContainer hardening, CFG, CET, and sandbox policy reduce exploit engineering room
  • A crash-only outcome is easier to hit than a clean sandbox escape
Detection/coverage: Detection is mostly indirect: EDR memory-corruption telemetry, suspicious browser token transitions, and anomalous child-process launches. Traditional vulnerability scanning will not see exploit attempts.
STEP 04

Convert sandbox escape into host impact

If the race produces a useful escape primitive, the attacker can try to execute beyond the renderer and act in a higher-privilege browser or OS context. The practical impact is serious per affected host, but only after a successful multi-stage chain.
Conditions required:
  • Successful sandbox escape primitive
  • Useful post-escape code execution or privilege gain
  • Endpoint controls fail to contain follow-on actions
Where this breaks in practice:
  • This is still not kernel compromise; follow-on privilege escalation may be needed for full host control
  • EDR often catches the noisier post-escape behaviors better than the browser exploit itself
  • Blast radius is per-user-session unless combined with additional escalation or credential theft
Detection/coverage: EDR should be the main net here: browser spawning LOLBins, token abuse, persistence attempts, or unusual access to credentials and sensitive files.
03 · Intelligence Metadata

The supporting signals.

In-the-wild statusNo confirmed public exploitation located as of 2026-06-05, and the user-provided intel says KEV: No.
Proof-of-concept availabilityNo public PoC located. That matters because this bug is already a chain component; an attacker still needs a renderer foothold before this CVE has value.
EPSS0.00061 (~0.061%), which is extremely low and lines up with a bug that is hard to weaponize at scale.
KEV statusNot listed in the CISA KEV catalog.
CVSS vectorCVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:C/C:H/I:H/A:H — the score assumes severe impact, but the AC:H + UI:R and hidden prerequisite of a renderer compromise are the real drag in enterprise conditions.
Affected versionsGoogle Chrome on Windows prior to 149.0.7827.53.
Fixed versions149.0.7827.53/54 for Windows/Mac and 149.0.7827.53 for Linux were announced in Google's release flow; this CVE is described as Windows-specific.
Release timingGoogle pushed 149.0.7827.53/.54 as an early stable release to a small percentage of desktop users on May 29, 2026; Canada's Cyber Centre referenced the advisory on June 3, 2026.
Exposure and scanning realityNot internet-scannable in any meaningful Shodan/Censys/FOFA sense. This is endpoint software, so exposure must be measured from asset inventory, EDR, browser management, or software deployment telemetry.
Researcher / disclosure detailPublic bug details appear limited at disclosure time, which is normal for Chrome security fixes. The exact bug internals and reporter are not clearly exposed in the sources I could verify.
04 · The Call

noisgate verdict.

Final Verdict
DOWNGRADED to MEDIUM (5.9/10)

The single biggest reason this lands in MEDIUM is simple: it requires prior renderer compromise, which means the attacker is already partway through an exploit chain before this CVE becomes usable. The bug can absolutely matter in high-end Chrome chains, but as a standalone patching priority across a large Windows fleet it lacks the reach, independence, and exploitation evidence that justify a HIGH emergency response.

HIGH Post-compromise chain-component assessment
MEDIUM No public exploitation / no public PoC finding
LOW Exact internals and exploitability details while Chromium bug data remains restricted

Why this verdict

  • Biggest downgrade: requires renderer compromise first — attacker position is not unauthenticated remote code execution on the host; it implies a prior successful browser exploit and therefore a chained attack, not an entry path.
  • Reach is narrower than the vendor score suggests — Windows-only exposure plus a crafted media/codecs path means only a subset of Chrome endpoints and browsing flows are even relevant.
  • Threat intel is quiet — no KEV listing, no confirmed public campaigns, and an EPSS of 0.00061 argue against treating this like an internet-scale burn-now item.

Why not higher?

A higher rating would require one of three amplifiers that are missing here: proven in-the-wild exploitation, public weaponization, or a standalone remote compromise path. Instead, this bug starts from a compromised renderer and then asks the attacker to win a race condition on Windows, which is a much smaller and less reliable slice of real-world exposure.

Why not lower?

I am not dropping this to LOW because Chrome is ubiquitous and sandbox escapes are strategically valuable even when they are chain-dependent. If an attacker already has renderer execution, a working escape can materially change the outcome on an endpoint from a contained browser compromise to host-impacting access.

05 · Compensating Control

What to do — in priority order.

  1. Enforce Chrome auto-update and relaunch compliance — Make sure managed Windows endpoints actually move to 149.0.7827.53/54 or later and that users relaunch the browser so the fix is live. For a MEDIUM finding there is no mitigation SLA, so this is an operational hardening step rather than an emergency containment clock.
  2. Put high-risk users behind browser isolation — Use remote/browser isolation for admins, developers handling untrusted web content, and users most likely to hit malicious media. This reduces the value of a renderer-to-sandbox chain while you clean up stragglers; for MEDIUM, there is no mitigation SLA — go straight to the remediation window.
  3. Separate admin activity from browsing — Keep privileged accounts out of daily web sessions and enforce PAWs or separate admin workstations where possible. Even if this CVE is exploited, lowering the value of the logged-in context sharply reduces post-escape payoff.
  4. Watch for browser exploit symptoms — Hunt for Chrome crash bursts, unusual browser child processes, LOLBin launches, token anomalies, and suspicious access to credential stores immediately after browsing activity. This does not prevent exploitation, but it is the control most likely to catch the post-escape phase.
What doesn't work
  • A WAF does not solve this; the vulnerable surface is a client-side browser/media path, not your web server.
  • Perimeter IPS/IDS is weak here because there is no stable network signature for a renderer-compromise-plus-race-condition chain.
  • MFA is still good hygiene, but it does nothing to stop a browser sandbox escape on the endpoint itself.
06 · Verification

Crowdsourced verification payload.

Run this on the target Windows host or through your endpoint management tool. Invoke it with powershell.exe -ExecutionPolicy Bypass -File .\check-chrome-cve-2026-10940.ps1; no admin rights are required because it only reads file and registry metadata. It checks common system- and user-level Chrome install paths and reports VULNERABLE, PATCHED, or UNKNOWN.

noisgate-verify.ps1
POWERSHELLREAD-ONLYSAFE
# check-chrome-cve-2026-10940.ps1

# Purpose: Detect whether Google Chrome on Windows is older than 149.0.7827.53

# Output: VULNERABLE / PATCHED / UNKNOWN

# Exit codes: 0=PATCHED, 1=VULNERABLE, 2=UNKNOWN


$ErrorActionPreference = 'SilentlyContinue'
$fixedVersion = [version]'149.0.7827.53'

function Get-ChromeCandidates {
    $paths = New-Object System.Collections.Generic.List[string]

    $envPaths = @(
        "$env:ProgramFiles\Google\Chrome\Application\chrome.exe",
        "$env:ProgramFiles(x86)\Google\Chrome\Application\chrome.exe",
        "$env:LocalAppData\Google\Chrome\Application\chrome.exe"
    )

    foreach ($p in $envPaths) {
        if ($p -and (Test-Path $p)) { [void]$paths.Add($p) }
    }

    $regKeys = @(
        'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\chrome.exe',
        'HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\App Paths\chrome.exe',
        'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\chrome.exe'
    )

    foreach ($key in $regKeys) {
        $defaultValue = (Get-Item $key).GetValue('')
        if ($defaultValue -and (Test-Path $defaultValue)) { [void]$paths.Add($defaultValue) }
    }

    return $paths | Sort-Object -Unique
}

function Get-FileVersionObject([string]$path) {
    try {
        $fv = (Get-Item $path).VersionInfo.FileVersion
        if (-not $fv) { return $null }
        $parts = ($fv -split '[^0-9]+' | Where-Object { $_ -match '^\d+$' })
        if ($parts.Count -lt 4) { return $null }
        return [version]("{0}.{1}.{2}.{3}" -f $parts[0], $parts[1], $parts[2], $parts[3])
    }
    catch {
        return $null
    }
}

$candidates = Get-ChromeCandidates
if (-not $candidates -or $candidates.Count -eq 0) {
    Write-Output 'UNKNOWN'
    exit 2
}

$foundAnyVersion = $false
$foundVulnerable = $false
$results = @()

foreach ($chrome in $candidates) {
    $ver = Get-FileVersionObject $chrome
    if ($ver -ne $null) {
        $foundAnyVersion = $true
        $state = if ($ver -lt $fixedVersion) { 'VULNERABLE' } else { 'PATCHED' }
        $results += [pscustomobject]@{
            Path    = $chrome
            Version = $ver.ToString()
            State   = $state
        }
        if ($ver -lt $fixedVersion) { $foundVulnerable = $true }
    }
}

if (-not $foundAnyVersion) {
    Write-Output 'UNKNOWN'
    exit 2
}

# Optional detail for management tooling logs

$results | ForEach-Object { Write-Verbose ($_.Path + ' -> ' + $_.Version + ' -> ' + $_.State) }

if ($foundVulnerable) {
    Write-Output 'VULNERABLE'
    exit 1
}
else {
    Write-Output 'PATCHED'
    exit 0
}
07 · Bottom Line

If you remember one thing.

TL;DR
Monday morning, treat this as a browser-version hygiene and exploit-chain reduction task, not a fire alarm. Pull your Windows Chrome inventory, verify every managed endpoint is at 149.0.7827.53/54 or later, and clean up relaunch laggards through your normal browser-update workflow; because this is MEDIUM with no KEV and no active exploitation evidence, there is no noisgate mitigation SLA — go straight to the 365-day remediation window, but in practice Chrome is easy to auto-update, so finish verification in your next routine endpoint cycle and do not let exceptions drift past the noisgate remediation SLA of ≤365 days.

Sources

  1. Google Chrome Releases - Early Stable Update for Desktop (149.0.7827.53/.54)
  2. Google Chrome Releases blog
  3. Canadian Centre for Cyber Security advisory AV26-544
  4. CISA Known Exploited Vulnerabilities Catalog
  5. FIRST EPSS overview
  6. FIRST EPSS API documentation
  7. Vulnerability-Lookup Chrome June 2026 search results
  8. Vulnerability-Lookup Chrome June 2026 search results (additional page)
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.