Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAttacker acquires low-privilege CI system access
-
DeliveryTriggers or awaits frontend build failure (non-zero exit)
-
ExploitAffected plugin dumps full environment to build log
-
ExecutionAttacker reads plaintext secrets from log or build artifact
-
ImpactHarvested credentials used to compromise downstream systems
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A10:2025 - Mishandling of Exceptional Conditions
ASVS 5.0
V16 - Security Logging and Error Handling Error message sanitization
MITRE ATT&CK
1 technique across 1 tactic: Discovery The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | All of the following conditions must be simultaneously true for exploitation: (1) the target project must use an affected Vaadin Flow Maven or Gradle plugin version (23.0.0-23.6.9, 24.0.0-24.10.3, or 25.0.0-25.1.4); (2) the CI/CD build environment must inject sensitive credentials as process-level environment variables - this is common but not universal; (3) a frontend build must actually exit with a non-zero status code during a CI run, meaning a build failure must be triggered; and (4) the attacker must have read access to the resulting CI build logs or archived build artifacts, requiring at minimum low-privilege access to the CI/CD system (PR:L). The CVSS AT:P (Partial attack target) metric further qualifies that not every instance meeting these conditions will necessarily expose sensitive secrets - some environments may not inject credentials as env vars at all. The PR:N unauthenticated attack vector does NOT apply here; the CVSS vector confirms PR:L. Exploitation is not automatable (AU:N). Exploitation is limited to the local CI/CD system boundary (AV:L) and requires a build failure event to occur. |
| Impact | The CVSS 4.0 composite score of 1.6 is misleadingly low relative to the potential blast radius. The low score is driven by restrictive attack conditions: local access to CI infrastructure (AV:L), high attack complexity (AC:H), partial attack target (AT:P), low privileges required (PR:L), and passive user interaction (UI:P). However, the confidentiality and integrity impact on subsequent systems is rated High (SC:H/SI:H), reflecting that leaked credentials can cascade into supply chain compromise of downstream environments. EPSS data was not provided in the available inputs and cannot be inferred. The vulnerability is not in CISA KEV, and exploitation is rated Unreported (E:U) in the CVSS 4.0 supplemental metrics. SSVC automatable is No (AU:N), indicating this does not lend itself to mass automated exploitation. The CVSS urgency rating is Green (U:Green) with low remediation effort (RE:L). Despite the low score, organizations injecting secrets as environment variables in CI pipelines should treat this as a meaningful supply chain risk - the gap between CVSS score and realistic downstream impact is a known limitation of scoring credential-leakage vulnerabilities. |
| Exploit ScenarioDerived | A developer triggers a Vaadin frontend build in a CI pipeline where secrets (for example, a container registry password or a cloud provider API key) are injected as environment variables. The frontend build fails - due to a transient npm registry timeout or a dependency resolution error - causing the affected plugin to write the full process environment, including all injected secrets, to the CI job log. An attacker or malicious insider with read access to that CI system retrieves the plaintext credentials from the log, then uses them to push malicious container images or access cloud resources, achieving supply chain compromise. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – May 19, 2026
Vaadin Flow's Maven and Gradle build plugins expose all process-level environment variables - including CI-injected secrets and credentials - in plaintext build logs whenever the frontend build process exits with a non-zero status code. Affected are com.vaadin:flow-maven-plugin, flow-gradle-plugin, and flow-plugin-base across Vaadin 23.0.0-23.6.9, 24.0.0-24.10.3, and 25.0.0-25.1.4. No public exploit code exists and this is not listed in CISA KEV; however, any actor with read access to CI build logs from a failed frontend build can extract plaintext registry credentials, deploy tokens, or signing keys, enabling downstream supply chain compromise consistent with the CVSS SC:H/SI:H subsequent-system impact ratings.
RemediationAI
The primary fix is to upgrade to a patched Vaadin release. For the 24.x branch, upgrade to com.vaadin:flow-maven-plugin and flow-plugin-base version 24.10.4 or newer; for the 25.x branch, upgrade to 25.1.5 or newer. For the 23.x branch, note a discrepancy in the vendor advisory: the mitigation text states 'Upgrade to 23.6.10' while the artifact version table lists 23.6.10 as still vulnerable and ≥23.6.11 as fixed - verify the exact artifact version against the vendor advisory at https://vaadin.com/security/cve-2026-7860 before upgrading in the 23.x stream. The upstream code change (GitHub PR #24219) removes the zt-exec dependency and replaces ProcessExecutor with native Java process handling that does not dump environment state on failure. As an immediate compensating control where upgrading is not yet possible, rotate any secrets that may have been written to CI build logs (API keys, container registry passwords, deploy tokens, code-signing keys) - rotation removes attacker utility from already-leaked values without requiring a build change. Additionally, restrict CI log and artifact access to only authorized personnel, and audit existing archived build artifacts for exposed secrets using tools such as truffleHog or gitleaks. Restricting log access is not a fix for future exposures - only the patch eliminates the root cause.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 4 packages in maven, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The root cause is CWE-209 (Generation of Error Message Containing Sensitive Information). The affected plugins previously used the third-party library org.zeroturnaround:zt-exec (ProcessExecutor) to invoke frontend build toolchains such as npm and Vite. When ProcessExecutor's command invocation returned a non-zero exit code, the exception-handling path in BuildFrontendUtil.java logged the full ProcessBuilder environment - the complete map of OS-level environment variables - to build output. CI/CD pipelines (GitHub Actions, Jenkins, GitLab CI) routinely inject sensitive credentials as environment variables, making any failed frontend build a potential credential dump. The GitHub PR #24219 fix removes the zt-exec dependency entirely from flow-plugin-base and flow-maven-plugin, replacing ProcessExecutor with a custom Java-native ProcessBuilder and BufferedReader implementation that does not expose environment state on failure. CPE cpe:2.3:a:vaadin:flow:*:*:*:*:*:*:*:* covers all affected Vaadin Flow versions across the 23.x, 24.x, and 25.x release branches.
Know when Vaadin 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
CVSS:4.0/AV:L/AC:H/AT:P/PR:L/UI:P/VC:H/VI:N/VA:N/SC:H/SI:H/SA:N/E:U/S:N/AU:N/R:A/V:C/RE:L/U:Green
Primary rating from Vendor (Vaadin) · only source for this CVE.
CVSS VectorVendor: Vaadin
DescriptionCVE.org
A possible information disclosure vulnerability exists in the Vaadin Maven plugin and Vaadin Gradle plugin that exposes the full set of environment variables in build logs whenever the frontend build process exits with a non-zero status. Because the build environment may contain credentials supplied as secrets, any failed frontend build can expose those secrets in clear text in CI logs and archived build artifacts.
Users of affected versions should apply the following mitigation or upgrade. Releases that have fixed this issue include:
Product version Vaadin 23.0.0 - 23.6.9 Vaadin 24.0.0 - 24.10.3 Vaadin 25.0.0 - 25.1.4
Mitigation Upgrade to 23.6.10 Upgrade to 24.10.4 or newer Upgrade to 25.1.5 or newer
Please note that Vaadin versions 10-13 and 15-22 are no longer supported and you should update either to the latest 23, 24, or 25 version.
ArtifactsMaven coordinatesVulnerable versionsFixed versioncom.vaadin:flow-plugin-base23.0.0 - 23.6.10≥23.6.11com.vaadin:flow-plugin-base24.0.0 - 24.10.3≥24.10.4com.vaadin:flow-plugin-base25.0.0 - 25.1.4≥25.1.5com.vaadin:flow-maven-plugin23.0.0 - 23.6.10≥23.6.11com.vaadin:flow-maven-plugin24.0.0 - 24.10.3≥24.10.4com.vaadin:flow-maven-plugin25.0.0 - 25.1.4≥25.1.5com.vaadin:flow-gradle-plugin24.0.0 - 24.10.3≥24.10.4com.vaadin:flow-gradle-plugin25.0.0 - 25.1.4≥25.1.5
Blast Radius
ecosystem impact- 2 maven packages depend on com.vaadin:flow-gradle-plugin (1 direct, 1 indirect)
- 2 maven packages depend on com.vaadin:flow-maven-plugin (2 direct, 0 indirect)
Ecosystem-wide dependent count for version 24.0.0 and other introduced versions.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Missing output sanitization in test sources in org.webjars.bowergithub.vaadin:vaadin-menu-bar versions 1.0.0 through 1.2
Unauthenticated remote denial of service in Vaadin Framework 8 (com.vaadin:vaadin-server 8.16.0 through 8.32.1, and vaad
Charts rendered by Vaadin Charts across Vaadin 22 through 25.3.0 bundle a pinned Highcharts release (9.2.2 in Vaadin 22-
Insecure temporary directory usage in frontend build functionality of com.vaadin:flow-server versions 2.0.9 through 2.5.
The default configuration of a TreeGrid component uses Object::toString as a key on the client-side and server communica
Unsafe validation RegEx in EmailValidator component in com.vaadin:vaadin-compatibility-server versions 8.0.0 through 8.1
Overly relaxed configuration of frontend resources server in Vaadin Designer versions 4.3.0 through 4.6.3 allows remote
Vulnerability in OSGi integration in com.vaadin:flow-server versions 1.2.0 through 2.4.7 (Vaadin 12.0.0 through 14.4.9),
Unsafe validation RegEx in EmailField component in com.vaadin:vaadin-text-field-flow versions 2.0.4 through 2.3.2 (Vaadi
Authentication.logout() helper in com.vaadin:flow-client versions 5.0.0 prior to 6.0.0 (Vaadin 18), and 6.0.0 through 6.
When adding non-visible components to the UI in server side, content is sent to the browser in Vaadin 10.0.0 through 10.
Deep-merge prototype pollution in Vaadin Charts and Vaadin Component Base lets remote, unauthenticated attackers write a
EUVD-2026-30891
GHSA-j8mx-j73w-9mxw
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB