This is a peephole in an app-embedded browser window, not a front-door break-in
CVE-2026-11247 is an insufficient policy enforcement flaw in Custom Tabs in Google Chrome on Android that can let a remote attacker leak cross-origin data using a crafted HTML page. The affected population is narrower than plain "Chrome users": the victim has to be on Chrome for Android before the fixed train and hit the malicious content through a flow that actually uses Custom Tabs. In practice, the Android stable release carrying the fix is Chrome 149.0.7827.59, while Google ties the security fix set to the corresponding desktop 149.0.7827.53/54 release.
Google's LOW / 3.1 label is basically fair, and if anything a little generous for enterprise patch triage. The real-world chain needs a victim click, a vulnerable Android device, a Custom Tabs execution path, and conditions that make a cross-origin leak actually useful; the payoff is limited to confidentiality leakage, not code execution, persistence, or broad tenant compromise.
3 steps from start to impact.
Land the victim in a vulnerable Custom Tab
- Victim uses Android with vulnerable Chrome build
- A target app or workflow opens links with Custom Tabs
- User clicks or navigates to attacker-controlled content
- Requires user interaction
- Requires Android, not desktop Chrome
- Requires Custom Tabs path, not every browser session
- MDM-managed mobile fleets often auto-update Chrome quickly
Trigger the policy enforcement gap
- Victim browser state and page flow align with the bug
- Target origin data is present and reachable in the affected context
- Exploit reliability is likely brittle
- Impact is capped to data exposure, not active code execution
- Modern web hardening can reduce the value of leaked artifacts
Exfiltrate whatever the bug actually yields
- Leaked data has security value
- Victim device can reach attacker-controlled egress
- Blast radius is usually one user / one session / one device
- No direct integrity or availability impact
- Useful outcomes depend heavily on the victim's authenticated state
The supporting signals.
| In-the-wild status | No known active exploitation in reviewed sources. Google did not flag this as exploited, and CISA KEV does not list it. |
|---|---|
| Proof-of-concept availability | No public PoC located. The Chromium bug entry is restricted, and no public exploit repo or Nuclei template surfaced in the reviewed source set. |
| EPSS | 0.00032 from the supplied intel, which is effectively near-floor exploitation probability. Percentile was not provided in the available source set. |
| KEV status | Not KEV-listed on CISA's catalog review; therefore there is no CISA due date or federal exploit-driven urgency signal. |
| CVSS vector | CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:L/I:N/A:N — remote and no-auth, but high complexity, user interaction required, and confidentiality-low only. |
| Affected versions | Chrome on Android before the fixed 149 train carrying this security set. The CVE text references prior to 149.0.7827.53; operationally on Android the fixed stable rollout is 149.0.7827.59. |
| Fixed versions | Chrome for Android 149.0.7827.59 or later contains the same security fixes as desktop 149.0.7827.53/54, per Google's Android release note. |
| Exposure / scanning data | Not meaningfully internet-scannable. This is a client-side Android browser flaw, so Shodan/Censys/GreyNoise-style exposure metrics are mostly irrelevant; the right lens is mobile fleet version inventory, not external attack surface. |
| Disclosure | 2026-06-05 per the supplied intel; Google's release posts for the fixed train are dated 2026-06-02. |
| Reporter | Google is credited in the Chrome release note, with the bug listed as reported on 2026-03-30. |
noisgate verdict.
The decisive friction is that this bug needs a victim-driven Android Custom Tabs path, which sharply narrows the reachable population compared with a generic browser RCE or universal same-origin bypass. Even if triggered, the impact is limited to low-grade data leakage for the active user context, with no code execution or direct fleet-level blast radius.
Why this verdict
- Downward adjustment: requires user interaction — a remote attacker still has to get the victim onto attacker-controlled HTML, so this is not wormable or opportunistic internet spray at server scale.
- Downward adjustment: Android + Custom Tabs only — the prerequisite implies a narrower exposure pool than ordinary Chrome browsing. Enterprises with small managed Android fleets or low Custom Tabs dependence have materially less risk than the vendor baseline suggests.
- Downward adjustment: low blast radius — successful exploitation leaks some cross-origin data in the victim's browser context, but it does not buy code execution, persistence, admin rights, or broad tenant compromise.
- Slight upward adjustment: browser-session context can still matter — if the victim is authenticated to SSO, internal portals, or sensitive SaaS, even a low-confidence data leak can expose useful crumbs. That keeps this above IGNORE.
Why not higher?
There is no evidence of active exploitation, no public PoC, and no sign this bug is broadly reliable or easy to weaponize. More importantly, the chain compounds friction: attacker-controlled content, user interaction, Android-only targeting, and a Custom Tabs-specific execution path all suppress reachable population.
Why not lower?
This is still a remote, no-auth client-side bug that can touch browser trust boundaries. For organizations with heavy Android BYOD or mobile-first SaaS usage, the per-user impact can still include sensitive session-adjacent leakage, so writing it off entirely would be too casual.
What to do — in priority order.
- Force Chrome auto-update on Android — Use Play managed configurations or your MDM to ensure Chrome for Android reaches 149.0.7827.59+. Because the reassessed verdict is LOW, there is no SLA (treat as backlog hygiene), but you should still push it in the next normal mobile browser maintenance cycle.
- Prefer managed browser flows for sensitive apps — Where your mobile stack allows it, route IdP, HR, finance, and internal portal links into your managed enterprise browser instead of arbitrary app-driven Custom Tabs. This reduces dependence on the affected execution path while backlog remediation catches up; for a LOW issue, do this as backlog hygiene rather than as emergency work.
- Review internal app use of Custom Tabs — If you build Android apps, inventory where Custom Tabs are used for authenticated or sensitive workflows and decide whether those flows should stay there. For a LOW verdict there is no hard mitigation SLA, but this is the right engineering follow-up before the next release train.
- A WAF will not fix a client-side policy enforcement flaw in the victim's browser context.
- External attack-surface scanning tools like Shodan/Censys do not help here because the vulnerable component is an Android browser, not an exposed service.
- Patching the target website alone does not reliably solve the issue, because the broken boundary is in the browser's handling of Custom Tabs, not necessarily in the site being visited.
Crowdsourced verification payload.
Run this on an auditor workstation with Android platform-tools (adb) installed, not on the phone itself. Invoke it as ./check_cve_2026_11247.sh <device-serial> or ./check_cve_2026_11247.sh for the only connected device; it needs USB debugging or enterprise adb access, but no root.
#!/usr/bin/env bash
# check_cve_2026_11247.sh
# Detect whether a connected Android device has Chrome for Android below the
# fixed version associated with CVE-2026-11247.
#
# Operational fixed version on Android stable: 149.0.7827.59
# Exit codes:
# 0 = PATCHED
# 1 = VULNERABLE
# 2 = UNKNOWN / error
set -u
FIXED_VERSION="149.0.7827.59"
PACKAGE="com.android.chrome"
SERIAL="${1:-}"
adb_cmd() {
if [[ -n "$SERIAL" ]]; then
adb -s "$SERIAL" "$@"
else
adb "$@"
fi
}
version_lt() {
# returns 0 (true) if $1 < $2
local a="$1" b="$2"
if [[ "$a" == "$b" ]]; then
return 1
fi
local first
first=$(printf '%s\n%s\n' "$a" "$b" | sort -V | head -n1)
[[ "$first" == "$a" ]]
}
if ! command -v adb >/dev/null 2>&1; then
echo "UNKNOWN: adb not found in PATH"
exit 2
fi
if ! adb_cmd get-state >/dev/null 2>&1; then
echo "UNKNOWN: no accessible Android device via adb"
exit 2
fi
DUMPSYS_OUT=$(adb_cmd shell dumpsys package "$PACKAGE" 2>/dev/null)
if [[ -z "$DUMPSYS_OUT" ]]; then
echo "UNKNOWN: unable to query package $PACKAGE"
exit 2
fi
VERSION=$(printf '%s
' "$DUMPSYS_OUT" | sed -n 's/.*versionName=//p' | head -n1 | tr -d '\r')
if [[ -z "$VERSION" ]]; then
VERSION=$(adb_cmd shell cmd package dump "$PACKAGE" 2>/dev/null | sed -n 's/.*versionName=//p' | head -n1 | tr -d '\r')
fi
if [[ -z "$VERSION" ]]; then
echo "UNKNOWN: Chrome package found but versionName could not be determined"
exit 2
fi
if version_lt "$VERSION" "$FIXED_VERSION"; then
echo "VULNERABLE: $PACKAGE version $VERSION is below fixed version $FIXED_VERSION"
exit 1
else
echo "PATCHED: $PACKAGE version $VERSION is at or above fixed version $FIXED_VERSION"
exit 0
fi
If you remember one thing.
Sources
- Google Chrome Releases - Stable Channel Update for Desktop (June 2, 2026)
- Google Chrome Releases - Chrome for Android Update (June 2, 2026)
- Chromium issue 497865734
- CISA Known Exploited Vulnerabilities Catalog
- FIRST EPSS overview
- FIRST EPSS data and stats
- CVE-2026-11247 summary mirror with vendor references
What defenders are saying.
Crowdsourced verification outputs.
Results submitted by users who ran the verification payload against their environment.