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

Inappropriate implementation in Chrome for iOS in Google Chrome on iOS prior to 149

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

This is a peephole drilled through the browser wall, not a master key to the building

CVE-2026-11214 is a same-origin-policy style failure in Chrome for iOS that lets a malicious page leak cross-origin data when opened by a victim using vulnerable builds before 149.0.7827.53. In plain English: a hostile site can trick the browser into exposing data that should stay isolated between websites, so the attacker may read content tied to the victim's already-authenticated web sessions.

The vendor's 6.5 / MEDIUM baseline is close, but a little generous for enterprise patch triage. The impact can be real for targeted users with active SaaS sessions, yet the chain still depends on user interaction, affects only Chrome on iOS, and stays mostly per-user/per-session rather than turning into code execution, device takeover, or tenant-wide compromise.

"Real data exposure is possible, but this is a one-user-at-a-time browser bug, not an enterprise-burner."
02 · The Attack Path

4 steps from start to impact.

STEP 01

Lure the user into Chrome for iOS

The attacker needs the victim to open an attacker-controlled page in Chrome for iOS. The practical weapon is a bespoke malicious HTML/JavaScript page; no public exploit kit or named PoC was found in the reviewed sources. This is a classic click-to-burn client-side chain, not a drive-by against a server.
Conditions required:
  • Victim uses Google Chrome on iOS
  • Installed Chrome version is older than 149.0.7827.53
  • Victim opens attacker-controlled content
Where this breaks in practice:
  • Email security, link rewriting, mobile web filtering, and user behavior can stop the lure
  • Many enterprises have a smaller managed iOS Chrome population than desktop Chrome
  • The flaw does not trigger against users who never hit the malicious page
Detection/coverage: Traditional vuln scanners will mostly miss exploitability here; MDM/app inventory can detect vulnerable version ranges, but not whether a user actually visited a malicious page.
STEP 02

Trigger the cross-origin isolation failure

Once the page is rendered, the attacker attempts to abuse the flawed browser implementation to cross an origin boundary that should be enforced by policy. The weapon remains the same malicious HTML/JS page; the public bug description does not disclose enough detail to confirm reliability or edge-case requirements.
Conditions required:
  • Browser behavior aligns with the vulnerable code path
  • The crafted page reaches the affected implementation path in Chrome for iOS
Where this breaks in practice:
  • Exploit reliability is unknown because technical details are sparse
  • iOS browser behavior is constrained by Apple's WebKit model, which can narrow exploit surface versus desktop Chromium classes of bugs
Detection/coverage: Browser telemetry and network logs may show suspicious navigation or follow-on requests, but there is no clean signature from the public record.
STEP 03

Read session-bound cross-origin data

If the policy break works, the attacker can read data tied to other origins that the victim is already using, such as content loaded from a corporate SaaS domain. The implied weaponized outcome is session piggybacking through the victim browser, not credential cracking or device compromise. Impact is strongest when the victim is signed into sensitive internal or third-party business apps in the same browser context.
Conditions required:
  • Victim has valuable authenticated web sessions in Chrome for iOS
  • Targeted sites expose useful data to the vulnerable browser path
Where this breaks in practice:
  • Blast radius is limited to what that one user can access
  • No evidence this becomes code execution, sandbox escape, or local privilege escalation by itself
Detection/coverage: App-layer anomalies may appear in IdP/SaaS logs if unusual pages trigger authenticated reads, but most defenders will only see indirect indicators.
STEP 04

Exfiltrate the harvested data

The attacker sends the leaked data back to infrastructure they control using normal browser networking. The weaponized tool is still the same attacker page and collection endpoint, which keeps the tradecraft simple but noisy enough that DNS, proxy, or mobile web gateway telemetry may occasionally help.
Conditions required:
  • Outbound network access from the mobile device to attacker infrastructure
  • The leaked content is transferable through browser-originated requests
Where this breaks in practice:
  • Secure web gateways, DNS filtering, and egress controls can block known-bad destinations
  • Exfil still depends on the attacker first landing the user on the malicious page and successfully triggering the bug
Detection/coverage: Network controls may catch exfil domains, but signature coverage for the underlying browser bug is weak.
03 · Intelligence Metadata

The supporting signals.

