Like a side door in the browser that only matters if someone first gets a user to walk into the right room
The supplied record describes a Cast input-validation flaw in Chrome that lets a remote attacker bypass same-origin protections using a crafted HTML page, affecting versions before 149.0.7827.53 on Linux and 149.0.7827.53/54 on Windows/macOS. One important caveat: as of 2026-06-05, the public Chrome 149 release notes do list CVE-2026-11069 as a Medium Cast validation bug, but the fuller public description matching your title currently aligns with the analogous public record CVE-2026-11259; this assessment follows the *behavior* you supplied, not the ID string blindly.
paragraphs continued: same-origin bypass sounds scary in abstract, but the real path is much narrower than a server-side internet-edge flaw. The attacker still needs the victim to load malicious content, the bug lives in a Cast-specific code path rather than a universally exposed network service, Chrome’s modern site isolation architecture reduces blast radius, and there is no KEV listing or credible public exploitation signal. That makes the vendor's MEDIUM 6.5 feel too generous for enterprise patch prioritization.
3 steps from start to impact.
Land the victim on attacker HTML
- Victim uses Chrome prior to
149.0.7827.53/54 - Victim loads attacker-controlled HTML
- Attacker can deliver web content to the victim
- Requires user interaction (
UI:R) - Enterprise web filtering, safe browsing, mail security, and URL isolation can block delivery
- No evidence this bug is being mass-exploited
Reach the Cast validation flaw
- Cast-related code path is reachable in the victim's browser context
- The page can trigger the vulnerable Cast handling path
- Cast is not a broadly internet-exposed service
- Many enterprise users never actively use Cast features
- Feature-specific browser bugs are harder to weaponize at scale than renderer memory corruption
Abuse same-origin bypass for cross-origin actions
- Victim is simultaneously authenticated to a useful target origin or has sensitive web state present
- The vulnerable path yields usable cross-origin capability
- No published PoC proving broad, repeatable impact
- Chrome Site Isolation and process separation reduce some post-bypass value
- The supplied intel shows integrity impact only, with no established confidentiality or availability outcome
The supporting signals.
| Record hygiene | Caution: your supplied title/behavior matches the public description now visible for CVE-2026-11259, while Chrome 149 release notes separately list CVE-2026-11069 as a Cast input-validation bug on 2026-06-02. I assessed the *described behavior* and treated the ID mismatch as unresolved public-record drift. |
|---|---|
| In-the-wild status | No active exploitation evidence found. Not present in CISA KEV as checked against the public catalog; no primary-source campaign reporting located. |
| PoC availability | No public PoC found in official Chromium/Google sources or reputable public reporting reviewed here. That lowers urgency materially. |
| EPSS | 0.00021 from supplied intel; extremely low. Percentile was not verified from the primary FIRST feed during this review, so do not over-interpret it. |
| KEV status | Not KEV-listed as of 2026-06-05. |
| CVSS and interpretation | Supplied vendor baseline: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:N = 6.5 MEDIUM. Public NVD enrichment for the analogous exact-description record CVE-2026-11259 shows a lower CISA-ADP assessment of AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:N = 4.3 MEDIUM, which supports downward pressure. |
| Affected versions | Chrome before 149.0.7827.53 on Linux and before 149.0.7827.53/54 on Windows/macOS, per the Chrome 149 desktop release notes. |
| Fixed versions | Upgrade to Chrome 149.0.7827.53 on Linux and 149.0.7827.53/54 on Windows/macOS. Enterprise channels that lag stable should verify backported builds rather than major version alone. |
| Scanning/exposure reality | Shodan/Censys/FOFA are largely irrelevant here. This is endpoint browser code, not an internet-exposed service; exposure is a fleet software inventory problem, not an attack-surface scan problem. |
| Disclosure and reporter | Public release note published 2026-06-02; NVD publication for the analogous public description is 2026-06-04. The Chrome 149 notes show the Cast entries in this range as reported by Google on 2026-04-03. |
noisgate verdict.
The decisive factor is compound friction: this requires a user to load attacker HTML and then successfully hit a Cast-specific browser policy bug, which sharply narrows both reachability and exploit scale. With no KEV listing, no public exploitation, and no evidence of broad weaponization, this does not belong in the same patch queue as remotely reachable server flaws or renderer RCEs.
Why this verdict
- User-click required:
UI:Rmeans the attacker still needs delivery and victim interaction before anything happens. - Feature-path narrowing: this sits in Cast, not a universally reachable server or generic memory-corruption path; that sharply cuts reachable population in real enterprise use.
- No exploitation signal: no KEV listing, no public PoC, and a tiny supplied EPSS materially reduce immediate operational risk.
- Blast radius is browser-bounded: even if same-origin checks are bypassed, this is still not equivalent to native code execution or unauthenticated server compromise.
- Vendor baseline looks inflated: the analogous public NVD/CISA-ADP record for the same behavior is lower (
4.3) than the supplied6.5, which reinforces a downgrade.
Why not higher?
This is not an unauthenticated server-side bug, not a memory-corruption-to-RCE issue, and not something an external scanner can find on your perimeter. The exploit chain starts with social or web delivery and then depends on a specific browser feature path, which is exactly the kind of compound friction that pushes enterprise urgency down.
Why not lower?
A same-origin bypass is still a real security-boundary failure inside the browser, and Chrome is widely deployed across enterprise fleets. If an attacker can reliably trigger it against authenticated users, it can enable cross-origin actions or content tampering that defenders should not ignore.
What to do — in priority order.
- Force auto-update compliance — Ensure Chrome stable-channel updates are actually landing on endpoints and unmanaged browsers are blocked from corp access. For a LOW noisgate verdict there is no SLA, so treat this as backlog hygiene while still cleaning up stale versions through normal browser management.
- Reduce malicious-page delivery — Tighten email URL filtering, web isolation, Safe Browsing enforcement, and high-risk user browser controls to cut off the only realistic initial step: getting a victim onto attacker HTML. For a LOW verdict there is no mitigation SLA; fold this into routine hardening rather than emergency change windows.
- Enforce browser inventory visibility — Use EDR, software inventory, MDM, or enterprise browser management to identify hosts below
149.0.7827.53/54. Because this is endpoint software rather than a network service, inventory accuracy matters more than perimeter scanning. - Prefer site isolation defaults — Keep Chrome’s Site Isolation protections enabled and do not weaken them through performance-driven exceptions. They do not remove the bug, but they reduce the practical value of same-origin boundary mistakes.
- External vulnerability scanning won't help much because Chrome desktop exposure is not internet-enumerable.
- Network segmentation alone does not stop a user from browsing to a malicious page.
- MFA is good hygiene but does not prevent a browser same-origin policy bug from abusing an already authenticated session in the browser.
Crowdsourced verification payload.
Run this on the target endpoint or through your EDR/remote execution tool, not from an auditor workstation. Invoke it with python3 check_chrome_149.py (Windows can use py check_chrome_149.py); no admin rights are strictly required, but local read access to standard install paths is needed.
#!/usr/bin/env python3
# check_chrome_149.py
# Exit codes:
# 0 = PATCHED
# 1 = VULNERABLE
# 2 = UNKNOWN
import os
import platform
import re
import subprocess
import sys
from pathlib import Path
FIX_MIN = (149, 0, 7827, 53)
CANDIDATES = {
'Windows': [
Path(os.environ.get('ProgramFiles', r'C:\Program Files')) / 'Google/Chrome/Application/chrome.exe',
Path(os.environ.get('ProgramFiles(x86)', r'C:\Program Files (x86)')) / 'Google/Chrome/Application/chrome.exe',
Path(os.environ.get('LocalAppData', '')) / 'Google/Chrome/Application/chrome.exe',
],
'Darwin': [
Path('/Applications/Google Chrome.app/Contents/MacOS/Google Chrome'),
Path.home() / 'Applications/Google Chrome.app/Contents/MacOS/Google Chrome',
],
'Linux': [
Path('/usr/bin/google-chrome'),
Path('/usr/bin/google-chrome-stable'),
Path('/opt/google/chrome/chrome'),
Path('/snap/bin/chromium'),
Path('/usr/bin/chromium'),
Path('/usr/bin/chromium-browser'),
],
}
def parse_version(s):
m = re.search(r'(\d+)\.(\d+)\.(\d+)\.(\d+)', s)
if not m:
return None
return tuple(int(x) for x in m.groups())
def version_to_str(v):
return '.'.join(str(x) for x in v)
def run_version(binary):
try:
out = subprocess.check_output([str(binary), '--version'], stderr=subprocess.STDOUT, timeout=8)
return out.decode(errors='ignore').strip()
except Exception:
return None
def find_installed():
system = platform.system()
keys = {'Windows': 'Windows', 'Darwin': 'Darwin'}.get(system, 'Linux')
found = []
for p in CANDIDATES.get(keys, []):
if p and p.exists():
found.append(p)
return found
def main():
found = find_installed()
if not found:
print('UNKNOWN - Chrome/Chromium binary not found in standard locations')
sys.exit(2)
best = None
best_path = None
for binary in found:
raw = run_version(binary)
if not raw:
continue
ver = parse_version(raw)
if ver and (best is None or ver > best):
best = ver
best_path = binary
if best is None:
print('UNKNOWN - Unable to read browser version from discovered binaries')
sys.exit(2)
if best < FIX_MIN:
print(f'VULNERABLE - Found {version_to_str(best)} at {best_path}; expected >= {version_to_str(FIX_MIN)}')
sys.exit(1)
else:
print(f'PATCHED - Found {version_to_str(best)} at {best_path}; meets >= {version_to_str(FIX_MIN)}')
sys.exit(0)
if __name__ == '__main__':
main()
If you remember one thing.
Sources
- Chrome Releases - Stable Channel Update for Desktop (Chrome 149)
- Chrome Releases - Early Stable Update for Desktop
- NVD - CVE-2026-11259
- Chromium issue referenced by NVD for analogous public description
- CISA Known Exploited Vulnerabilities Catalog
- FIRST EPSS API documentation
- Chrome 149 release notes
- Chromium Site Isolation overview
What defenders are saying.
Crowdsourced verification outputs.
Results submitted by users who ran the verification payload against their environment.