Severity by source
CVSS:4.0/AV:N/AC:H/AT:N/PR:H/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Network MITM path requires no privileges but high complexity; scope changes as host secrets are exfiltrated to attacker-controlled systems; no integrity or availability impact.
Primary rating from Vendor (https://github.com/line/armeria).
CVSS VectorVendor: https://github.com/line/armeria
Lifecycle Timeline
3Blast Radius
ecosystem impact- 1 maven packages depend on com.linecorp.armeria:armeria-xds (1 direct, 0 indirect)
Ecosystem-wide dependent count for version 1.40.0.
DescriptionCVE.org
External Control of File Name or Path in xDS SDS DataSource
Summary
DataSourceStream in the :xds module resolves control-plane-supplied filename and environment_variable fields from SDS Secret resources without any allow-list or base-directory confinement. A semi-trusted or compromised xDS control plane (or an attacker who can MITM SDS responses) can read arbitrary local files and environment variables on the xDS client host.
Affected component: xds/src/main/java/com/linecorp/armeria/xds/DataSourceStream.java Introduced in: Armeria 1.38.0 (commit b199560b10, "Add support for SDS", #6597) Affected versions: 1.38.0, 1.39.0
Impact
A semi-trusted or compromised xDS control plane (or an attacker who can inject/MITM SDS responses) can:
- Read arbitrary files on the xDS client host - TLS private keys,
/etc/passwd, mounted Kubernetes service-account tokens, cloud credential files, etc. - Read arbitrary environment variables -
AWS_SECRET_ACCESS_KEY, CI tokens, database credentials, etc.
The read bytes are consumed as TLS key/cert/CA material. Combined with CWE-295 (silent disabling of upstream TLS peer verification), the exfiltrated secret can be presented to an attacker-chosen upstream, enabling data exfiltration. This is a confused-deputy / information-disclosure primitive driven entirely by control-plane-supplied configuration.
Severity: High - arbitrary host-level file and environment variable read via control-plane-pushed configuration.
Patches
1.40.0
The fix should:
- Confine
filenameresolution to an operator-configured allow-list of base directories. After normalization, reject any path that escapes the allow-listed root. - Gate
environment_variablebehind an explicit operator allow-list of permitted variable names. - Default to denying both
filenameandenvironment_variableDataSources for control-plane-delivered (SDS) secrets unless explicitly enabled by the operator. This is stricter than upstream Envoy but appropriate when the control plane is not fully trusted. - Document the trust model clearly so operators understand that enabling file/env DataSources grants the control plane host-level read capability.
Workarounds
- Ensure the xDS control plane channel is authenticated and encrypted (mTLS) to prevent MITM injection of malicious SDS responses.
- Run the xDS client with minimal filesystem permissions and a restricted environment to limit the blast radius of arbitrary reads.
- If SDS file-based secrets are not needed, consider using inline
DataSourcebytes only (delivered over the SDS stream itself) and auditing control-plane configurations to ensure nofilenameorenvironment_variableDataSources are present.
AnalysisAI
Arbitrary file and environment variable reads on xDS client hosts are possible in Armeria versions 1.38.0 and 1.39.0 via the armeria-xds module's SDS (Secret Discovery Service) implementation. The DataSourceStream class resolves control-plane-supplied filename and environment_variable fields from SDS Secret resources without any path confinement or allow-listing, enabling a compromised or semi-trusted xDS control plane - or an attacker who can MITM unprotected SDS gRPC streams - to extract TLS private keys, Kubernetes service-account tokens, cloud credential files, and environment variables such as AWS_SECRET_ACCESS_KEY. No public exploit has been identified at time of analysis and this CVE does not appear in the CISA KEV catalog, but the confused-deputy pattern and Kubernetes deployment context make it a high-priority upgrade for affected users.
Technical ContextAI
Armeria is a Java-based microservices framework; its :xds module implements the Envoy xDS control-plane API, including SDS (Secret Discovery Service), a streaming gRPC protocol used to dynamically push TLS credentials to service mesh clients. The vulnerable class DataSourceStream.java (package com.linecorp.armeria:armeria-xds, Maven artifact pkg:maven/com.linecorp.armeria:armeria-xds) was introduced in Armeria 1.38.0 via commit b199560b10 ('Add support for SDS', PR #6597). CWE-73 (External Control of File Name or Path) is the root cause: the software accepts externally supplied path strings - delivered over the SDS protobuf stream - and passes them directly to filesystem or environment-variable APIs without normalizing, restricting to a base directory, or consulting any operator-defined allow-list. The read bytes are consumed as TLS key, certificate, or CA material, meaning the exfiltrated data is silently used in TLS handshakes rather than surfaced as an error. The advisory also references CWE-295 (improper certificate verification), indicating that the stolen credential can then be presented to an attacker-controlled upstream with peer verification silently disabled, forming a complete exfiltration chain.
RemediationAI
Upgrade com.linecorp.armeria:armeria-xds to version 1.40.0, the vendor-confirmed fixed release per GHSA-hgw6-8c77-v4gq. Version 1.40.0 confines filename DataSource resolution to an operator-configured allow-list of base directories, gates environment_variable DataSources behind an explicit allow-list of permitted variable names, and defaults to denying both for control-plane-delivered SDS secrets unless explicitly enabled. If immediate upgrade is not feasible, apply the following compensating controls with awareness of their trade-offs: (1) Enforce mTLS on the xDS control plane channel to prevent MITM injection of malicious SDS responses - this adds certificate lifecycle management overhead but eliminates the network injection attack path. (2) Run the xDS client process with a minimal filesystem permission set (e.g., read-only root filesystem, dropped capabilities, restrictive seccomp/AppArmor profiles in Kubernetes) and a stripped environment - this limits blast radius but may require pod security policy changes and careful testing. (3) Audit all SDS configurations and eliminate any filename or environment_variable DataSource entries, restricting secret delivery to inline byte DataSources only - this eliminates the vulnerable code path entirely but reduces operational flexibility for secret rotation via filesystem.
Oracle Java SE 7 Update 6 and earlier contains multiple sandbox bypass vulnerabilities via the ClassFinder and forName m
Remote code execution in IBM Sterling B2B Integrator, Sterling Integrator, and Tivoli Common Reporting allows unauthenti
Java Runtime Environment sandbox bypass via incorrect image channel verification in 2D component allows remote unauthent
Oracle Java SE JDK/JRE 7 and 6 Update 27 and earlier allows remote code execution with complete system compromise throug
JBoss Seam 2 in Red Hat JBoss EAP 4.3.0 fails to sanitize JBoss Expression Language inputs, allowing remote attackers to
Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 update 4 and earlier, 6 up
Multiple vulnerabilities in Oracle Java 7 before Update 11 allow remote attackers to execute arbitrary code by (1) using
Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 Update 2 and earlier, 6 Up
The WLS Security component in Oracle WebLogic Server 10.3.6.0, 12.1.2.0, 12.1.3.0, and 12.2.1.0 allows remote attackers
Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 Update 7 and earlier allow
Remote unauthenticated attackers can execute arbitrary code on Adobe ColdFusion servers through Java deserialization fla
The ExceptionDelegator component in Apache Struts before 2.2.3.1 interprets parameter values as OGNL expressions during
Same weakness CWE-73 – External Control of File Name or Path
View allSame technique Code Injection
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-37979
GHSA-hgw6-8c77-v4gq