In-the-wild statusNo public active exploitation evidence found in the reviewed primary sources, and not KEV-listed.
KEV statusNot listed in CISA's Known Exploited Vulnerabilities catalog as reviewed.
PoC availabilityNo public PoC located in the reviewed sources; current public detail is limited to advisory-level descriptions and an issue reference.
EPSS0.00014 per the supplied intel, which is extremely low and consistent with a bug that lacks public exploitation momentum.
CVSS vectorCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:N — remote, low complexity, but requires user interaction and is confidentiality-only.
Affected versionsChrome for iOS prior to 149.0.7827.53.
Fixed version149.0.7827.53 or later via App Store / managed mobile app update flow.
Exposure realityThis is a client-side mobile browser bug, so Shodan/Censys/FOFA-style internet exposure data is not meaningful. Your exposure lives in MDM app inventory, not open-port scans.
Disclosure timelinePublished 2026-06-04; Google release notes show the bug was reported by Google on 2026-04-30.
Reporter / sourceReported by Google according to the Chrome release notes and linked Chromium issue reference.
04 · The Call

noisgate verdict.

Final Verdict
= UNCHANGED to MEDIUM (5.3/10)

The decisive downward pressure is reachability: exploitation requires a user to open attacker-controlled content in Chrome on iOS, which makes this a client-side, one-user-at-a-time event rather than a broad enterprise compromise path. The impact can still matter for high-value users with active SaaS sessions, so it stays MEDIUM, but it does not justify server-class urgency.

HIGH Affected version boundary and vendor baseline
MEDIUM Real-world exploit reliability from public information
HIGH Assessment that enterprise blast radius is mostly per-user

Why this verdict

  • Start from 6.5/MEDIUM: a cross-origin leak in a browser can expose authenticated business data without prior compromise of the target service.
  • Downward pressure — requires user interaction: the attacker needs a victim to open malicious content in Chrome for iOS, so modern link filtering, mobile web controls, and plain user behavior break the chain before impact.
  • Downward pressure — narrow exposure population: only Chrome on iOS is in scope, which is a materially smaller and more manageable population than desktop Chrome or an internet-facing service.
  • Downward pressure — per-user blast radius: successful exploitation rides the victim's own browser session and stays limited to that user's accessible data; it is not remote code execution, not tenant-wide by default, and not a device takeover event.
  • No exploitation heat: no KEV listing, no public campaign evidence found, and the supplied EPSS 0.00014 argues against emergency reprioritization.

Why not higher?

This is not unauthenticated server-side compromise, not a wormable service flaw, and not a browser-to-OS escape. The attacker must first capture a user's click in the right mobile browser, then rely on a policy-bypass condition whose public exploit detail is thin, which sharply reduces enterprise-scale burn rate.

Why not lower?

Same-origin boundary failures are not cosmetic. If a targeted user is logged into email, IdP, CRM, or internal web apps in Chrome for iOS, cross-origin leakage can still expose sensitive session-bound data without tripping password defenses.

05 · Compensating Control

What to do — in priority order.

  1. Enforce managed browser updates — Use MDM or enterprise app management to require Chrome for iOS 149.0.7827.53+ on enrolled devices. For a MEDIUM verdict there is no mitigation SLA, so use normal change control and drive directly toward remediation within the 365-day window.
  2. Block unapproved mobile browsers where feasible — If your mobile access policy already differentiates browsers, steer sensitive SaaS access to approved, current builds only. This reduces reachable population immediately while you work through mobile fleet hygiene; again, no mitigation SLA applies here.
  3. Tighten mobile web filtering — Use secure web gateway, DNS filtering, or enterprise mobile threat defense to reduce user exposure to malicious lure pages and exfil domains. This does not fix the bug, but it cuts the first and last steps of the chain and is appropriate as defense-in-depth during the normal remediation cycle.
  4. Prioritize high-value users first — Patch executives, admins, finance, and users with privileged SaaS access before the long tail. This matters because the blast radius is session-bound to the victim, so user value is a better prioritization key than raw device count.
  5. Use conditional access for mobile sessions — Where your IdP supports it, require compliant device posture or approved app conditions before granting access to sensitive web apps from mobile browsers. That helps reduce the number of vulnerable sessions available to exploit while remediation proceeds.
What doesn't work
  • A WAF does not fix a browser-side origin enforcement flaw; the bug lives in the client after content is rendered.
  • MFA does not stop data theft from an already-authenticated browser session once the victim is logged in.
  • EDR-style expectations on iPhone are misplaced; mobile telemetry is usually too thin to reliably catch or reconstruct this specific browser-policy abuse.
06 · Verification

Crowdsourced verification payload.

Run this on your auditor workstation, CI job, or MDM reporting host against a CSV export of mobile app inventory. Invoke it as python3 check_cve_2026_11214.py mdm_apps.csv with a file containing at least AppName and Version columns; no admin rights are required unless your MDM export process itself needs them.

noisgate-verify.py
PYTHONREAD-ONLYSAFE
#!/usr/bin/env python3
# check_cve_2026_11214.py
#
# Purpose:
#   Audit a CSV inventory export for vulnerable Chrome for iOS versions affected by CVE-2026-11214.
#
# Expected CSV columns:
#   AppName, Version
# Optional columns are ignored.
#
# Output:
#   VULNERABLE - at least one Chrome for iOS entry is below 149.0.7827.53
#   PATCHED    - at least one Chrome for iOS entry is present and all parsed versions are >= 149.0.7827.53
#   UNKNOWN    - no matching Chrome rows found, missing columns, or unparseable version data
#
# Exit codes:
#   1 = VULNERABLE
#   0 = PATCHED
#   2 = UNKNOWN

import csv
import re
import sys
from pathlib import Path

FIXED = (149, 0, 7827, 53)


def parse_version(value):
    if value is None:
        return None
    m = re.search(r'(\d+)\.(\d+)\.(\d+)\.(\d+)', value.strip())
    if not m:
        return None
    return tuple(int(x) for x in m.groups())


def is_chrome_ios(app_name):
    if not app_name:
        return False
    name = app_name.strip().lower()
    return 'chrome' in name


def main():
    if len(sys.argv) != 2:
        print('UNKNOWN - usage: python3 check_cve_2026_11214.py <mdm_inventory.csv>')
        sys.exit(2)

    csv_path = Path(sys.argv[1])
    if not csv_path.exists() or not csv_path.is_file():
        print(f'UNKNOWN - file not found: {csv_path}')
        sys.exit(2)

    found = 0
    parsed = 0
    vulnerable = []
    patched = []

    try:
        with csv_path.open(newline='', encoding='utf-8-sig') as fh:
            reader = csv.DictReader(fh)
            if not reader.fieldnames:
                print('UNKNOWN - CSV has no header row')
                sys.exit(2)

            headers = {h.strip().lower(): h for h in reader.fieldnames if h}
            app_col = headers.get('appname') or headers.get('app_name') or headers.get('application') or headers.get('app')
            ver_col = headers.get('version') or headers.get('appversion') or headers.get('app_version')

            if not app_col or not ver_col:
                print('UNKNOWN - required columns not found; need AppName and Version (or close equivalents)')
                sys.exit(2)

            for row in reader:
                app = row.get(app_col, '')
                ver = row.get(ver_col, '')
                if not is_chrome_ios(app):
                    continue

                found += 1
                parsed_ver = parse_version(ver)
                if parsed_ver is None:
                    continue

                parsed += 1
                if parsed_ver < FIXED:
                    vulnerable.append((app, ver))
                else:
                    patched.append((app, ver))

    except Exception as e:
        print(f'UNKNOWN - failed to read CSV: {e}')
        sys.exit(2)

    if vulnerable:
        sample = '; '.join([f'{a} {v}' for a, v in vulnerable[:5]])
        extra = '' if len(vulnerable) <= 5 else f' (+{len(vulnerable) - 5} more)'
        print(f'VULNERABLE - found {len(vulnerable)} Chrome entry/entries below 149.0.7827.53: {sample}{extra}')
        sys.exit(1)

    if found == 0:
        print('UNKNOWN - no Chrome rows found in inventory')
        sys.exit(2)

    if parsed == 0:
        print('UNKNOWN - Chrome rows found but version strings were not parseable')
        sys.exit(2)

    print(f'PATCHED - scanned {parsed} parseable Chrome entry/entries; all are >= 149.0.7827.53')
    sys.exit(0)


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

If you remember one thing.

TL;DR
Monday morning: pull a mobile app inventory, identify Chrome for iOS installs below 149.0.7827.53, and patch the users that matter first — executives, admins, finance, and anyone with privileged SaaS access. For a MEDIUM reassessment there is noisgate mitigation SLA: no mitigation SLA — go straight to the 365-day remediation window, but because this is a browser session data-leak class of bug, you should still clean up exposed managed devices in normal change flow and complete the actual app upgrade within the noisgate remediation SLA of 365 days.

Sources

  1. Google Chrome Releases - Stable Channel Update for Desktop (includes CVE-2026-11214 listing)
  2. Chromium issue reference for CVE-2026-11214
  3. Vulnerability-Lookup entry cluster for Chrome June 2026 CVEs
  4. CISA Known Exploited Vulnerabilities Catalog
  5. FIRST EPSS overview
  6. FIRST EPSS FAQ
  7. FIRST EPSS API documentation
  8. Google Chrome Help - Update Chrome on iPhone and iPad
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.