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

Inappropriate implementation in XML in Google Chrome prior to 149

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

This is a forged visitor badge at the browser front desk, not a master key to the building

CVE-2026-11150 is a UXSS bug in Chrome's XML handling. In practical terms, a malicious page can abuse the browser's XML implementation to make attacker-controlled script or HTML execute in the wrong trust context after a user opens crafted content. The affected range is Chrome versions before 149.0.7827.53 on the impacted desktop builds; the fix lands at 149.0.7827.53+ (Windows/Mac early stable 149.0.7827.53/.54, Linux 149.0.7827.53).

Google's MEDIUM 6.1 label is basically right. The amplifier is obvious: Chrome is everywhere, the bug is remotely triggerable, and UXSS can turn web sessions into stolen tokens, spoofed UI, or cross-origin abuse. But the friction is just as important: exploitation still requires *user interaction*, there is no evidence of active exploitation, no KEV listing, no public exploit chain of note, and the impact is browser-context compromise, not code execution or sandbox escape.

"Real bug, real browser exposure, but it still needs a click and stops well short of host compromise"
02 · The Attack Path

4 steps from start to impact.

STEP 01

Stage a lure page or file

The weaponized tool is a crafted HTML/XML lure delivered over the web, email, chat, or an internal wiki. The attacker does not need credentials or network foothold; they just need a victim using a vulnerable Chrome build to load attacker-controlled content.
Conditions required:
  • Victim runs Chrome older than 149.0.7827.53
  • Attacker can deliver a URL or file to the victim
  • Victim opens the page or local content in Chrome
Where this breaks in practice:
  • Email security, URL filtering, browser isolation, and Safe Browsing can disrupt delivery
  • User interaction is mandatory; no wormable path here
Detection/coverage: Version scanners can identify outdated Chrome, but network tools rarely detect the malicious logic before render time. Web proxy telemetry and mail gateway logs are more useful than vulnerability scanners for step 1.
STEP 02

Trigger XML trust-boundary failure

The attacker uses the crafted content to hit Chrome's flawed XML implementation and force UXSS behavior. The weaponized content is still just web material, but the result is script/HTML executing where the browser should have blocked it.
Conditions required:
  • The specific vulnerable XML code path is reachable from rendered content
  • Chrome protections do not neutralize the malformed content before parsing
Where this breaks in practice:
  • Exploit reliability can be brittle across page structure, renderer state, and release/channel differences
  • Some enterprise browsing stacks strip or rewrite suspicious attachments and links
Detection/coverage: Exploit prevention products may see suspicious DOM/script behavior, but signature coverage for a fresh UXSS bug is usually weak unless Google or the security vendor has already shipped detections.
STEP 03

Abuse the browser session

Once the UXSS fires, the attacker can use injected script or HTML to steal session material available to the page context, spoof trusted pages, or perform actions as the user inside web apps. The weaponized capability here is session hijack and UI spoofing, not host takeover.
Conditions required:
  • Victim is logged into a target SaaS or internal web app in the same browser context
  • Useful tokens, DOM data, or business workflows are reachable from the abused origin/session
Where this breaks in practice:
  • HttpOnly cookies, short-lived tokens, conditional access, and re-auth prompts reduce downstream value
  • Blast radius is often limited to the specific web session rather than the whole endpoint
Detection/coverage: Identity telemetry, impossible-travel alerts, anomalous SaaS actions, and CSP/reporting can catch abuse after the fact. Endpoint scanners generally will not prove exploitation occurred.
STEP 04

Monetize access or pivot socially

A practical attacker uses the compromised browser trust to phish better, exfiltrate business data from web apps, or approve transactions already available to the victim. The weaponized follow-on is usually account abuse, not a deep technical privilege escalation.
Conditions required:
  • The victim has valuable SaaS access
  • The target workflow can be completed from the browser alone
Where this breaks in practice:
  • MFA step-up, transaction signing, and out-of-band approval can stop the final action
  • No direct sandbox escape or native code execution path is described in the advisory
Detection/coverage: SaaS audit logs and UEBA are the best chance to see impact. Browser version audit remains the cleanest preventive signal.
03 · Intelligence Metadata

The supporting signals.

In-the-wild statusNo public evidence of active exploitation in the sources reviewed; not KEV-listed.
Proof-of-concept availabilityNo meaningful public PoC/exploit repo found in the reviewed official and mainstream tracking sources as of 2026-06-06. Expect private reproducer code to exist, because the bug class is straightforward for browser researchers.
EPSS0.00055 — extremely low predicted short-term exploitation probability.
KEV statusNo. No CISA KEV entry found for CVE-2026-11150.
CVSS vectorCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N — remote and low complexity, but user interaction required and no availability impact.
Affected versionsGoogle Chrome prior to 149.0.7827.53 on affected desktop builds.
Fixed versionsFixed in 149.0.7827.53+; Chrome release notes show Windows/Mac 149.0.7827.53/.54 early stable and Linux 149.0.7827.53.
Exposure realityThis is a client-side browser flaw. Shodan/Censys/FOFA exposure counts are not meaningful because Chrome endpoints are not normally internet-enumerable the way servers and appliances are.
Disclosure date2026-06-04.
Researcher / reportingPublicly accessible sources reviewed do not attribute an external reporter; the linked Chromium issue is restricted, so the reporter may remain private until wider rollout.
04 · The Call

noisgate verdict.

Final Verdict
= UNCHANGED to MEDIUM (6.3/10)

The decisive factor is mandatory user interaction combined with browser-context impact rather than host compromise. This bug matters because Chrome is ubiquitous, but the real-world chain still depends on luring users into malicious content and then cashing out inside web sessions, which keeps it out of the urgent patch-now bucket absent exploitation evidence.

HIGH Version range and fixed build
MEDIUM Exploitability in typical enterprise browsing environments
MEDIUM No-public-PoC / no-active-exploitation assessment

Why this verdict

  • Baseline stays near vendor 6.1 because this is unauthenticated remote content hitting one of the most widely deployed client applications in the enterprise
  • Downward pressure: UI:R is real friction — the attacker must get a user to open crafted content, which implies delivery, click-through, and browser rendering all succeeding
  • Downward pressure: impact is session/browser trust abuse, not host takeover — no code execution, no sandbox escape, no persistence, no direct admin blast radius from the bug itself
  • Downward pressure: exposure is broad but not internet-enumerable — this is not an externally reachable server bug that can be mass-scanned and opportunistically exploited at scale
  • Downward pressure: no current exploit signal — no KEV, no public exploitation reporting, and an extremely low EPSS score

Why not higher?

To reach HIGH, I'd want either active exploitation, a clean no-click path, or impact that breaks out of the browser into code execution, sandbox escape, or broad account compromise. None of that is in the record here. As written, the bug is dangerous mainly when paired with successful social engineering and valuable live browser sessions.

Why not lower?

This still hits Chrome, not some niche plugin, so the exposure population is enormous. And UXSS is not cosmetic: if a user is logged into sensitive SaaS, browser trust abuse can still mean data theft, transaction abuse, or convincing in-session phishing. That keeps it above LOW/backlog hygiene.

05 · Compensating Control

What to do — in priority order.

  1. Enforce browser auto-update — Make sure enterprise policy is actually forcing Chrome to move to 149.0.7827.53+ and preventing long-lived pinned versions. For a MEDIUM noisgate verdict there is no mitigation SLA — go straight to the 365-day remediation window, but for a core browser you should still let normal update rings close this quickly rather than waiting.
  2. Tighten risky content delivery — Block or detonate suspicious .html, .xml, and archive-delivered browser lures at email and web gateways, especially from newly seen senders and consumer file-sharing domains. There is no mitigation SLA for MEDIUM, so do this through regular control tuning while patching proceeds.
  3. Use browser isolation for untrusted destinations — If you already have remote browser isolation or high-risk browsing segmentation, apply it to users handling payments, finance, admin panels, or sensitive SaaS data. This meaningfully reduces the value of a UXSS hit by separating risky browsing from privileged sessions; again, no mitigation SLA applies for MEDIUM.
  4. Reduce session replay value — Shorten session lifetimes where practical, require step-up auth for sensitive actions, and prefer HttpOnly, origin-bound, or conditional-access-protected tokens. These controls do not stop exploitation, but they cut the attacker payoff after browser trust is abused.
What doesn't work
  • A network perimeter firewall does not help much; the exploit rides normal user web traffic and executes inside the browser after the victim opens content.
  • EDR alone is not a strong compensating control here; this is not a classic malware dropper or native process exploit, so many EDR products will only see downstream abuse, not the initial UXSS trigger.
  • Password rotation is not the right first response; the more relevant exposure is active browser sessions and tokenized app access, not necessarily saved credentials.
