Like leaving your browser's diary open at a coffee shop, except the barista has to convince you to sit in a very specific chair first
CVE-2026-11106 is an inappropriate implementation in the Media component of Google Chrome prior to version 149.0.7827.53 (stable desktop channel). The flaw allows a remote attacker to craft an HTML page whose media elements violate the same-origin policy, leaking cross-origin data — potentially including session tokens, PII, or other authenticated content rendered in the victim's browser. All desktop Chrome installations on Windows, macOS, and Linux prior to 149.0.7827.53 are affected. The fix shipped as part of Chrome 149's massive 429-vulnerability security update on June 4, 2026.
Google rated this MEDIUM at CVSS 6.5, and that label is directionally correct but slightly generous given real-world conditions. The vector AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:N correctly captures high confidentiality impact and required user interaction, but it cannot model Chrome's aggressive auto-update cadence. Most managed Chrome deployments patch within 48-72 hours of a stable release, which dramatically compresses the exploitation window. Additionally, nearly four months after disclosure there is no public proof-of-concept, no KEV listing, and EPSS sits at the 8th percentile (0.19%). The vendor MEDIUM is fair as a theoretical ceiling; the practical risk for enterprises with standard Chrome update policies is lower.
4 steps from start to impact.
Attacker crafts malicious HTML page
<video> or <audio> tags with manipulated source attributes or service-worker-mediated responses) designed to trigger the inappropriate implementation in Chrome's Media subsystem. This page must be hosted on attacker-controlled infrastructure or injected into a site the victim trusts. Historical Chrome media cross-origin bugs (e.g., CVE-2026-7979, CVE-2026-11176) have exploited how the browser handles opaque responses from service workers for media resources.- Attacker has web hosting or can inject content into a visited site
- Knowledge of the specific media implementation flaw to craft a working trigger
- No public PoC or exploit code exists as of September 2026
- The Chromium bug (issue 500508725) details remain restricted, so exploit development requires independent reverse engineering of the patch diff
Victim navigates to malicious page
UI:R). The victim must be running a Chrome version older than 149.0.7827.53 at the time of visit.- Victim uses an unpatched Chrome version (< 149.0.7827.53)
- Victim clicks a link or navigates to the malicious page
- Chrome auto-updates on all platforms — most enterprise fleet browsers reached 149.x within 72 hours of June 4 release
- Enterprise email gateways and web proxies filter known-malicious URLs
- The exploitation window for most managed endpoints was approximately 2-3 days in early June
Media component leaks cross-origin data
- Victim has active authenticated sessions to interesting targets in the same browser profile
- The specific cross-origin data the attacker wants to steal is accessible via the media subsystem flaw
- Site Isolation (enabled by default since Chrome 67) limits the renderer process to a single site, reducing the cross-origin surface available to media-level leaks
- Content Security Policy headers on target sites may restrict media loading behavior
- The scope is
Unchanged(S:U), meaning the vulnerability does not grant access beyond the vulnerable component's security scope
Attacker exfiltrates stolen data
- Outbound network connectivity from the victim's browser to attacker infrastructure
- Leaked data is valuable enough to justify the attack chain
- Data Loss Prevention (DLP) solutions monitoring browser traffic may flag unusual exfiltration patterns
- Network monitoring can detect connections to newly registered or uncategorized domains
- The impact is read-only — no integrity or availability impact, no code execution, no persistence
chrome://settings/help or fleet telemetry.Content-Security-Policy headers restricting media sources (media-src 'self'). This limits the cross-origin data surface exploitable via media implementation flaws. Deploy within the standard change management cycle.- Network segmentation — This is a client-side browser vulnerability triggered by visiting a web page. Network segmentation between server tiers does not prevent a user's browser from reaching an attacker-hosted page on the internet.
- WAF rules — Web Application Firewalls protect server-side applications. They cannot inspect or filter the malicious HTML/media content rendered inside a victim's browser on the client side.
- EDR behavioral detection — The exploitation occurs entirely within Chrome's renderer process as a logic bug (inappropriate implementation), not a memory corruption. There is no shellcode, no process injection, no anomalous system calls for EDR to detect. The data exfiltration uses normal HTTP requests indistinguishable from legitimate browser traffic.
The supporting signals.
| In-the-wild exploitation | No evidence. Not listed in CISA KEV. No campaigns, advisories, or threat intel reports reference active exploitation of CVE-2026-11106. Google stated that none of the Chrome 149 vulnerabilities were exploited in the wild at time of release. |
|---|---|
| Proof-of-concept availability | None found. No PoC on pocindex.io, GitHub, ExploitDB, or nuclei templates as of September 2026. No dedicated GitHub repos for this CVE. The Chromium bug (issue 500508725) remains access-restricted. The absence of a PoC nearly 4 months post-disclosure significantly reduces near-term risk. |
| EPSS score | 0.00187 (0.19%) — 8th percentile. This places CVE-2026-11106 in the bottom decile of predicted exploitation probability, reflecting the combination of no PoC, no wild exploitation, and the auto-update mitigation. |
| CISA KEV status | Not listed. No CISA Known Exploited Vulnerabilities catalog entry exists for this CVE. |
| CVSS vector interpretation | CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:N — Network-reachable, low complexity, no privileges needed, but requires user interaction. Impact is confidentiality-only (High), with no integrity or availability impact. Scope is Unchanged. The UI:R and S:U modifiers are the key limiters. |
| Affected versions | All Google Chrome desktop versions prior to 149.0.7827.53 on Windows, macOS, and Linux. Chromium-based browsers (Edge, Brave, Opera, Vivaldi) using the same Chromium Media codebase are likely affected in their equivalent version ranges. Ubuntu marks chromium-browser as Not affected (snap auto-updates). |
| Fixed versions | Chrome 149.0.7827.53 (stable, June 4, 2026) for Linux; 149.0.7827.53/54 for Windows and macOS. Chromium-based browsers shipped corresponding fixes within days. Distro backports: Ubuntu snap auto-updated; Debian/Fedora chromium packages track upstream. |
| Scanning/exposure data | Not applicable for server-side scanning (Shodan/Censys/GreyNoise). This is a client-side browser vulnerability — exposure is measured by browser version telemetry, not internet-facing services. Chrome Browser Cloud Management or endpoint management (Intune, SCCM, Jamf) provides fleet-wide version visibility. |
| Disclosure timeline | Disclosed 2026-06-04 as part of Chrome 149 stable release. Part of a batch of 429 security fixes — the largest Chrome security update ever. The bug was reported via Chromium's bug bounty program; researcher details are not public. |
| Related vulnerabilities | Sibling Chrome Media cross-origin bugs in the same release window: CVE-2026-7979 (Chrome < 148, Medium), CVE-2026-11176 (Chrome < 149, Medium), CVE-2026-11134 (Chrome < 149, Medium). The pattern suggests a systemic Media subsystem audit. Higher-severity variant: CVE-2026-9991 (High, required compromised renderer). |
Sources.
Why this verdict
- Auto-update compression: Chrome's auto-update mechanism means the vast majority of managed enterprise browsers patched within 72 hours of the June 4 release. The vulnerable population at any given time post-release is a small fraction of the installed base — primarily unmanaged BYOD devices, locked-down kiosk configurations with disabled updates, or air-gapped systems.
- No weaponization signal: Nearly four months after disclosure, there is no public PoC, no exploit code, no nuclei template, and no researcher demonstration. The Chromium bug remains restricted. EPSS at the 8th percentile (0.19%) reflects this absence. Without a working exploit, the theoretical CVSS score overstates practical risk.
- User interaction required, read-only impact: The attack chain requires the victim to navigate to an attacker-controlled page (
UI:R). The impact is strictly confidentiality — no code execution, no persistence, no integrity damage, no availability impact. This limits the blast radius to data readable in the victim's browser session at the moment of exploitation. - Site Isolation mitigates blast radius: Chrome's Site Isolation (default since Chrome 67) confines renderer processes to single sites, limiting the cross-origin data surface accessible via media-level implementation flaws. This architectural defense degrades the real-world confidentiality impact below what CVSS C:H implies.
- Role multiplier: Chrome is a universal endpoint application deployed on workstations, developer machines, admin consoles, and kiosks. The high-value-role question is whether an administrator browsing with an unpatched Chrome could leak cross-origin data from sensitive management consoles (e.g., cloud admin panels, AD management). This is plausible but the chain requires (a) the admin to visit a malicious page, (b) have the sensitive console open in the same browser profile, (c) be running an unpatched version — a narrow intersection. Chrome is not itself identity infrastructure, a hypervisor, or a server-side component. The blast radius is per-user, per-session — not fleet-scale, domain-scale, or supply-chain-scale. No high-value-role floor applies.
Why not higher?
Upgrading to HIGH would require either active exploitation evidence, a public PoC lowering the exploitation barrier, or a blast radius that extends beyond a single user's browser session. None of these conditions are met. The vulnerability cannot achieve code execution, lateral movement, or persistence. Chrome's auto-update cadence means the vulnerable population shrinks rapidly, and the confidentiality-only impact with required user interaction does not justify a HIGH assessment.
Why not lower?
Dropping to LOW would undercount the theoretical severity of a same-origin policy bypass in the world's most popular browser. Cross-origin data leaks can expose session tokens and sensitive authenticated content. Unmanaged endpoints (BYOD, contractor machines, developer workstations with update delays) remain a real if shrinking attack surface. The network-reachable, no-privileges-required attack vector with high confidentiality impact keeps the floor at MEDIUM.
Crowdsourced verification payload.
Run this script on any auditor workstation or endpoint where you want to check Chrome's installed version. Requires Python 3.6+ and no special privileges. Invoke with: python3 check_cve_2026_11106.py — it checks the default Chrome installation paths on Windows, macOS, and Linux.
#!/usr/bin/env python3
"""CVE-2026-11106 checker — verifies Chrome version >= 149.0.7827.53
Usage: python3 check_cve_2026_11106.py
Exit codes: 0=PATCHED, 1=VULNERABLE, 2=UNKNOWN
"""
import subprocess
import sys
import platform
import re
import os
FIXED_VERSION = (149, 0, 7827, 53)
def parse_version(ver_str):
parts = ver_str.strip().split(".")
if len(parts) != 4:
return None
try:
return tuple(int(p) for p in parts)
except ValueError:
return None
def get_chrome_version():
system = platform.system()
try:
if system == "Windows":
import winreg
for key_path in [
r"SOFTWARE\Google\Chrome\BLBeacon",
r"SOFTWARE\WOW6432Node\Google\Chrome\BLBeacon"
]:
try:
key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, key_path)
val, _ = winreg.QueryValueEx(key, "version")
winreg.CloseKey(key)
return val.strip()
except (FileNotFoundError, OSError):
continue
# Fallback to CLI
for p in [
os.path.expandvars(r"%ProgramFiles%\Google\Chrome\Application\chrome.exe"),
os.path.expandvars(r"%ProgramFiles(x86)%\Google\Chrome\Application\chrome.exe"),
os.path.expandvars(r"%LocalAppData%\Google\Chrome\Application\chrome.exe")
]:
if os.path.exists(p):
result = subprocess.run(
["powershell", "-Command", f"(Get-Item '{p}').VersionInfo.FileVersion"],
capture_output=True, text=True, timeout=10
)
if result.returncode == 0 and result.stdout.strip():
return result.stdout.strip()
elif system == "Darwin":
plist = "/Applications/Google Chrome.app/Contents/Info.plist"
if os.path.exists(plist):
result = subprocess.run(
["defaults", "read", plist, "CFBundleShortVersionString"],
capture_output=True, text=True, timeout=10
)
if result.returncode == 0:
return result.stdout.strip()
else: # Linux
for cmd in ["google-chrome", "google-chrome-stable", "chromium-browser", "chromium"]:
try:
result = subprocess.run(
[cmd, "--version"],
capture_output=True, text=True, timeout=10
)
if result.returncode == 0:
match = re.search(r"(\d+\.\d+\.\d+\.\d+)", result.stdout)
if match:
return match.group(1)
except FileNotFoundError:
continue
except Exception as e:
print(f"Error detecting Chrome: {e}", file=sys.stderr)
return None
def main():
ver_str = get_chrome_version()
if ver_str is None:
print("UNKNOWN - Chrome not found or version could not be determined")
sys.exit(2)
ver_tuple = parse_version(ver_str)
if ver_tuple is None:
print(f"UNKNOWN - Could not parse version: {ver_str}")
sys.exit(2)
print(f"Detected Chrome version: {ver_str}")
print(f"Fixed version: {'.'.join(str(x) for x in FIXED_VERSION)}")
if ver_tuple >= FIXED_VERSION:
print("PATCHED - CVE-2026-11106 is fixed in this version")
sys.exit(0)
else:
print("VULNERABLE - CVE-2026-11106 affects this version, update Chrome immediately")
sys.exit(1)
if __name__ == "__main__":
main()