CVE-2026-54136 (GCVE-0-2026-54136)
Vulnerability from cvelistv5
Published
2026-08-20 16:47
Modified
2026-08-21 21:47
Severity ?
VLAI Severity ?
EPSS score ?
CWE
- CWE-863 - Incorrect Authorization
Summary
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.
References
| URL | Tags | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
||||||||||||||
Impacted products
| Vendor | Product | Version | ||
|---|---|---|---|---|
| windmill-labs | windmill |
Version: < 1.715.0 |
{
"containers": {
"adp": [
{
"metrics": [
{
"other": {
"content": {
"id": "CVE-2026-54136",
"options": [
{
"Exploitation": "none"
},
{
"Automatable": "no"
},
{
"Technical Impact": "partial"
}
],
"role": "CISA Coordinator",
"timestamp": "2026-08-21T20:58:49.078615Z",
"version": "2.0.3"
},
"type": "ssvc"
}
}
],
"providerMetadata": {
"dateUpdated": "2026-08-21T21:47:02.821Z",
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP"
},
"title": "CISA ADP Vulnrichment"
}
],
"cna": {
"affected": [
{
"product": "windmill",
"vendor": "windmill-labs",
"versions": [
{
"status": "affected",
"version": "\u003c 1.715.0"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "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."
}
],
"metrics": [
{
"cvssV4_0": {
"attackComplexity": "LOW",
"attackRequirements": "NONE",
"attackVector": "NETWORK",
"baseScore": 5.1,
"baseSeverity": "MEDIUM",
"privilegesRequired": "HIGH",
"subAvailabilityImpact": "NONE",
"subConfidentialityImpact": "NONE",
"subIntegrityImpact": "NONE",
"userInteraction": "NONE",
"vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N",
"version": "4.0",
"vulnAvailabilityImpact": "NONE",
"vulnConfidentialityImpact": "LOW",
"vulnIntegrityImpact": "NONE"
}
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-863",
"description": "CWE-863: Incorrect Authorization",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-08-20T16:47:41.918Z",
"orgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"shortName": "GitHub_M"
},
"references": [
{
"name": "https://github.com/windmill-labs/windmill/security/advisories/GHSA-2ppx-66jv-wpw5",
"tags": [
"x_refsource_CONFIRM"
],
"url": "https://github.com/windmill-labs/windmill/security/advisories/GHSA-2ppx-66jv-wpw5"
},
{
"name": "https://github.com/windmill-labs/windmill/pull/9426",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/windmill-labs/windmill/pull/9426"
},
{
"name": "https://github.com/windmill-labs/windmill/commit/7edf3f02122e20fde1e95e0252e7bda641075326",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/windmill-labs/windmill/commit/7edf3f02122e20fde1e95e0252e7bda641075326"
},
{
"name": "https://github.com/windmill-labs/windmill/releases/tag/v1.715.0",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/windmill-labs/windmill/releases/tag/v1.715.0"
}
],
"source": {
"advisory": "GHSA-2ppx-66jv-wpw5",
"discovery": "UNKNOWN"
},
"title": "Windmill: Resource-scoped API tokens can read script contents outside their allowed path via scripts/list_search"
}
},
"cveMetadata": {
"assignerOrgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"assignerShortName": "GitHub_M",
"cveId": "CVE-2026-54136",
"datePublished": "2026-08-20T16:47:41.918Z",
"dateReserved": "2026-06-11T21:15:33.870Z",
"dateUpdated": "2026-08-21T21:47:02.821Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2",
"vulnerability-lookup:meta": {
"vulnrichment": {
"containers": "{\"adp\": [{\"title\": \"CISA ADP Vulnrichment\", \"metrics\": [{\"other\": {\"type\": \"ssvc\", \"content\": {\"id\": \"CVE-2026-54136\", \"role\": \"CISA Coordinator\", \"options\": [{\"Exploitation\": \"none\"}, {\"Automatable\": \"no\"}, {\"Technical Impact\": \"partial\"}], \"version\": \"2.0.3\", \"timestamp\": \"2026-08-21T20:58:49.078615Z\"}}}], \"providerMetadata\": {\"orgId\": \"134c704f-9b21-4f2e-91b3-4a467353bcc0\", \"shortName\": \"CISA-ADP\", \"dateUpdated\": \"2026-08-21T20:58:50.624Z\"}}], \"cna\": {\"title\": \"Windmill: Resource-scoped API tokens can read script contents outside their allowed path via scripts/list_search\", \"source\": {\"advisory\": \"GHSA-2ppx-66jv-wpw5\", \"discovery\": \"UNKNOWN\"}, \"metrics\": [{\"cvssV4_0\": {\"version\": \"4.0\", \"baseScore\": 5.1, \"attackVector\": \"NETWORK\", \"baseSeverity\": \"MEDIUM\", \"vectorString\": \"CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N\", \"userInteraction\": \"NONE\", \"attackComplexity\": \"LOW\", \"attackRequirements\": \"NONE\", \"privilegesRequired\": \"HIGH\", \"subIntegrityImpact\": \"NONE\", \"vulnIntegrityImpact\": \"NONE\", \"subAvailabilityImpact\": \"NONE\", \"vulnAvailabilityImpact\": \"NONE\", \"subConfidentialityImpact\": \"NONE\", \"vulnConfidentialityImpact\": \"LOW\"}}], \"affected\": [{\"vendor\": \"windmill-labs\", \"product\": \"windmill\", \"versions\": [{\"status\": \"affected\", \"version\": \"\u003c 1.715.0\"}]}], \"references\": [{\"url\": \"https://github.com/windmill-labs/windmill/security/advisories/GHSA-2ppx-66jv-wpw5\", \"name\": \"https://github.com/windmill-labs/windmill/security/advisories/GHSA-2ppx-66jv-wpw5\", \"tags\": [\"x_refsource_CONFIRM\"]}, {\"url\": \"https://github.com/windmill-labs/windmill/pull/9426\", \"name\": \"https://github.com/windmill-labs/windmill/pull/9426\", \"tags\": [\"x_refsource_MISC\"]}, {\"url\": \"https://github.com/windmill-labs/windmill/commit/7edf3f02122e20fde1e95e0252e7bda641075326\", \"name\": \"https://github.com/windmill-labs/windmill/commit/7edf3f02122e20fde1e95e0252e7bda641075326\", \"tags\": [\"x_refsource_MISC\"]}, {\"url\": \"https://github.com/windmill-labs/windmill/releases/tag/v1.715.0\", \"name\": \"https://github.com/windmill-labs/windmill/releases/tag/v1.715.0\", \"tags\": [\"x_refsource_MISC\"]}], \"descriptions\": [{\"lang\": \"en\", \"value\": \"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.\"}], \"problemTypes\": [{\"descriptions\": [{\"lang\": \"en\", \"type\": \"CWE\", \"cweId\": \"CWE-863\", \"description\": \"CWE-863: Incorrect Authorization\"}]}], \"providerMetadata\": {\"orgId\": \"a0819718-46f1-4df5-94e2-005712e83aaa\", \"shortName\": \"GitHub_M\", \"dateUpdated\": \"2026-08-20T16:47:41.918Z\"}}}",
"cveMetadata": "{\"cveId\": \"CVE-2026-54136\", \"state\": \"PUBLISHED\", \"dateUpdated\": \"2026-08-21T21:47:02.821Z\", \"dateReserved\": \"2026-06-11T21:15:33.870Z\", \"assignerOrgId\": \"a0819718-46f1-4df5-94e2-005712e83aaa\", \"datePublished\": \"2026-08-20T16:47:41.918Z\", \"assignerShortName\": \"GitHub_M\"}",
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
}
}
Loading…
Loading…
Sightings
| Author | Source | Type | Date |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
- Confirmed: The vulnerability is confirmed from an analyst perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
- Patched: This vulnerability was successfully patched by the user reporting the sighting.
- Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
- Not confirmed: The user expresses doubt about the veracity of the vulnerability.
- Not patched: This vulnerability was not successfully patched by the user reporting the sighting.
Loading…
Loading…