06 · Verification

Crowdsourced verification payload.

Run this on the target endpoint or through your software-distribution/EDR live-response tooling. Invoke it with python3 check_chrome_cve_2026_11150.py on macOS/Linux or py check_chrome_cve_2026_11150.py on Windows; no admin rights are required unless your tooling restricts access to install paths.

noisgate-verify.py
PYTHONREAD-ONLYSAFE
#!/usr/bin/env python3
# check_chrome_cve_2026_11150.py
# Detect whether the local Chrome/Chromium installation is vulnerable to CVE-2026-11150.
# Exit codes: 0=PATCHED, 1=VULNERABLE, 2=UNKNOWN

import os
import platform
import re
import subprocess
import sys
from shutil import which

FIXED = (149, 0, 7827, 53)

CANDIDATES = {
    'Windows': [
        r'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe',
        r'C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe',
        r'C:\\Program Files\\Chromium\\Application\\chrome.exe',
        r'C:\\Program Files (x86)\\Chromium\\Application\\chrome.exe'
    ],
    'Darwin': [
        '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome',
        '/Applications/Chromium.app/Contents/MacOS/Chromium'
    ],
    'Linux': [
        '/usr/bin/google-chrome',
        '/usr/bin/google-chrome-stable',
        '/usr/bin/chromium',
        '/usr/bin/chromium-browser',
        '/snap/bin/chromium'
    ]
}


def parse_version(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 find_binaries():
    system = platform.system()
    found = []
    for path in CANDIDATES.get(system, []):
        if os.path.exists(path):
            found.append(path)
    for name in ['google-chrome', 'google-chrome-stable', 'chromium', 'chromium-browser', 'chrome']:
        p = which(name)
        if p and p not in found:
            found.append(p)
    return found


def get_version(binary):
    cmds = [
        [binary, '--version'],
        [binary, '-version']
    ]
    for cmd in cmds:
        try:
            out = subprocess.check_output(cmd, stderr=subprocess.STDOUT, text=True, timeout=10)
            v = parse_version(out)
            if v:
                return v, out.strip()
        except Exception:
            pass
    return None, None


def version_lt(a, b):
    return a < b


def main():
    bins = find_binaries()
    if not bins:
        print('UNKNOWN: no Chrome/Chromium binary found on standard paths or PATH')
        sys.exit(2)

    checked = []
    vulnerable = []
    patched = []

    for binary in bins:
        version, raw = get_version(binary)
        if not version:
            checked.append((binary, None, 'unable to determine version'))
            continue
        checked.append((binary, version, raw))
        if version_lt(version, FIXED):
            vulnerable.append((binary, version))
        else:
            patched.append((binary, version))

    if vulnerable:
        details = ', '.join([f'{b}={".".join(map(str, v))}' for b, v in vulnerable])
        print(f'VULNERABLE: found version(s) older than 149.0.7827.53 -> {details}')
        sys.exit(1)

    if patched:
        details = ', '.join([f'{b}={".".join(map(str, v))}' for b, v in patched])
        print(f'PATCHED: found version(s) at or newer than 149.0.7827.53 -> {details}')
        sys.exit(0)

    print('UNKNOWN: Chrome/Chromium found but version could not be determined')
    sys.exit(2)


if __name__ == '__main__':
    main()
07 · Bottom Line

If you remember one thing.

TL;DR
Monday morning: treat this as routine-but-real browser debt, not as an incident-driven fire drill. Because the reassessed severity is MEDIUM and there is no active exploitation evidence, there is no noisgate mitigation SLA — go straight to the 365-day remediation window; that said, for a browser fleet you should still verify auto-update health, find any pinned or broken channels, and move the estate to 149.0.7827.53+ through normal rings now rather than letting exceptions linger. Your noisgate remediation SLA is ≤365 days, but for Chrome specifically the practical target should be your next standard browser rollout cycle, with exception cleanup tracked immediately.

Sources

  1. CIRCL Vulnerability Lookup entry for CVE-2026-11150
  2. Chrome Releases - Early Stable Update for Desktop (149.0.7827.53/.54)
  3. Chrome Releases archive for 2026
  4. Chromium issue reference linked from CVE record
  5. CISA Known Exploited Vulnerabilities Catalog
  6. FIRST EPSS project
  7. SecurityWeek coverage of Chrome 149 patch release
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.