← Back to Feed CACHED · 2026-08-05 03:36:47 · CACHE_KEY CVE-2026-9198
CVE-2026-9198 · CWE-94 · Disclosed 2026-07-17

IBM Langflow OSS 1.0.0 through 1.10.0

ASSESSED — NOISGATE V0.5
Vendor
Reassessed
Verdict:
Do you agree?
01 · The Real Story

Like leaving a root shell on a public web server with a sign that says 'type here'

CVE-2026-9198 affects IBM Langflow OSS versions 1.0.0 through 1.10.0. The vulnerability chains two default-enabled API endpoints: /api/v1/auto_login hands any unauthenticated caller a SUPERUSER JWT, and /api/v1/validate/code feeds attacker-supplied Python straight into exec(). The result is full remote code execution — typically as root inside the container — with zero credentials required. The fix is Langflow 1.10.1, which disables auto_login by default and sandboxes the code-validation endpoint.

IBM scored this 9.8 CRITICAL and CISA agreed emphatically, adding it to the KEV catalog on 2026-08-04 with a three-day remediation deadline (August 7). The vendor score is accurate and arguably generous to the defender — the attack requires no authentication, no user interaction, no special configuration, and works against every default Langflow deployment in the affected range. With ~1,200 internet-facing instances visible on Shodan as of July 2026, active exploitation campaigns deploying cryptominers and harvesting AWS credentials, and the JadePuffer ransomware gang leveraging related Langflow chains, this is a textbook CRITICAL.

"KEV-listed unauth RCE in default Langflow config — two HTTP requests to SYSTEM. Patch now."
02 · The Attack Path

4 steps from start to impact.

STEP 01

Discover exposed Langflow instance

Attacker scans for Langflow's default HTTP port (7860) or uses Shodan/Censys/FOFA dorks targeting Langflow's distinctive HTML title and API paths. Over 1,200 instances were publicly indexed as of July 2026. No credentials or prior access needed.
Conditions required:
  • Langflow instance reachable over HTTP/HTTPS
Where this breaks in practice:
  • Instance behind VPN or authenticating reverse proxy blocks discovery
  • Enterprises using IBM's managed deployment may not expose the raw API
Detection/coverage: Shodan dork: http.title:"Langflow" port:7860. GreyNoise tags exist for Langflow scanning activity.
STEP 02

Mint SUPERUSER token via auto_login

Attacker sends a single GET or POST to /api/v1/auto_login. In default configurations (LANGFLOW_AUTO_LOGIN=true), the endpoint returns a valid JWT with superuser privileges. No password, no MFA, no challenge — just a token. This is the authentication bypass half of the chain.
Conditions required:
  • LANGFLOW_AUTO_LOGIN=true (default)
Where this breaks in practice:
  • Operator explicitly set LANGFLOW_AUTO_LOGIN=false
  • WAF rule blocking the /auto_login path
Detection/coverage: Web server access logs showing hits to /api/v1/auto_login from external IPs. WAF/IDS signatures for Langflow auto_login abuse.
STEP 03

Submit malicious Python to validate/code

Using the SUPERUSER JWT from step 2, the attacker POSTs arbitrary Python to /api/v1/validate/code. The server passes the payload directly to exec() with no sandboxing, AST filtering, or allowlisting. The code runs in the Langflow server process context — typically root inside a Docker container or the service account on bare metal.
Conditions required:
  • Valid SUPERUSER JWT (obtained in step 2)
  • Network access to /api/v1/validate/code
Where this breaks in practice:
  • None in default deployments — this is the intended code-validation feature being abused
Detection/coverage: EDR/runtime security (Falco, Sysdig, CrowdStrike Falcon for containers) detecting unexpected child processes from the Langflow Python process. WAF signatures for Python code patterns in POST bodies to /validate/code.
STEP 04

Achieve RCE and post-exploitation

Attacker executes reverse shell, deploys cryptominer, or harvests secrets. Observed campaigns extract AWS credentials from environment variables, container metadata (169.254.169.254), and Langflow's stored flow definitions which often contain LLM API keys, database connection strings, and cloud provider secrets. The JadePuffer ransomware group has been observed pivoting from Langflow into broader cloud infrastructure.
Conditions required:
  • Successful code execution from step 3
Where this breaks in practice:
  • Network egress filtering blocks reverse shells
  • Cloud IAM role has minimal permissions
  • Secrets stored in external vault rather than Langflow flow definitions
Detection/coverage: Cloud provider anomaly detection for metadata service access. EDR alerting on crypto-mining binaries. Network monitoring for C2 callbacks.
03 · Intelligence Metadata

The supporting signals.

