This is a forged visitor badge for the browser, not a skeleton key to the estate
CVE-2026-11166 is an SVG handling flaw in Google Chrome that can let a remote attacker inject arbitrary script or HTML in the browser context, i.e. a UXSS-style outcome, when a user renders attacker-controlled content. Based on Google's June 2, 2026 desktop stable rollout, the affected population is Chrome versions before 149.0.7827.53 on Linux and before 149.0.7827.53/54 on Windows and macOS.
Google rated it MEDIUM at 6.8, and that is broadly the right bucket, but the raw score is a little generous for enterprise prioritization. The attack still needs a user to open or render hostile content, the vendor vector already admits AC:H and UI:R, there is no KEV listing or public exploitation evidence, and the likely business impact is stolen web session data or action-on-behalf-of-user in the browser rather than durable host takeover.
4 steps from start to impact.
Deliver a malicious SVG lure
- Target uses Chrome below the fixed build
- Attacker can get the victim to load attacker-controlled SVG or a page embedding it
- Browser policy does not force safer rendering or isolation
- User interaction is mandatory
- Email gateways, safe browsing, secure web gateway filtering, and browser isolation can break delivery
- SVG attachment handling often differs across mail and collaboration platforms
Trigger the SVG parsing edge case
AC:H matters: this does not look like a broad one-click-anywhere primitive, but a narrower browser-state or document-shape condition. Tooling would be a bespoke proof payload inside the SVG; no public PoC repo is evident.- The crafted SVG reaches the vulnerable code path
- Browser behavior matches the exploit assumptions
- Content is not sanitized or transformed by an upstream service
- High attack complexity lowers repeatability
- Many platforms reprocess, rasterize, or strip active SVG content
- Renderer and site context differences can make exploit reliability brittle
Run injected script in the victim browser
- Victim is authenticated to something valuable in the same browsing session
- Browser protections do not neutralize the injected execution path
- The attacker can exfiltrate data or drive state-changing requests
- Impact is bounded by browser session state, not instant system compromise
- MFA does not stop existing-session abuse but can limit follow-on account takeover
- CSP, site hardening, and tenant session controls can reduce blast radius
Translate browser access into business impact
- The user has access to sensitive SaaS or internal web apps
- Session lifetime and token scope are meaningful
- Downstream apps do not have strong anomaly controls
- Blast radius is usually one user session at a time
- Enterprise SaaS monitoring can expose abuse quickly
- This is post-click browser abuse, not broad unauthenticated infrastructure compromise
The supporting signals.
| In-the-wild status | No public evidence of active exploitation found at time of assessment; not in CISA KEV. |
|---|---|
| Public PoC | No credible public PoC or exploit repo surfaced in primary-source review. Treat this as no known public weaponization yet, not as proof of safety. |
| EPSS | 0.00029 from the user-supplied intel is extremely low, consistent with low near-term mass exploitation probability. |
| KEV status | Not listed in the CISA Known Exploited Vulnerabilities Catalog as of this assessment. |
| CVSS vector readout | CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:N means remote and no auth, but high complexity + required user interaction sharply reduce operational reach. It is dangerous when it lands, but not broadly automatable. |
| Affected versions | Google's June 2, 2026 advisory covers Chrome desktop builds before 149.0.7827.53 on Linux and before 149.0.7827.53/54 on Windows/macOS. |
| Fixed versions | Upgrade to 149.0.7827.53 or later on Linux and 149.0.7827.53/54 or later on Windows/macOS. This is a browser binary fix, not a distro package backport story. |
| Exposure and scanning reality | This is not internet-scannable infrastructure. Shodan/Censys/FOFA-style external exposure counts are largely irrelevant; the meaningful exposure metric is your installed Chrome fleet version distribution and whether high-risk users can open untrusted SVG content. |
| Disclosure timeline | Google stable desktop update published 2026-06-02; user-supplied CVE disclosure date is 2026-06-04. |
| Reporter | Google's advisory attributes the bug to Google, reported on 2026-04-13; the underlying Chromium issue is restricted. |
noisgate verdict.
The decisive factor is compound friction: the attacker needs a vulnerable browser, a successful lure, and a comparatively brittle AC:H browser-state/parser condition before any impact occurs. This is still worth fixing because successful UXSS can abuse live SaaS sessions, but it is not a clean, reliable, hands-off endpoint compromise primitive.
Why this verdict
- Downward pressure:
UI:Rmeans every attack starts with a click or render event; that implies phishing, web delivery, or content-hosting success before the vulnerability even matters. - Further downward pressure:
AC:His not decorative; it says the parser or browser state requirement is fussy enough that most opportunistic actors will prefer easier Chrome bugs. - Further downward pressure: this is a client-side browser flaw, not exposed infrastructure; reach is limited to users who both run the vulnerable build and can be induced to load the hostile SVG.
- Further downward pressure: no KEV, no public exploitation evidence, and no visible public PoC; that materially lowers immediate weaponization pressure for a 10,000-host enterprise.
- Upward pressure: Chrome is everywhere and UXSS against an authenticated user can still be high-value; stolen SaaS data, token abuse, and action-on-behalf-of-user are real business impacts even without native code execution.
Why not higher?
It is not higher because the chain narrows quickly in the real world: remote delivery still needs user interaction, exploit success still needs a high-complexity condition, and the impact is primarily in-browser. There is also no current evidence of active exploitation, no KEV listing, and no public exploit ecosystem pushing this into urgent defender panic territory.
Why not lower?
It is not lower because a successful UXSS event in Chrome can directly compromise the confidentiality and integrity of active business web sessions. In enterprises that live inside SaaS, that can still translate into data theft, fraudulent transactions, or trusted-user lateral phishing.
What to do — in priority order.
- Force browser auto-update compliance — Make sure managed Chrome update policy is actually landing on endpoints and that stale channels are not pinned indefinitely. For a
MEDIUMverdict there is no noisgate mitigation SLA — go straight to the 365-day remediation window, but browsers should ride your normal fast client-update motion rather than wait for annual backlog cleanup. - Restrict untrusted SVG handling — Block or warn on externally sourced
.svgattachments and downloads in mail, chat, and secure web gateway controls where business use allows it. This cuts the most likely delivery path while patching proceeds; there is no noisgate mitigation SLA for this verdict, so use it as a risk reducer during the remediation window. - Isolate high-risk browsing — Put privileged admins, finance users, and help desk staff behind browser isolation or hardened browsing profiles for untrusted sites. This is especially useful where users routinely open externally shared design assets or documents that may embed SVG content.
- Harden SaaS session controls — Shorten token lifetime where practical, require re-auth for sensitive actions, and tune IdP/CASB anomaly detection for unusual in-session behavior. It will not stop the browser bug itself, but it reduces the payoff if UXSS lands.
- MFA alone does not stop session abuse once the user is already logged in; this flaw is about abusing an existing browser session.
- Network vulnerability scanners will not meaningfully detect exploitation; at best they identify browser version through agent inventory, not the exploit path.
- Perimeter WAF rules are mostly irrelevant because the vulnerable component is the client browser parsing attacker-controlled SVG, not your web server.
Crowdsourced verification payload.
Run this on the target endpoint itself or through your fleet-management agent. Invoke it as python3 check_cve_2026_11166.py on macOS/Linux or py check_cve_2026_11166.py on Windows; no admin rights are required as long as the user can execute the local Chrome binary.
#!/usr/bin/env python3
# CVE-2026-11166 Chrome version check
# Outputs: VULNERABLE / PATCHED / UNKNOWN
# Exit codes: 0=PATCHED, 1=VULNERABLE, 2=UNKNOWN
import os
import platform
import re
import shutil
import subprocess
import sys
TARGET = (149, 0, 7827, 53)
def norm_version_tuple(text):
m = re.search(r'(\d+)\.(\d+)\.(\d+)\.(\d+)', text)
if not m:
return None
return tuple(int(x) for x in m.groups())
def cmp_ver(a, b):
return (a > b) - (a < b)
def run_version(cmd):
try:
p = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text=True, timeout=10)
out = (p.stdout or '').strip()
return out
except Exception:
return ''
def windows_candidates():
cands = []
for env in ('ProgramFiles', 'ProgramFiles(x86)', 'LocalAppData'):
base = os.environ.get(env)
if base:
cands.append(os.path.join(base, 'Google', 'Chrome', 'Application', 'chrome.exe'))
which = shutil.which('chrome.exe') or shutil.which('chrome')
if which:
cands.append(which)
return cands
def mac_candidates():
cands = [
'/Applications/Google Chrome.app/Contents/MacOS/Google Chrome',
os.path.expanduser('~/Applications/Google Chrome.app/Contents/MacOS/Google Chrome'),
]
which = shutil.which('google-chrome') or shutil.which('chrome')
if which:
cands.append(which)
return cands
def linux_candidates():
names = ['google-chrome', 'google-chrome-stable', 'chrome', 'chromium', 'chromium-browser']
cands = [shutil.which(n) for n in names]
cands += ['/usr/bin/google-chrome', '/opt/google/chrome/chrome']
return [c for c in cands if c]
def get_candidates():
system = platform.system().lower()
if system == 'windows':
return windows_candidates()
if system == 'darwin':
return mac_candidates()
return linux_candidates()
def first_existing(paths):
seen = set()
out = []
for p in paths:
if p and p not in seen:
seen.add(p)
out.append(p)
return out
def main():
candidates = first_existing(get_candidates())
if not candidates:
print('UNKNOWN: Google Chrome executable not found')
sys.exit(2)
for exe in candidates:
if not os.path.exists(exe):
continue
out = run_version([exe, '--version'])
ver = norm_version_tuple(out)
if ver is None:
continue
# CVE fixed in 149.0.7827.53 or later per vendor advisory
if cmp_ver(ver, TARGET) < 0:
print(f'VULNERABLE: {exe} -> {ver[0]}.{ver[1]}.{ver[2]}.{ver[3]}')
sys.exit(1)
else:
print(f'PATCHED: {exe} -> {ver[0]}.{ver[1]}.{ver[2]}.{ver[3]}')
sys.exit(0)
print('UNKNOWN: Chrome found but version could not be determined')
sys.exit(2)
if __name__ == '__main__':
main()
If you remember one thing.
MEDIUM, there is no noisgate mitigation SLA — go straight to the 365-day remediation window under the noisgate remediation SLA, but in practice you should verify Chrome auto-update health this week, identify any endpoints still below 149.0.7827.53/149.0.7827.54, and fold them into your next normal client patch wave rather than letting stale browsers linger for quarters.Sources
- Google Chrome Releases: Stable Channel Update for Desktop (2026-06-02)
- Google Chrome Releases: Early Stable Update for Desktop (2026-05-29)
- CISA Known Exploited Vulnerabilities Catalog
- FIRST EPSS
- Canadian Centre for Cyber Security advisory AV26-544
- Guyana National CIRT advisory ADV2026_360
- SecurityWeek: Chrome 149 Patches 429 Vulnerabilities
- NVD comparator: CVE-2026-11169 in same Chrome 149 release train
What defenders are saying.
Crowdsourced verification outputs.
Results submitted by users who ran the verification payload against their environment.