CVE-2026-54136
Rust vulnerability analysis and mitigation

Overview

CVE-2026-54136 is an Incorrect Authorization vulnerability in Windmill (windmill-api, Rust/cargo) that allows a resource-scoped API token to read script contents outside its permitted path scope via the GET /api/w/{workspace}/scripts/list_search endpoint. It affects all versions up to and including 1.714.1, with version 1.715.0 identified as the patched release. The vulnerability was originally published on June 3, 2026, and added to the GitHub Advisory Database on July 10, 2026. It carries a CVSS v4.0 base score of 5.1 (Medium) (GitHub Advisory, Windmill Advisory).

Technical details

The root cause is CWE-863 (Incorrect Authorization): Windmill's route-level scope middleware validates only the domain and action portions of a scoped API token (e.g., scripts:read) but ignores the resource/path segment (e.g., f/allowed/*). The scripts/list_search handler executes a bare SQL query — SELECT path, content FROM script WHERE workspace_id = $1 AND archived = false LIMIT $2 — with no check_scopes() call and no per-row path filtering against the token's resource scope. As a result, a token scoped to scripts:read:f/allowed/* can retrieve the path and full source content of all non-archived scripts in the workspace, including those under unrelated paths such as f/private/script_b. This is described as a remaining variant of a broader scoped-token authorization class previously addressed for other endpoints (resources/variables listing, job preview/run paths) (GitHub Advisory, Windmill Advisory).

Impact

Successful exploitation allows any holder of a valid path-restricted scripts:read:{resource} token to read the full source code of all non-archived scripts in the same workspace, regardless of path restrictions. This can expose internal automation logic, integration details, business logic, inline configuration, and potentially hardcoded secrets or credentials embedded in scripts. There is no integrity or availability impact, and no subsequent system impact; the risk is confined to confidentiality of script contents within the affected workspace (GitHub Advisory).

Exploitability

No public proof-of-concept exploit code or in-the-wild exploitation has been reported. The vulnerability requires the attacker to already possess a valid scoped API token for the target workspace (Privileges Required: High), which limits the attack surface to insiders or compromised integrations. The EPSS score is 0.022% (7th percentile), indicating a very low near-term exploitation probability. The CVE is not listed in the CISA Known Exploited Vulnerabilities catalog (GitHub Advisory).

Exploitation steps

  1. Obtain a scoped API token: Acquire or compromise a Windmill API token scoped to scripts:read:f/allowed/* (or any path-restricted scripts:read scope) for the target workspace.
  2. Identify the target instance: Locate the Windmill instance URL and the workspace identifier (e.g., my-workspace).
  3. Send the crafted request: Issue an HTTP GET request to the unfiltered endpoint using the scoped token:
    GET /api/w/my-workspace/scripts/list_search
    Authorization: Bearer <scoped_token>
  4. Receive out-of-scope script contents: The handler returns path and content for all non-archived scripts in the workspace without applying per-row path filtering, exposing scripts outside the token's intended scope (e.g., f/private/script_b).
  5. Extract sensitive data: Review returned script source code for hardcoded credentials, API keys, business logic, or integration details (GitHub Advisory, Windmill Advisory).

Indicators of compromise

  • Network: Repeated or anomalous GET requests to /api/w/{workspace}/scripts/list_search from API tokens that are expected to access only a narrow path scope; requests originating from unexpected IP addresses or integration services.
  • Logs: Windmill API access logs showing scripts/list_search calls authenticated with path-restricted tokens (e.g., tokens with scripts:read:f/allowed/*) returning large result sets inconsistent with the token's intended scope.
  • Application Behavior: A scoped token returning script content from paths outside its declared resource scope (e.g., f/private/* results appearing for a token scoped to f/allowed/*).

Mitigation and workarounds

Upgrade Windmill (windmill-api) to version 1.715.0 or later, which contains the patch for this vulnerability. No configuration-based workaround is documented; the fix requires applying per-row path filtering or handler-level authorization in the scripts/list_search endpoint. As an interim measure, organizations should audit existing scoped API tokens and restrict their issuance to trusted, well-monitored integrations until the upgrade is applied (GitHub Advisory, Windmill Advisory).

Community reactions

The vulnerability was reported by security researcher Lechu69 and published by Windmill maintainer rubenfiszel on June 3, 2026. No significant broader media coverage or notable public researcher commentary beyond the GitHub advisory has been identified at this time (Windmill Advisory).

Additional resources


SourceThis report was generated using AI

Related Rust vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

GHSA-mc9m-6fm9-pghcMEDIUM6.9
  • Python logoPython
  • zoo-kcl
NoYesAug 20, 2026
GHSA-jgvr-6x5w-hx5wMEDIUM6.9
  • Python logoPython
  • zoo-kcl
NoYesAug 20, 2026
CVE-2026-54136MEDIUM5.1
  • Rust logoRust
  • windmill-api
NoYesAug 20, 2026
RUSTSEC-2026-0266NONEN/A
  • Rust logoRust
  • internment
NoYesAug 20, 2026
RUSTSEC-2026-0265NONEN/A
  • Rust logoRust
  • proc-macro1
NoNoAug 20, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management