In-the-Wild ExploitationActive. CISA added CVE-2026-9198 to KEV on 2026-08-04 with a 2026-08-07 deadline. Campaigns observed deploying cryptominers and harvesting AWS credentials. JadePuffer ransomware gang exploits related Langflow chains.
PoC / Exploit AvailabilityPublic. Multiple PoC repos exist for the related auto_login→exec() chain (see z4yd3/PoC-CVE-2026-33017 for the nearly identical pattern). The exploit is trivial — two HTTP requests with curl.
EPSS0.01886 (top ~2% of all CVEs). Low relative to the actual exploitation activity, likely due to the niche install base.
KEV StatusListed 2026-08-04. Due date: 2026-08-07. BOD 26-04 binding on FCEB agencies.
CVSS VectorCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H — Network-accessible, no privileges, no interaction, full CIA impact. A textbook 9.8.
Affected VersionsIBM Langflow OSS 1.0.0 through 1.10.0. All default installations with LANGFLOW_AUTO_LOGIN=true (the default).
Fixed VersionLangflow OSS 1.10.1 or later. IBM advisory: node/7278927.
Exposure Data~1,200 internet-facing instances visible on Shodan (July 2026). Concentrations in US, China, Germany, Singapore, UK. VentureBeat reported ~7,000 total reachable Langflow instances across all related CVEs.
Disclosure Date2026-07-17 (IBM advisory published).
CreditNot publicly attributed to a named researcher. IBM internal discovery and CISA coordination.
04 · The Call

noisgate verdict.

Final Verdict
= UNCHANGED to CRITICAL (9.8/10)

Active KEV listing with confirmed exploitation campaigns (cryptomining, credential theft, ransomware gang activity) against a default-exploitable, unauthenticated RCE — this is the single most decisive factor. The vendor's 9.8 CRITICAL is accurate and requires no adjustment.

HIGH Vulnerability severity and exploitability
HIGH Active exploitation status (KEV-confirmed)
MEDIUM Installed base size in enterprise environments

Why this verdict

  • Zero-friction exploit chain: Two HTTP requests — one to get a SUPERUSER token, one to execute arbitrary Python. No auth, no interaction, no special config. This is as low-complexity as RCE gets.
  • Active exploitation confirmed: CISA KEV-listed 2026-08-04 with a 3-day deadline. Observed campaigns include cryptomining, AWS credential harvesting, and JadePuffer ransomware pivots.
  • Default configuration is vulnerable: LANGFLOW_AUTO_LOGIN=true ships as the default. Every unmodified Langflow deployment in the affected range is exploitable out of the box.
  • Role multiplier: Langflow is an AI pipeline orchestration server. In enterprise deployments it commonly stores LLM API keys, database credentials, cloud provider secrets, and connects to production data sources. Compromise of a Langflow instance grants lateral movement into cloud infrastructure, CI/CD pipelines, and data stores. This is functionally a build/orchestration server role — blast radius extends to fleet-scale credential compromise and supply-chain pivot via poisoned AI pipelines. ≥10% of Langflow installs serve this pipeline-orchestration role by definition, setting a CRITICAL floor.

Why not higher?

The score is already 9.8 CRITICAL, the maximum practical severity. The Scope metric is Unchanged (S:U) which is accurate — the vulnerability directly impacts the Langflow host, not a separate security domain. A 10.0 would require Changed scope.

Why not lower?

Downgrading is indefensible. The chain is unauthenticated, trivial to execute, actively exploited in the wild, KEV-listed with a 3-day deadline, and works against every default installation. The ~1,200 exposed instances represent a small but actively targeted population, and internal deployments behind corporate networks are equally vulnerable once an attacker has any internal foothold.

05 · Compensating Control

What to do — in priority order.

  1. Block /api/v1/auto_login and /api/v1/validate/code at WAF or reverse proxy — These two endpoints are the entire exploit chain. Blocking them at the network edge eliminates the attack path immediately. Deploy within hours — this is a KEV with a 3-day CISA deadline.
  2. Set LANGFLOW_AUTO_LOGIN=false and configure explicit authentication — Disabling auto_login breaks step 2 of the chain. Requires restarting the Langflow service and configuring a real authentication provider. Deploy immediately as a configuration change.
  3. Remove Langflow from direct internet exposure — Place behind an authenticating reverse proxy (e.g., OAuth2 Proxy, Cloudflare Access, Tailscale) or VPN. No Langflow instance should be directly internet-reachable. This reduces the attack surface to authenticated internal users only.
  4. Rotate all secrets stored in Langflow flows — Assume compromise if the instance was ever internet-exposed. Rotate LLM API keys, database credentials, cloud provider access keys, and any other secrets stored in flow definitions. Do this in parallel with patching.
  5. Deploy container runtime security — Tools like Falco, Sysdig Secure, or CrowdStrike Falcon for Containers can detect unexpected child processes spawned from the Langflow Python process, catching post-exploitation even if the initial exploit succeeds.
