Skip to main content

Windmill CVE-2026-47107

| EUVDEUVD-2026-30958 HIGH
Incorrect Default Permissions (CWE-276)
2026-05-19 VulnCheck GHSA-78hq-926c-2xmr
8.6
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Recon
    Obtain authenticated workspace user
  2. Delivery
    Submit script invoking nsjail sandbox
  3. Exploit
    Write poisoned entries to /etc/hosts and ca-certificates.crt
  4. Install
    Wait for victim job on same worker pod
  5. C2
    MITM victim's outbound HTTPS to Windmill API
  6. Execute
    Capture WM_TOKEN JWT
  7. Impact
    Authenticate 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.

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

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

Alert me

AnalysisAIv3 – 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)
v2 May 19, 2026 - 18:28 cvss changed CVSS 9.3

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.

v1 May 19, 2026 - 18:00 CVSS 9.6

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

windmill 0 <1.703.2
windmill patch: f8467f38c8a053117ce62f96684cfb15ef792f08

Affected Packages

euvd windmill fix: 1.703.2

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

Vendor (VulnCheck) PRIMARY 8.6 HIGH
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

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
Low
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
High
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

5
Analysis Updated
May 20, 2026 - 13:28 vuln.today
v3 - CVSS changed
Severity Changed
May 20, 2026 - 13:22 NVD
CRITICAL HIGH
CVSS changed
May 20, 2026 - 13:22 NVD
9.3 (CRITICAL) 8.6 (HIGH)
Analysis Updated
May 19, 2026 - 18:28 vuln.today
v2 - CVSS changed
CVSS changed
May 19, 2026 - 18:22 NVD
9.6 (CRITICAL) 9.3 (CRITICAL)

DescriptionCVE.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

Why It Matters

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.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.0%
Top 96% exploitable
Social Media
1
Sightings
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.0%
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

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

Attack Technique

Privilege escalation occurs when an attacker leverages flaws in access control mechanisms to gain permissions beyond what they were originally granted.

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