<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <id>https://vulnerability.circl.lu/rss/recent/all/10</id>
  <title>Most recent entries from all</title>
  <updated>2026-09-28T09:05:20.329291+00:00</updated>
  <author>
    <name>Vulnerability-Lookup</name>
    <email>info@circl.lu</email>
  </author>
  <link href="https://vulnerability.circl.lu" rel="alternate"/>
  <generator uri="https://lkiesow.github.io/python-feedgen" version="1.0.0">python-feedgen</generator>
  <subtitle>Contains only the most 10 recent entries.</subtitle>
  <entry>
    <id>https://vulnerability.circl.lu/vuln/fkie_cve-2026-54136</id>
    <title>fkie_cve-2026-54136</title>
    <updated>2026-09-28T09:05:21.746376+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>Windmill is an open-source developer platform for internal code: APIs, background jobs, workflows and UIs. Prior to 1.715.0, a resource-scoped API token could read script contents outside its allowed path scope through GET /api/w/{workspace}/scripts/list_search. The route-level scope middleware validated the token domain and action but did not enforce the resource/path segment, and the list_search_scripts handler had no additional check_scopes call or per-row filtering before returning script path and content fields. A token such as scripts:read:f/allowed/* could therefore receive source code for unrelated paths in the same workspace, potentially disclosing internal automation logic, integration details, business logic, inline configuration, or hardcoded secrets and credentials. Exploitation required possession of a valid scoped API token for the workspace but did not require administrator privileges. This issue is fixed in version 1.715.0.</p>
      </div>
    </content>
    <link href="https://vulnerability.circl.lu/vuln/fkie_cve-2026-54136"/>
  </entry>
  <entry>
    <id>https://vulnerability.circl.lu/vuln/ghsa-2ppx-66jv-wpw5</id>
    <title>GHSA-2ppx-66jv-wpw5 — Windmill: Resource-scoped API tokens can read script contents outside their allowed path via scripts/list_search</title>
    <updated>2026-09-28T09:05:21.746482+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> crates.io: windmill-api</p>
<p>### Summary</p>
<p>A resource-scoped API token can read script contents outside its allowed path scope via `GET /api/w/{workspace}/scripts/list_search`.</p>
<p>This appears to be a remaining variant of the scoped-token authorization class previously addressed for other endpoints. The route-level scope middleware validates the token domain/action, but does not enforce the resource/path segment of a scope. `scripts/list_search` then returns script `path` and `content` for scripts in the workspace without applying per-row path filtering against the token scopes.</p>
<p>### Affected endpoint</p>
<p>`GET /api/w/{workspace}/scripts/list_search`</p>
<p>### Affected versions</p>
<p>Confirmed in the current public repository code and believed to affect the latest published release at the time of review:</p>
<p>`&lt;= 1.714.1`</p>
<p>Patched version: unknown.</p>
<p>### Details</p>
<p>Windmill supports scoped API tokens with scopes in the format:</p>
<p>`{domain}:{action}[:{resource}]`</p>
<p>The parser supports resource-scoped values such as:</p>
<p>`scripts:read:f/allowed/*`</p>
<p>and the codebase contains helpers for resource matching, including wildcard matching.</p>
<p>However, the route-level scope check used for requests with scoped API tokens only validates the route domain and action. It does not compare the token's resource/path restriction against the requested route or against the rows returned by list endpoints.</p>
<p>For `scripts/list_search`, the handler returns `path` and `content` for scripts in the workspace:</p>
<p>`SELECT path, content from script WHERE workspace_id…</p></div>
    </content>
    <link href="https://vulnerability.circl.lu/vuln/ghsa-2ppx-66jv-wpw5"/>
  </entry>
</feed>
