← Back to Feed CACHED · 2026-09-30 06:53:55 · CACHE_KEY CVE-2026-11106
CVE-2026-11106 · CWE-352 · Disclosed 2026-06-04

Chrome Media Inappropriate Implementation Cross-Origin Data Leak

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

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.

"Chrome media bug leaks cross-origin data but auto-update and no PoC keep real risk modest"
02 · The Attack Path

4 steps from start to impact.

STEP 01

Attacker crafts malicious HTML page

The attacker builds an HTML page containing specially crafted media elements (e.g., <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.
Conditions required:
  • Attacker has web hosting or can inject content into a visited site
  • Knowledge of the specific media implementation flaw to craft a working trigger
Where this breaks in practice:
  • 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
STEP 02

Victim navigates to malicious page

The victim must be lured to the attacker-controlled page via phishing email, watering-hole compromise, malvertising, or social engineering. The CVSS vector explicitly requires user interaction (UI:R). The victim must be running a Chrome version older than 149.0.7827.53 at the time of visit.
Conditions required:
  • Victim uses an unpatched Chrome version (< 149.0.7827.53)
  • Victim clicks a link or navigates to the malicious page
Where this breaks in practice:
  • 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
Detection/coverage: Email gateway URL scanning, web proxy category filtering, and browser version telemetry via Chrome Browser Cloud Management or endpoint management tools can identify at-risk hosts.
STEP 03

Media component leaks cross-origin data

When the victim's unpatched browser processes the crafted media content, the inappropriate implementation allows the attacker's JavaScript to read data from a different origin than the page's own origin. This violates the same-origin policy, a foundational browser security boundary. The leaked data could include content from other tabs, iframes, or authenticated sessions the victim has open.
Conditions required:
  • 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
Where this breaks in practice:
  • 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
STEP 04

Attacker exfiltrates stolen data

The attacker's page sends the leaked cross-origin data back to attacker-controlled infrastructure via standard HTTP requests, WebSocket, or DNS exfiltration. The data may include session cookies, CSRF tokens, page content, or other sensitive information from the victim's authenticated sessions.
Conditions required:
  • Outbound network connectivity from the victim's browser to attacker infrastructure
  • Leaked data is valuable enough to justify the attack chain
Where this breaks in practice:
  • 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
Detection/coverage: Network-level DLP, DNS monitoring, and CASB solutions can detect anomalous outbound data flows from browser processes.
03 · Compensating Control

1
MEDIUM 4.5→LOW 2.0
SEVERITY REDUCED
Enforce Chrome auto-update via policy — Configure Chrome Browser Cloud Management or GPO/MDM policy to enforce automatic updates with a maximum staleness of 48 hours. This is the single most effective control because it eliminates the vulnerable population. No mitigation SLA applies at MEDIUM severity — go straight to the 365-day remediation window per noisgate SLA, but Chrome auto-update should resolve this well within that window. Verify via chrome://settings/help or fleet telemetry.
2
MEDIUM 4.5→MEDIUM 4.0
Deploy Content Security Policy headers on sensitive internal apps — Ensure internal web applications serving sensitive data set strict 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.
3
MEDIUM 4.5→MEDIUM 3.5
Block uncategorized/newly-registered domains at web proxy — Configure your web proxy or Secure Web Gateway to block access to uncategorized and newly-registered domains (< 30 days old). This disrupts the attacker's ability to host the malicious HTML page on fresh infrastructure. Most enterprise proxies (Zscaler, Netskope, Palo Prisma) support this natively.
4
MEDIUM 4.5→MEDIUM 4.0
Monitor browser version compliance fleet-wide — Use endpoint management (Intune, SCCM, Jamf, CrowdStrike Falcon Discover, or Qualys agent) to identify any Chrome installations below 149.0.7827.53. Flag non-compliant endpoints for forced update or quarantine. This provides visibility into the residual attack surface.
What doesn't work
  • 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.
04 · Intelligence Metadata

The supporting signals.

In-the-wild exploitationNo 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 availabilityNone 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 score0.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 statusNot listed. No CISA Known Exploited Vulnerabilities catalog entry exists for this CVE.
CVSS vector interpretationCVSS: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 versionsAll 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 versionsChrome 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 dataNot 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 timelineDisclosed 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 vulnerabilitiesSibling 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.

  1. OpenCVE — CVE-2026-11106 Detail
  2. Ubuntu Security — CVE-2026-11106
  3. CyberStrike — CVE-2026-11106
  4. SecurityWeek — Chrome 149 Patches 429 Vulnerabilities
  5. CybersecurityNews — Chrome 149 Security Update
  6. Forbes — Chrome 149 Fixes 429 Security Flaws
  7. OSV — DEBIAN-CVE-2026-11106
  8. pocindex.io — PoC Search
05 · The Call

Final Verdict
= UNCHANGED to MEDIUM (4.5/10)

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.

06 · Verification

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.

noisgate-verify.py
PYTHONREAD-ONLYSAFE
#!/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()