Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconObtain authenticated workspace user
-
DeliverySubmit script invoking nsjail sandbox
-
ExploitWrite poisoned entries to /etc/hosts and ca-certificates.crt
-
InstallWait for victim job on same worker pod
-
C2MITM victim's outbound HTTPS to Windmill API
-
ExecuteCapture WM_TOKEN JWT
-
ImpactAuthenticate as workspace-admin in victim tenant
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V13 - Configuration Default permission hardening
MITRE ATT&CK
1 technique across 1 tactic: Privilege Escalation The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires an authenticated Windmill account (PR:L) on any workspace of a multi-tenant deployment that uses nsjail-sandboxed workers and reuses worker pods across tenants - these are the default settings in affected versions <1.703.2. The attacker must be able to submit a script for execution (the normal capability of any workspace user) and must land on a worker pod that subsequently executes a victim's job; exploitation is therefore opportunistic per worker rather than directly targeted, which is why SSVC marks Automatable=no. No user interaction is required (UI:N), no privilege escalation inside the host is needed, and no special platform configuration beyond default nsjail bind-mounts is required. Limiting factors: single-tenant deployments, deployments that already pin workers per workspace, and deployments running Windmill v1.703.2 or later are not exploitable. |
| Impact | Signals converge on a real, exploitable issue but with a meaningful precondition. The CVSS 4.0 vector AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:N rates this 8.6: network reach, low complexity, low privileges required, no user interaction, and high confidentiality and integrity loss. SSVC reports Exploitation=poc (publicly available exploit code exists), Automatable=no (attackers cannot mass-spray it because each instance requires an authenticated workspace account), and Technical Impact=total - consistent with workspace-admin compromise. The CVE was reported by VulnCheck and a fix is shipped in v1.703.2. The vulnerability is not in CISA KEV at time of analysis and no EPSS score is provided in the input, so widespread opportunistic exploitation cannot be confirmed; risk is concentrated on multi-tenant Windmill deployments (SaaS or shared-worker self-hosted) where an attacker can obtain any authenticated user account in any tenant. Single-tenant deployments or those that already isolate workers per workspace face materially lower realistic risk. |
| Exploit ScenarioDerived | An attacker registers or obtains any low-privilege user account in any workspace on a shared Windmill deployment and runs a script that appends entries to /etc/hosts (or installs a rogue CA into /etc/ssl/certs/ca-certificates.crt) inside the nsjail sandbox. When a victim workspace later schedules a job on the same worker pod, that job's outbound HTTPS calls resolve to attacker-controlled IPs and trust the attacker's CA, allowing transparent MITM and capture of the WM_TOKEN JWT the worker uses to call back into the Windmill API. With that token the attacker authenticates as the victim and assumes workspace-admin in the victim's tenant; publicly available exploit code exists per SSVC. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv3 – May 20, 2026
Cross-tenant DNS and TLS poisoning in Windmill versions prior to 1.703.2 allows authenticated low-privilege users to write to /etc/hosts, /etc/resolv.conf, and the system CA bundle from inside nsjail script sandboxes, persisting tampered state across every subsequent job on the same worker pod. Because poisoned entries survive between executions, attackers can hijack hostname resolution, perform transparent HTTPS man-in-the-middle, and steal WM_TOKEN JWTs to escalate to workspace-admin in other tenants. Publicly available exploit code exists per SSVC (poc), and CVSS 4.0 rates this 8.6 with high confidentiality and integrity impact.
Earlier versions of this analysis (2)
Cross-tenant privilege escalation in Windmill prior to 1.703.2 allows authenticated users running scripts in the nsjail sandbox to write to /etc files on the shared worker pod, enabling DNS hijacking and HTTPS man-in-the-middle attacks that intercept WM_TOKEN JWTs from other tenants' subsequent script runs. The bug stems from /etc being bind-mounted read-write in nsjail configuration, producing persistent poisoned entries across executions; no public exploit identified at time of analysis, but VulnCheck has published an advisory and a vendor patch is available in v1.703.2.
Cross-tenant DNS poisoning and JWT theft in Windmill versions prior to 1.703.2 allows authenticated workspace users to escalate to workspace-admin across tenants by writing persistent entries into /etc/hosts, /etc/resolv.conf, and the system CA bundle from inside nsjail script sandboxes. The vendor has released a fix in v1.703.2 and the issue was disclosed by VulnCheck; no public exploit identified at time of analysis, though the technical writeup published with the advisory provides a clear exploitation path. With CVSS 9.6 reflecting a scope change to victim workspaces, this is a high-priority issue for multi-tenant Windmill deployments using the nsjail sandbox.
RemediationAI
Vendor-released patch: upgrade to Windmill v1.703.2 or later, which corrects the nsjail configuration so /etc is no longer writable from sandboxes (release notes: https://github.com/windmill-labs/windmill/releases/tag/v1.703.2; fix PR https://github.com/windmill-labs/windmill/pull/9194; commit f8467f38c8a053117ce62f96684cfb15ef792f08). For operators who cannot immediately upgrade, the workable compensating controls are to tighten the nsjail mount configuration so /etc, /etc/hosts, /etc/resolv.conf, and /etc/ssl/certs/ca-certificates.crt are mounted read-only (mirroring the upstream fix), or to enforce one-tenant-per-worker-pod scheduling so cross-tenant poisoning cannot occur - note this reduces worker density and increases infrastructure cost. As an additional defensive measure, recycle worker pods between jobs (treating them as ephemeral) so any poisoned /etc state is destroyed before the next tenant's job runs, at the cost of higher startup latency. Restricting workspace signup and reviewing which users can submit arbitrary scripts also limits the population of potential attackers.
Affected VersionsENISA
Affected Packages
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
Windmill is an open-source developer platform for running scripts, flows, and apps; it isolates user-submitted code using nsjail, a Google sandboxing tool built on Linux namespaces and seccomp. The root cause is CWE-276 (Incorrect Default Permissions): the shipped nsjail configuration bind-mounts the host /etc directory into sandboxed jobs without marking it read-only, so the namespaced mount inherits write permissions. Sensitive resolver and trust files - /etc/hosts, /etc/resolv.conf, and /etc/ssl/certs/ca-certificates.crt - therefore become writable. Because worker pods reuse the same underlying /etc across job invocations, modifications by one tenant's job persist and are read by later jobs belonging to other tenants, breaking the multi-tenant isolation Windmill's sandbox is supposed to enforce. The affected product per CPE is cpe:2.3:a:windmill-labs:windmill across all versions up to but not including 1.703.2.
Know when Windmill 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:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N
Primary rating from Vendor (VulnCheck) · only source for this CVE.
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
5DescriptionCVE.org
Windmill prior to 1.703.2 contains an incorrect default permissions vulnerability in nsjail sandbox configuration files where /etc is bind-mounted without read-write restrictions, allowing authenticated users to write arbitrary entries to /etc/hosts, /etc/resolv.conf, and /etc/ssl/certs/ca-certificates.crt from within script execution sandboxes. Attackers can exploit persistent poisoned entries across all subsequent script executions on the same worker pod to redirect hostnames, intercept DNS queries, perform transparent HTTPS man-in-the-middle attacks, and intercept WM_TOKEN JWTs to gain workspace-admin access to victim workspaces across tenants.
Executive ViewAI
Windmill versions prior to 1.703.2 enable authenticated low-privilege users to perform cross-tenant DNS and TLS poisoning attacks, allowing transparent HTTPS man-in-the-middle interception and theft of workspace administrator credentials. Publicly available exploit code exists, creating immediate risk of lateral movement and privilege escalation across multi-tenant deployments.
Apply vendor patch.
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
Privilege escalation occurs when an attacker leverages flaws in access control mechanisms to gain permissions beyond what they were originally granted.
The Lukasavicus/WindMill repository through 1.0 on GitHub allows absolute path traversal because the Flask send_file fun
Authorization bypass in Windmill 1.56.0-1.614.0 enables Operator role users to escalate privileges to remote code execut
Windmill is an open-source developer platform for internal code: APIs, background jobs, workflows and UIs. Prior to vers
JavaScript code injection in Windmill's NativeTS executor allows workspace administrators to achieve remote code executi
Authenticated workspace members in Windmill through 1.783.0 can exfiltrate plaintext resource credentials stored in lega
Broken authorization on the update_resource_type endpoint in Windmill through 1.783.0 allows any authenticated workspace
Missing authorization controls in Windmill through version 1.783.0 expose job metrics and progress endpoints to any auth
Windmill is an open-source developer platform for internal code: APIs, background jobs, workflows and UIs. Versions 1.63
EUVD-2026-30958
GHSA-78hq-926c-2xmr
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB