This is the burglar finding the stairwell after they already got through the lobby door
CVE-2026-9117 is a type confusion bug in Chrome's GFX code path on Linux and ChromeOS. Per NVD, versions prior to 148.0.7778.179 are affected, and the bug can let an attacker who has already compromised the renderer process attempt a sandbox escape using a crafted video file. Google's May 19, 2026 desktop release notes list the fix in the 148.0.7778.178/179 train and specifically show 148.0.7778.178 for Linux, so there is a small versioning inconsistency between sources that matters for exact audit logic.
The vendor's HIGH 7.5 score is technically defensible in isolation because sandbox escapes are high-value browser bugs. But in real enterprise patch triage, this is not initial access: it is the second stage of an exploit chain, requires the attacker to first land execution in the renderer, then hit a Linux/ChromeOS-only GFX path with a crafted video trigger. That combination narrows reachable population and sharply reduces urgency versus a one-click, unauthenticated browser RCE.
4 steps from start to impact.
Land code in the renderer with a separate web exploit
- Victim runs vulnerable Chrome on Linux or ChromeOS
- Victim is lured to attacker-controlled content
- Attacker has a separate working renderer exploit
- Requires a second vulnerability or renderer compromise stage before CVE-2026-9117 matters
- Modern Chrome hardening, renderer sandboxing, and Site Isolation increase exploit-chain complexity
- No public exploit chain for CVE-2026-9117 was found
Drive the compromised renderer into the vulnerable GFX path
- Renderer is already compromised
- Target processes attacker-controlled video content
- The vulnerable GFX path is reachable on that platform and build
- Crafted-video requirement narrows trigger reliability
- Media-path exploitation is often brittle across versions, codecs, GPU/graphics stacks, and hardware acceleration settings
- Linux and ChromeOS only
Convert type confusion into a sandbox escape
- Precise memory corruption control from the GFX bug
- Ability to bypass or survive modern exploit mitigations
- A browser build where the bug remains unpatched
- Sandbox escapes are harder to make reliable than renderer-only code execution
- Exploit mitigations, broker boundaries, and process isolation raise failure rate
- No public evidence of active exploitation
Operate as the browser user on the endpoint
- Successful sandbox escape
- Useful user context on the target device
- EDR or application control does not block follow-on activity
- Blast radius is usually the single endpoint and user context, not instant domain compromise
- EDR can still catch post-escape payload staging or credential access
The supporting signals.
| In-the-wild status | No public exploitation evidence found. Not present in CISA KEV as of this assessment. |
|---|---|
| Public PoC availability | No public PoC or Metasploit-style module found in reviewed sources. Chromium issue details may remain restricted until broad patch uptake. |
| EPSS | 0.00025 from the user-provided intel block — effectively very low near-term exploitation probability. Percentile was not independently verified from the EPSS API in this session. |
| KEV status | Not KEV-listed. That removes the strongest urgency amplifier used in enterprise patch prioritization. |
| CVSS vector | CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H — the big tells are AC:H and UI:R, but the real-world downscorer is the description's explicit prior renderer compromise requirement. |
| Affected versions | NVD says Google Chrome on Linux and ChromeOS prior to 148.0.7778.179. |
| Fixed versions | Google's May 19, 2026 release notes shipped the fix in the 148.0.7778.178/179 line and specifically list 148.0.7778.178 for Linux. Treat 148.0.7778.178+ on Linux and 148.0.7778.179+ where vendor packaging says so as the safe floor, and verify against your package source. |
| Scanning / exposure data | Not internet-scannable in the normal Shodan/Censys sense because this is a client-side browser flaw, not a listening network service. Exposure has to be measured from asset inventory / package telemetry, not internet census data. |
| Disclosure / reporting | Disclosed 2026-05-20. Google's release notes say it was reported by Google on 2026-04-01. |
noisgate verdict.
The decisive downscoring factor is the attacker position requirement: this bug matters only after renderer compromise, which makes it a post-initial-access browser escape stage, not a first-hop remote compromise. Linux/ChromeOS-only scope and the absence of KEV, PoC, or meaningful EPSS pressure keep it out of the urgent patch bucket.
Why this verdict
- -1.1 for prior compromise requirement: vendor 7.5 starts from a network-reachable browser flaw, but the NVD description explicitly says the attacker must have already compromised the renderer. That means this CVE is the second stage in a chain, not the entry point.
- -0.3 for reachable population: affected scope is Linux and ChromeOS, not the full cross-platform Chrome fleet. In many enterprises that is a minority desktop population, though some EDU/dev-heavy environments will be exceptions.
- -0.2 for current threat signal: EPSS 0.00025, no KEV, and no public PoC found say the market is not currently treating this as a hot weaponized bug.
- No downward credit for impact: if chained successfully, sandbox escape from Chrome is still strategically useful because it turns renderer-only compromise into endpoint execution in user context.
Why not higher?
This is not higher because the exploit chain begins from a compromised renderer, which implies the attacker already solved the hardest part of browser exploitation with another bug. Add the crafted-video trigger and Linux/ChromeOS-only scope, and this becomes a narrower chain component rather than a broad enterprise emergency.
Why not lower?
This is not lower because sandbox escapes in Chrome are high-value primitives for real exploit chains, and browsers remain one of the highest-frequency untrusted-content handlers in the fleet. If you operate large Linux developer estates or ChromeOS-heavy user populations, the reachable population inside your environment may be meaningful even without public exploitation.
What to do — in priority order.
- Enforce browser auto-update — Make sure managed Linux and ChromeOS endpoints cannot drift off the stable channel indefinitely. Because this verdict is MEDIUM, there is no mitigation SLA — go straight to the 365-day remediation window; use your normal browser governance path rather than an emergency change window.
- Prioritize exposed user groups — If you must sequence work, check developer Linux workstations, internet-facing admin jump hosts with browsers, and ChromeOS-heavy user groups first. This is still a chainable sandbox escape, so if patch lag is unavoidable, reduce exposure on the riskiest browsing populations during the 365-day remediation window.
- Harden media handling where feasible — Review policies around untrusted media playback in browser sessions and restrict unnecessary risky workflows on high-value endpoints. This is a supporting control only; for a MEDIUM finding, apply it through normal configuration management while you remediate within 365 days.
- Watch browser child-process behavior — Tune EDR detections for browsers spawning shells, scripting engines, or unusual helpers, because post-escape execution is where defenders regain visibility. There is no mitigation SLA here, so deploy or tune this during normal detection engineering, not as a same-day fire drill.
- A WAF does not help; this is a client-side browser vulnerability, not a server-side web app flaw.
- Perimeter network scanning does not help much; there is no listening service to fingerprint from the internet.
- MFA does not prevent exploit execution; it may reduce follow-on account abuse, but it does not stop the browser escape itself.
- Email filtering alone is insufficient; the initial delivery vector can just be a malicious site or embedded media in normal browsing.
Crowdsourced verification payload.
Run this on the target Linux endpoint or through your Linux fleet agent. Invoke it as bash check_cve_2026_9117.sh with no special privileges required; it checks installed Google Chrome version and returns VULNERABLE, PATCHED, or UNKNOWN. For ChromeOS, use your management plane or host inventory instead — this script is aimed at Linux desktop/server endpoints with Chrome installed.
#!/usr/bin/env bash
# check_cve_2026_9117.sh
# Detect likely exposure to CVE-2026-9117 on Linux Google Chrome installs.
# Exit codes:
# 0 = PATCHED
# 1 = VULNERABLE
# 2 = UNKNOWN / not applicable
set -u
FIXED_VERSION="148.0.7778.178"
find_chrome_bin() {
local candidates=(
"/usr/bin/google-chrome"
"/usr/bin/google-chrome-stable"
"/opt/google/chrome/google-chrome"
"google-chrome"
"google-chrome-stable"
)
local c
for c in "${candidates[@]}"; do
if command -v "$c" >/dev/null 2>&1; then
command -v "$c"
return 0
elif [ -x "$c" ]; then
printf '%s\n' "$c"
return 0
fi
done
return 1
}
normalize_version() {
# Extract first dotted quad-like version from input
echo "$1" | grep -Eo '[0-9]+(\.[0-9]+){2,3}' | head -n1
}
ver_lt() {
# returns 0 if $1 < $2
[ "$1" = "$2" ] && return 1
local first
first=$(printf '%s\n%s\n' "$1" "$2" | sort -V | head -n1)
[ "$first" = "$1" ]
}
CHROME_BIN=$(find_chrome_bin) || {
echo "UNKNOWN: Google Chrome binary not found on this Linux host"
exit 2
}
RAW_VERSION=$($CHROME_BIN --version 2>/dev/null || true)
INSTALLED_VERSION=$(normalize_version "$RAW_VERSION")
if [ -z "${INSTALLED_VERSION:-}" ]; then
echo "UNKNOWN: Unable to parse Chrome version from: $RAW_VERSION"
exit 2
fi
# Note: NVD says prior to 148.0.7778.179 for Linux/ChromeOS, while Google's
# May 19, 2026 Linux desktop release notes show 148.0.7778.178 for Linux.
# This script uses 148.0.7778.178 as the Linux safe floor per Google's release notes.
if ver_lt "$INSTALLED_VERSION" "$FIXED_VERSION"; then
echo "VULNERABLE: Google Chrome $INSTALLED_VERSION < $FIXED_VERSION"
exit 1
else
echo "PATCHED: Google Chrome $INSTALLED_VERSION >= $FIXED_VERSION"
exit 0
fi
If you remember one thing.
Sources
What defenders are saying.
Crowdsourced verification outputs.
Results submitted by users who ran the verification payload against their environment.