What doesn't work
  • Network segmentation alone — if Langflow is reachable from any network segment (including internal), the exploit works. Segmentation slows lateral movement but does not prevent initial RCE.
  • Rate limiting — the exploit requires exactly two HTTP requests. Rate limiting is meaningless against a two-request chain.
  • Standard WAF generic rulesets — unless specifically configured to block the auto_login and validate/code paths, generic SQL injection or XSS rules will not catch Python code injection in POST bodies.
06 · Verification

Crowdsourced verification payload.

Run this on any host with curl and network access to the target Langflow instance. Usage: bash check_cve_2026_9198.sh https://langflow.example.com:7860. No special privileges required — it only tests the auto_login endpoint response.

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/usr/bin/env bash
# check_cve_2026_9198.sh — Test for CVE-2026-9198 (Langflow auto_login RCE chain)
# Usage: bash check_cve_2026_9198.sh <LANGFLOW_BASE_URL>
# Exit codes: 1=VULNERABLE, 0=PATCHED, 2=UNKNOWN

set -euo pipefail

if [ $# -lt 1 ]; then
  echo "Usage: $0 <LANGFLOW_BASE_URL>"
  echo "Example: $0 https://langflow.example.com:7860"
  exit 2
fi

BASE_URL="${1%/}"
AUTO_LOGIN_URL="${BASE_URL}/api/v1/auto_login"

echo "[*] Testing CVE-2026-9198 against: ${BASE_URL}"
echo "[*] Checking auto_login endpoint: ${AUTO_LOGIN_URL}"

# Attempt to hit the auto_login endpoint
HTTP_CODE=$(curl -sk -o /tmp/cve_2026_9198_response.json -w '%{http_code}' \
  -X POST "${AUTO_LOGIN_URL}" \
  -H 'Content-Type: application/json' \
  --max-time 10 2>/dev/null || echo "000")

if [ "${HTTP_CODE}" = "000" ]; then
  echo "UNKNOWN — Could not connect to ${BASE_URL}"
  rm -f /tmp/cve_2026_9198_response.json
  exit 2
fi

echo "[*] HTTP response code: ${HTTP_CODE}"

if [ "${HTTP_CODE}" = "200" ]; then
  # Check if the response contains an access token
  if grep -q '"access_token"' /tmp/cve_2026_9198_response.json 2>/dev/null; then
    echo "VULNERABLE — auto_login returned a SUPERUSER token without credentials."
    echo "[!] CVE-2026-9198 is exploitable on this instance."
    echo "[!] Patch to Langflow >= 1.10.1 or set LANGFLOW_AUTO_LOGIN=false immediately."
    rm -f /tmp/cve_2026_9198_response.json
    exit 1
  else
    echo "UNKNOWN — auto_login returned 200 but no access_token found in response."
    rm -f /tmp/cve_2026_9198_response.json
    exit 2
  fi
elif [ "${HTTP_CODE}" = "401" ] || [ "${HTTP_CODE}" = "403" ] || [ "${HTTP_CODE}" = "404" ] || [ "${HTTP_CODE}" = "405" ]; then
  echo "PATCHED — auto_login endpoint is disabled or requires authentication (HTTP ${HTTP_CODE})."
  rm -f /tmp/cve_2026_9198_response.json
  exit 0
else
  echo "UNKNOWN — Unexpected HTTP response code: ${HTTP_CODE}"
  rm -f /tmp/cve_2026_9198_response.json
  exit 2
fi
07 · Bottom Line

If you remember one thing.

TL;DR
This is a drop-everything patch. CVE-2026-9198 is KEV-listed with active exploitation and a CISA deadline of August 7, 2026 — that is two days from now. Under the noisgate mitigation SLA for CRITICAL, you have ≤3 days to deploy compensating controls: immediately block /api/v1/auto_login and /api/v1/validate/code at your WAF or reverse proxy, set LANGFLOW_AUTO_LOGIN=false on every instance, and pull any internet-exposed Langflow behind an authenticating gateway. In parallel, begin upgrading to Langflow 1.10.1+ under the noisgate remediation SLA of ≤90 days, but given active exploitation you should treat the patch itself as urgent — target completion this week, not this quarter. Rotate every secret (LLM API keys, DB credentials, cloud access keys) stored in any Langflow instance that was ever network-reachable. If you find evidence of compromise, invoke your IR playbook immediately.

Sources

  1. NVD — CVE-2026-9198
  2. CISA KEV Alert (2026-08-04)
  3. CIRCL Vulnerability Lookup — CVE-2026-9198
  4. SentinelOne Vulnerability DB — CVE-2026-9198
  5. BleepingComputer — CISA Orders Langflow Patch
  6. VentureBeat — 7,000 Langflow Servers Under Attack
  7. Senserva — Langflow KEV CVEs
  8. IBM Support Advisory
Peer Review

What defenders are saying.

Submit a review attribution: handle + country only
0 flags selected · stored anonymously
Validation Results

Crowdsourced verification outputs.

Results submitted by users who ran the verification payload against their environment.