Skip to main content

Envoy Proxy EUVDEUVD-2026-84114

| CVE-2026-73546 HIGH
Cross-site Scripting (XSS) (CWE-79)
2026-09-21 GitHub_M
7.4
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Inject script payload into gRPC method path
  2. Delivery
    Envoy caches it as dynamic stat name
  3. Exploit
    Operator opens /stats?format=html
  4. Execution
    Stored name executes in admin origin
  5. Impact
    Script issues privileged same-origin admin requests

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Execution

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Requires ALL of the following: Envoy built with HTML admin support (ENVOY_ADMIN_HTML) and the admin interface reachable from a browser (not bound to localhost-only / properly restricted); an enabled data-plane component that persists attacker-influenced text into statistic names - specifically the grpc_stats filter with stats_for_all_methods set to true so per-method dynamic stat names are created from request paths; and a human operator actually loading /stats?format=html in a browser (the trigger for script execution). Limiting factors: the admin endpoint is documented as sensitive and typically not internet-exposed; the vulnerable stat-name-generating feature is non-default; and successful impact depends on operator interaction (viewing the page). On patched builds the mitigation is additionally gated by the runtime flag envoy.reloadable_features.sanitize_html_stats_names.

Impact

This is a genuine but conditionally-gated stored XSS (CWE-79) in Envoy's admin interface. The vendor CVSS of 7.4 (AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N) is internally inconsistent with the description: it scores UI:N despite the description explicitly stating impact occurs 'when an operator views the HTML stats page' - that is user interaction, so UI:R is more accurate and lowers the true score slightly. Conversely, the C:H/I:H rating is defensible because script executing in the admin-interface origin can issue privileged same-origin requests (arguably a scope change to S:C, which the vendor did not apply). AC:H is well-justified by the multiple gating conditions. No EPSS score, no CISA KEV listing, and no public exploit are present in the input - so exploitation status is 'no public exploit identified at time of analysis.' The realistic priority is MODERATE-but-conditional: the admin interface is not meant to be internet-facing and is often bound to localhost, the ENVOY_ADMIN_HTML build/feature and a stat-name-persisting component (grpc_stats with stats_for_all_methods) must both be active, AND a human operator must browse the HTML stats page. Where those align, the same-origin admin compromise is serious; where the admin port is properly restricted (the documented best practice), real-world exposure is low. No conflicting KEV/EPSS signals exist to reconcile.

Exploit ScenarioDerived

An attacker sends requests through an Envoy proxy whose grpc_stats filter has stats_for_all_methods enabled, embedding an HTML/script payload (e.g. a fake gRPC method or path segment) that Envoy folds verbatim into a dynamic statistic name. The malicious name is cached; when an operator later opens /stats?format=html in a browser, the unencoded name executes JavaScript in the admin interface's origin and can drive privileged same-origin admin API calls. No public exploit code is identified, though the fix commit includes an XSS integration test using a 'cluster_<script>alert(1)</script>' name that demonstrates the injection path.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.6% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Sep 21, 2026

Stored cross-site scripting in Envoy Proxy's admin statistics page lets an attacker run script in the admin interface's origin: the /stats?format=html endpoint (StatsHtmlRender) sanitizes statistic values but emits statistic names raw, so a data-plane component that folds attacker-supplied request path segments into dynamic stat names - notably grpc_stats with stats_for_all_methods enabled - can persist a script-bearing name that fires when an operator opens the page in a browser. Every release before 1.36.10, 1.37.6, 1.38.4, and 1.39.1 is affected; the independently assessed vector is CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:C/C:H/I:H/A:N (7.4), i.e. unauthenticated remote influence over the injected text but multiple gating prerequisites plus required operator interaction, with impact scoped to the admin origin where privileged same-origin requests can then be issued. No public exploit code has been identified at time of analysis and the CVE is not listed in CISA KEV; exploitation is realistic only where the admin HTML endpoint is browser-reachable and a dynamic-stat-generating component is enabled.

RemediationAI

Vendor-released patch: upgrade to Envoy 1.36.10, 1.37.6, 1.38.4, or 1.39.1 depending on the maintained branch in use, per GHSA-pv9h-4fxf-7vrg (https://github.com/envoyproxy/envoy/security/advisories/GHSA-pv9h-4fxf-7vrg); the fix sanitizes statistic names in StatsHtmlRender and is controlled by the runtime flag envoy.reloadable_features.sanitize_html_stats_names, so confirm the guard is left enabled (default) and not overridden to false in the bootstrap or admin runtime layer. If immediate upgrade is not possible, combine compensating controls and accept their trade-offs: bind the admin interface to a loopback or otherwise restricted listener and require an authenticated, non-browser-accessible path (blocks the browser-based trigger entirely but complicates legitimate operational tooling and health checks), build or run Envoy without the ENVOY_ADMIN_HTML option so /stats?format=html returns 400 (removes the vulnerable renderer but also removes a diagnostic feature some operators rely on), and disable the grpc_stats filter or leave stats_for_all_methods at its default false so per-method attacker-influenced stat names are never created (reduces gRPC observability granularity but eliminates the stored-text prerequisite). Consuming statistics through /stats?format=json or ?format=text/prometheus instead of the HTML view avoids the sink, and short of patching, admins should treat statistic names on the HTML page as untrusted and avoid loading /stats?format=html from a browser session with access to other admin endpoints. Note that no public exploit code has been identified at time of analysis and the CVE is not in CISA KEV, so prioritization should reflect the gating prerequisites above rather than mass-exploitation urgency.

Affected VersionsENISA

envoy 1.39.0, < 1.39.1
envoy 1.38.0, < 1.38.4
envoy 1.37.0, < 1.37.6
envoy < 1.36.10

Affected Packages

euvd envoy fix: 1.36.10, 1.37.6, 1.38.4, 1.39.1

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Envoy's admin interface exposes a /stats?format=html view implemented by the StatsHtmlRender class, which extends StatsTextRender and builds the page from name/value fragment pairs. In the vulnerable code path, statistic values were passed through Html::Utility::sanitize() while statistic names were concatenated into the response verbatim, so any name containing the HTML metacharacters &, <, >, ", or ' was rendered as live markup - the classic CWE-79 stored (second-order) cross-site scripting pattern in which the untrusted data enters at one layer and is interpreted at another. The prerequisite for the stored component is that a stat name must be derived from attacker-controlled input and cached, which is how grpc_stats with stats_for_all_methods set to true behaves: per-method dynamic statistic names incorporate request path segments, giving an attacker a way to deposit a chosen string into Envoy's stats tree. The admin interface serving the HTML response is itself a privileged surface in the admin origin, so injected script executes with that origin's authority and can issue same-origin requests against other admin handlers. Only builds compiled with the ENVOY_ADMIN_HTML option expose the HTML renderer; when that option is absent the endpoint returns HTTP 400 with "HTML output was disabled", which the upstream integration test AdminStatsHtmlXss explicitly asserts alongside the expectation that a cluster named cluster_<script>alert(1)</script> is emitted as cluster_&lt;script&gt;alert(1)&lt;/script&gt;. The fix introduces Html::Utility::requiresSanitization() (a quick find_first_of check for the five HTML metacharacters) and applies sanitization to names as well as values in both generate() paths, additionally gated at runtime by the reloadable feature flag envoy.reloadable_features.sanitize_html_stats_names, which allows operators to revert to pre-patch behaviour if the change causes compatibility problems.

Know when Envoy gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 7.4 HIGH
AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N
vuln.today AI 8.0 HIGH

Attacker is unauthenticated (PR:N) but needs a non-default stat-persisting component and must wait for an operator to view the page (AC:H, UI:R); admin-origin script escaping to privileged requests justifies S:C with C:H/I:H, A:N.

3.1 AV:N/AC:H/PR:N/UI:R/S:C/C:H/I:H/A:N
4.0 AV:N/AC:H/AT:P/PR:N/UI:P/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N
SUSE HIGH
Red Hat 7.4 HIGH

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
High
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
None

Lifecycle Timeline

2
Patch available
Sep 21, 2026 - 21:17 EUVD
CVE Published
Sep 21, 2026 - 19:53 cve.org
HIGH 7.4

DescriptionCVE.org

Envoy is an open source edge and service proxy designed for cloud-native applications. Prior to 1.36.10, 1.37.6, 1.38.4, and 1.39.1, Envoy's /stats?format=html admin endpoint uses StatsHtmlRender, which sanitizes string statistic values but emits statistic names without HTML encoding. A data-plane component such as grpc_stats with stats_for_all_methods enabled can incorporate attacker-controlled path segments into cached dynamic statistic names. When an operator views the HTML stats page, the stored name can execute script with the admin interface's origin and issue privileged same-origin requests. The relevant scope boundary is that the admin interface must be browser-accessible and an enabled component must persist attacker-influenced text in statistic names. This issue is fixed in versions 1.36.10, 1.37.6, 1.38.4, and 1.39.1.

Technical POC Analysis

CWE-79 stored XSS in Envoy's admin stats renderer.

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

Envoy Proxy - the traffic-handling component underpinning many service meshes, API gateways, and edge deployments - is affected by a stored cross-site scripting flaw in its administrative statistics interface across all releases prior to 1.36.10, 1.37.6, 1.38.4, and 1.39.1. An unauthenticated remote party can influence text that is persisted as a statistic name via a data-plane component that folds request path segments into dynamic stat names, and that payload executes in the browser of an operator who later opens the admin stats page. Because the injected script runs in the admin interface's own origin, a successful attack gives the intruder the operator's privileged position over the proxy's control surface, which is why this warrants management attention despite the multiple preconditions and required operator interaction.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis; interim mitigations: restrict the Envoy admin interface to localhost or a dedicated management network with authentication and network policy, disable or avoid stats_for_all_methods in grpc_stats and other plugins that fold user-supplied request path segments into dynamic stat names, do not open /stats?format=html in privileged browser sessions, and monitor admin access logs for anomalous requests. Apply vendor patch when released (releases at or above 1.36.10, 1.37.6, 1.38.4, and 1.39.1 are the stated thresholds).

Threat Intelligence Overview

EPSS Score
0.6%
Top 53% exploitable
Prevalence
High
Envoy is a ubiquitous CNCF proxy, but exploitation is gated by admin/config conditions
Data Quality
6 sources
Confidence: High

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.6%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Total

Priority Score

38
Low Medium High Critical
KEV: 0
EPSS: +1
CVSS: +37
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.

More in Envoy

View all
CVE-2023-44487 HIGH POC
7.5 Oct 10

Denial of service against HTTP/2 server implementations allows remote unauthenticated attackers to exhaust server resour

CVE-2023-27488 CRITICAL POC
9.8 Apr 04

Envoy is an open source edge and service proxy designed for cloud-native applications. Rated critical severity (CVSS 9.8

CVE-2019-18802 CRITICAL POC
9.8 Dec 13

An issue was discovered in Envoy 1.12.0. Rated critical severity (CVSS 9.8), this vulnerability is remotely exploitable,

CVE-2019-18801 CRITICAL POC
9.8 Dec 13

An issue was discovered in Envoy 1.12.0. Rated critical severity (CVSS 9.8), this vulnerability is remotely exploitable,

CVE-2023-27493 CRITICAL POC
9.1 Apr 04

Envoy is an open source edge and service proxy designed for cloud-native applications. Rated critical severity (CVSS 9.1

CVE-2023-27491 CRITICAL POC
9.1 Apr 04

Envoy is an open source edge and service proxy designed for cloud-native applications. Rated critical severity (CVSS 9.1

CVE-2023-27487 CRITICAL POC
9.1 Apr 04

Envoy is an open source edge and service proxy designed for cloud-native applications. Rated critical severity (CVSS 9.1

CVE-2020-25017 HIGH POC
8.3 Oct 01

Envoy through 1.15.0 only considers the first value when multiple header values are present for some HTTP headers. Rated

CVE-2019-9900 HIGH POC
8.3 Apr 25

When parsing HTTP/1.x header values, Envoy 1.9.0 and before does not reject embedded zero characters (NUL, ASCII 0x0). R

CVE-2026-26308 HIGH POC
7.5 Mar 10

Envoy's RBAC filter improperly concatenates duplicate HTTP headers into comma-separated strings instead of validating ea

CVE-2024-53270 HIGH POC
7.5 Dec 18

Envoy is a cloud-native high-performance edge/middle/service proxy. Rated high severity (CVSS 7.5), this vulnerability i

CVE-2024-53269 HIGH POC
7.5 Dec 18

Envoy is a cloud-native high-performance edge/middle/service proxy. Rated high severity (CVSS 7.5), this vulnerability i

Vendor StatusVendor

SUSE

Severity: Important
Product Status
openSUSE Tumbleweed Fixed

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy