← Back to Feed CACHED · 2026-09-03 01:37:32 · CACHE_KEY CVE-2026-0768
CVE-2026-0768 · CWE-94 · Disclosed 2026-01-23

Langflow code Code Injection Remote Code Execution Vulnerability.

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

Someone left a Python eval() wide open on the internet and attackers are walking through it to loot your AWS and OpenAI keys

CVE-2026-0768 is a code injection flaw in Langflow's /api/v1/validate/code endpoint — the custom component editor's code-validation function calls Python exec() on attacker-supplied input without authentication. Because Langflow typically runs as root in Docker, successful exploitation yields root-level arbitrary code execution with zero clicks, zero credentials, and zero user interaction. All versions through 1.4.2 are affected; the fix ships in 1.11.6. The attack surface is any Langflow instance reachable over HTTP — default port 7860.

The vendor's CVSS 9.8 CRITICAL is accurate and, if anything, undersells the operational impact. The vector (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) faithfully describes a trivial, fully unauthenticated remote chain. Active exploitation was confirmed by VulnCheck on September 2, 2026 — one day ago — with 360+ canary detections in under 48 hours, credential theft targeting AWS keys, OpenAI API keys, and SSH material, and traffic sourced primarily from Russian IPs aimed at UK-based honeypots. This is not theoretical.

"Unauthenticated root RCE in Langflow is being actively exploited right now to steal cloud keys."
02 · The Attack Path

5 steps from start to impact.

STEP 01

Discover exposed Langflow instance

Attacker scans for Langflow's default port 7860 or identifies instances via Shodan/FOFA/Censys. The Langflow web UI and API are served on the same port with no authentication gate by default. Horizon3 previously documented ~500+ publicly exposed instances for the predecessor CVE-2025-3248; the population is likely similar or larger now.
Conditions required:
  • Langflow instance reachable over the network (internet or internal)
Where this breaks in practice:
  • Small absolute internet-facing population (~500 instances globally)
  • Organizations behind VPN/reverse proxy with auth are not directly reachable
Detection/coverage: Shodan dork http.title:"Langflow" or port:7860 langflow. GreyNoise tags for Langflow scanning activity.
STEP 02

Send crafted code to /api/v1/validate/code

Attacker sends an HTTP POST to the unauthenticated /api/v1/validate/code endpoint with a code parameter containing a Python function definition that embeds malicious logic in a decorator expression or default argument value. Python evaluates these at function definition time, bypassing any naive function-body-only validation. No authentication token, session cookie, or CSRF token is needed.
Conditions required:
  • HTTP connectivity to the Langflow API
Where this breaks in practice:
  • None — endpoint is unauthenticated by design in affected versions
Detection/coverage: WAF rules inspecting POST bodies to /api/v1/validate/code for __import__, exec, eval, os.system, subprocess. IDS signatures for Langflow RCE payloads.
STEP 03

Achieve root-level code execution

The injected Python code executes inside Langflow's server process, which typically runs as root in the official Docker container. The attacker now has arbitrary command execution with the highest privileges on the host. There is no sandbox, no seccomp profile, and no AppArmor policy in the default deployment.
Conditions required:
  • Successful code injection from Step 2
Where this breaks in practice:
  • Hardened containers with non-root users and read-only filesystems reduce impact
  • Network segmentation limits blast radius
Detection/coverage: EDR/runtime security (Falco, Sysdig, Tracee) alerting on unexpected child processes of the Python/Langflow process.
STEP 04

Harvest credentials and secrets

Attacker enumerates environment variables (LANGFLOW_SECRET_KEY, OPENAI_API_KEY, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY), reads .env files, dumps ~/.ssh/ directories for SSH private keys, and exfiltrates shell history. This is the observed post-exploitation playbook documented by VulnCheck as of September 2, 2026.
Conditions required:
  • Root shell from Step 3
Where this breaks in practice:
  • Short-lived or rotated credentials limit window of abuse
  • Vault-based secret injection (no env vars) reduces harvest yield
Detection/coverage: Cloud audit logs (AWS CloudTrail) showing API key usage from unexpected IPs. SSH key usage alerts.
STEP 05

Lateral movement and persistence

Using harvested SSH keys and cloud credentials, the attacker pivots to adjacent hosts, cloud accounts, and AI/ML infrastructure. Observed campaigns also search for other backdoored Langflow instances to layer additional persistence. AWS keys yield access to S3 buckets, EC2 instances, and IAM escalation paths.
Conditions required:
  • Valid credentials or SSH keys from Step 4
Where this breaks in practice:
  • MFA on cloud accounts blocks API key abuse alone
  • Network microsegmentation limits SSH lateral movement
Detection/coverage: CloudTrail anomaly detection, SSH login alerts from unexpected sources, GuardDuty findings.
03 · Intelligence Metadata

The supporting signals.

In-the-Wild ExploitationActive. VulnCheck observed 50+ canary hits within hours on Aug 30, rising to 360+ by Aug 31. Exploitation confirmed Sept 2, 2026. Attackers stealing cloud/AI API keys, SSH material. Traffic primarily from Russian IPs targeting UK-based honeypots.
Proof-of-ConceptNo known *public* PoC as of Sept 3, 2026. Despite this, attackers are exploiting the flaw at scale, indicating private exploit availability. The technique (Python decorator/default-arg injection into exec()) is straightforward to reproduce from the advisory description alone.
EPSS Score0.02261 (97th+ percentile) — indicates elevated exploitation probability, consistent with observed in-the-wild activity.
KEV StatusNot listed on CISA KEV as of Sept 3, 2026. Listed on VulnCheck KEV. Six other Langflow CVEs added to VulnCheck KEV in 2026. CISA KEV listing likely imminent given active exploitation.
CVSS VectorCVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H — 9.8. Every base metric is worst-case except Scope (Unchanged). Accurately reflects the unauthenticated, trivial-complexity, full-impact chain.
Affected VersionsLangflow ≤ 1.4.2 (all versions). The vulnerable code in the custom component editor's validate function has existed since early Langflow releases.
Fixed VersionLangflow 1.11.6. The fix enforces authentication on the /api/v1/validate/code endpoint and adds input sanitization.
Scanning/Exposure DataHorizon3 documented ~500+ internet-facing Langflow instances (for CVE-2025-3248). Internal deployments behind VPN are not counted but are still vulnerable to authenticated insiders or post-compromise lateral movement.
Disclosure TimelineReported to vendor via ZDI: July 2025. Public disclosure: January 23, 2026. Active exploitation first observed: August 30, 2026. Confirmed exploitation: September 2, 2026.
Reporting ResearcherTrend Micro Zero Day Initiative (ZDI). Prior related research on Langflow exec() abuse by Naveen Sunkavally at Horizon3.ai (CVE-2025-3248).
04 · The Call

noisgate verdict.

Final Verdict
= UNCHANGED to CRITICAL (9.8/10)

The single most decisive factor is active exploitation of an unauthenticated, zero-interaction RCE chain that yields root-level code execution and documented credential theft. With 360+ exploit attempts observed in 48 hours and no authentication barrier whatsoever, the vendor's CRITICAL 9.8 is fully warranted and requires no adjustment.

HIGH Vulnerability severity and exploitability assessment
HIGH Active exploitation status (VulnCheck canary data, multiple corroborating sources)
MEDIUM Exact internet-facing instance count (relying on older Horizon3 data plus inference)

Why this verdict

  • Unauthenticated RCE with zero friction: The vulnerable endpoint requires no credentials, no user interaction, and has low attack complexity. There is literally nothing between the attacker and code execution except HTTP connectivity.
  • Active exploitation confirmed yesterday: VulnCheck documented 360+ exploit attempts in 48 hours (Aug 30–31), with confirmed credential theft campaigns targeting AWS keys, OpenAI API keys, and SSH material as of Sept 2, 2026.
  • Root-level execution in default deployment: Langflow's official Docker image runs as root with no seccomp/AppArmor profile, meaning successful exploitation grants the attacker the highest possible privileges on the host.
  • Role multiplier: Langflow occupies a *credential-store and CI/CD-adjacent* role in most deployments. It routinely holds AWS access keys, OpenAI API keys, database connection strings, and SSH keys — making it a secret manager equivalent for AI/ML workflows. Compromise yields cloud account takeover (fleet-scale blast radius via AWS IAM escalation) and lateral movement via SSH keys. While Langflow is not canonically a DC or hypervisor, its credential-store function means the blast radius extends well beyond the single host. For organizations running Langflow with production cloud credentials, the outcome is cloud account compromise and supply-chain risk to AI/ML pipelines — this clears the HIGH floor and supports CRITICAL.
  • Exploit simplicity: The technique (decorator/default-arg injection into Python exec()) is trivial to reproduce from the advisory alone, even without a public PoC. The absence of a public PoC has not prevented mass exploitation.

Why not higher?

The score is already at 9.8, the practical ceiling for CVSS 3.x with Scope:Unchanged. The only path to 10.0 would require Scope:Changed, which does not apply here since the vulnerable component and impacted component are the same Langflow server process.

Why not lower?

Despite the small internet-facing population (~500 instances), downgrading would be irresponsible given active exploitation confirmed one day ago, the complete absence of any authentication barrier, root-level execution, and documented credential theft leading to cloud account compromise. The small absolute footprint is irrelevant to organizations that *do* run Langflow — for them, the blast radius is cloud-account-scale. Additionally, internal Langflow instances are reachable post-initial-access with identical zero-auth exploitation.

05 · Compensating Control

What to do — in priority order.

  1. Block all external access to Langflow immediately — Place Langflow behind a VPN, SSH tunnel, or zero-trust proxy (Cloudflare Access, Tailscale, etc.) today — within hours, not days. This is the single highest-impact mitigation. Per the noisgate mitigation SLA for CRITICAL, deploy within 3 days, but given active exploitation, treat this as an emergency.
  2. Enforce authentication proxy in front of /api/v1/validate/code — If you cannot upgrade immediately, deploy a reverse proxy (nginx, Caddy, Traefik) that requires authentication for all API routes, especially /api/v1/validate/code. This blocks the unauthenticated attack vector. Deploy within 3 days per noisgate mitigation SLA.
  3. Run Langflow as non-root with read-only filesystem — Reconfigure the Docker container with --user 1000:1000, --read-only, and drop all capabilities (--cap-drop=ALL). This limits post-exploitation impact even if code injection succeeds. Deploy within 3 days.
  4. Rotate all credentials stored in Langflow environment — Immediately rotate AWS access keys, OpenAI API keys, Langflow secret_key, and any SSH keys accessible from the Langflow host. Attackers are actively harvesting these. Do this within hours if you have any internet-exposed Langflow instance.
  5. Restrict outbound network from Langflow containers — Apply egress filtering to allow only necessary outbound connections (LLM API endpoints, database). This prevents exfiltration of harvested credentials. Deploy within 3 days.
What doesn't work
  • WAF rules alone — while POST body inspection can catch naive payloads, Python decorator injection is highly polymorphic and trivially obfuscated. WAF is a speed bump, not a fix.
  • Rate limiting — the exploit requires a single HTTP request. Rate limiting does not prevent exploitation.
  • Network-level IDS/IPS without SSL termination — if Langflow is behind TLS (common with reverse proxies), network IDS cannot inspect the POST body without TLS interception.
06 · Verification

Crowdsourced verification payload.

Run this script on each host running Langflow (or from a central auditor with SSH access). It checks the installed Langflow version against the vulnerable range. Requires pip or access to the Langflow container. Example: bash check_cve_2026_0768.sh — no special privileges needed beyond ability to query the Python package version.

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/usr/bin/env bash
# check_cve_2026_0768.sh — Detect CVE-2026-0768 in Langflow
# Tests whether the installed Langflow version is <= 1.4.2 (vulnerable)
# Exit codes: 1 = VULNERABLE, 0 = PATCHED, 2 = UNKNOWN

set -euo pipefail

VULN_MAJOR=1
VULN_MINOR=4
VULN_PATCH=2

# Try to get Langflow version from pip
if command -v langflow &>/dev/null; then
  VERSION=$(langflow --version 2>/dev/null | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | head -1)
elif command -v pip &>/dev/null; then
  VERSION=$(pip show langflow 2>/dev/null | grep -i '^Version:' | awk '{print $2}')
elif command -v pip3 &>/dev/null; then
  VERSION=$(pip3 show langflow 2>/dev/null | grep -i '^Version:' | awk '{print $2}')
elif command -v docker &>/dev/null; then
  VERSION=$(docker exec $(docker ps --filter ancestor=langflowai/langflow -q 2>/dev/null | head -1) pip show langflow 2>/dev/null | grep -i '^Version:' | awk '{print $2}' 2>/dev/null)
fi

if [ -z "${VERSION:-}" ]; then
  echo "UNKNOWN — Langflow not found or version could not be determined."
  exit 2
fi

IFS='.' read -r MAJOR MINOR PATCH <<< "$VERSION"
PATCH=${PATCH%%[^0-9]*}  # strip any pre-release suffix

echo "Detected Langflow version: $VERSION"

if [ "$MAJOR" -lt "$VULN_MAJOR" ] || \
   { [ "$MAJOR" -eq "$VULN_MAJOR" ] && [ "$MINOR" -lt "$VULN_MINOR" ]; } || \
   { [ "$MAJOR" -eq "$VULN_MAJOR" ] && [ "$MINOR" -eq "$VULN_MINOR" ] && [ "${PATCH:-0}" -le "$VULN_PATCH" ]; }; then
  echo "VULNERABLE — Langflow $VERSION is affected by CVE-2026-0768 (<= 1.4.2)."
  echo "Upgrade to Langflow >= 1.11.6 immediately."
  exit 1
else
  echo "PATCHED — Langflow $VERSION is not affected by CVE-2026-0768."
  exit 0
fi
07 · Bottom Line

If you remember one thing.

TL;DR
This is a fire drill. Active exploitation of CVE-2026-0768 was confirmed *yesterday* (September 2, 2026) with 360+ attack attempts in 48 hours targeting AWS keys, OpenAI API keys, and SSH credentials. If you run Langflow anywhere — internet-facing or internal — your Monday morning starts with three actions: (1) Immediately block external access to any Langflow instance and rotate all credentials stored in its environment (AWS keys, OpenAI keys, secret_key, SSH keys) — do this within hours, not days. (2) Per the noisgate mitigation SLA for CRITICAL, deploy compensating controls (VPN/auth proxy, non-root container, egress filtering) within 3 days. (3) Per the noisgate remediation SLA, upgrade all Langflow instances to ≥ 1.11.6 within 90 days — but given active exploitation, push the upgrade into this week's change window if at all possible. If you had any internet-facing Langflow instance before today, assume compromise and begin incident response.

Sources

  1. SecurityAffairs — Hackers Target Langflow in CVE-2026-0768 Attacks
  2. SecurityWeek — Hackers Start Exploiting Critical Langflow Vulnerability
  3. Horizon3.ai — Unsafe at Any Speed: Abusing Python Exec for Unauth RCE in Langflow
  4. Dev.to — Exploitation of Langflow CVE-2026-0768: From Unauthenticated Root RCE to Secret Theft
  5. SOCRadar — Langflow and Rails Exploitation Raises Credential Risks
  6. NVD — CVE-2026-0768
  7. SentinelOne Vulnerability Database — CVE-2026-0768
  8. The Hacker News — Attackers Exploit Critical Langflow and Rails Flaws
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.