Someone left the mixing board unlocked and anyone walking by can swap the tracks mid-performance
CVE-2026-69258 targets the POST /api/v1/prediction/:id endpoint in Flowise < 3.1.3, which is whitelisted from authentication checks. The endpoint accepts an overrideConfig JSON object and unconditionally spreads it into internal flowConfig and flowData structures via two separate spread operations — neither of which checks the chatflow's apiOverrideStatus gate. This means an unauthenticated attacker can overwrite chatId, sessionId, chatHistory, and any $flow.* template variable consumed by downstream nodes. The result is session hijacking, cross-session data pollution, chat history manipulation, and injection of attacker-controlled values into LLM prompt templates. All versions before 3.1.3 are affected; this is distinct from the earlier GHSA-5cph-wvm9-45gj fix, which only gated replaceInputsWithConfig().
There is no official vendor CVSS score from FlowiseAI. Third-party databases (GitLab Advisory Database, SentinelOne) have scored this between 8.2 and 8.8, which is aggressive. Those scores reflect the unauthenticated, zero-interaction attack surface — and they're directionally correct. However, the direct impact is data manipulation and session hijacking, not remote code execution. The real danger is what sits *behind* Flowise: API keys for OpenAI/Azure/AWS, database credentials, and internal tool integrations stored in flow configs. An attacker who can inject into $flow variables can redirect LLM tool calls, exfiltrate secrets embedded in prompt templates, or poison AI agent outputs. The severity is genuinely HIGH, but calling it CRITICAL would require a proven RCE chain, which this CVE alone does not provide.
5 steps from start to impact.
Identify exposed Flowise instance
- Flowise instance is network-reachable (internet or internal network)
- Enterprise deployments behind VPN or WAF are not directly reachable
- Some deployments run on non-standard ports or behind reverse proxies
/api/v1/prediction/ requests from unexpected sourcesEnumerate chatflow IDs
:id (UUID format). Public-facing chatbots embed their chatflow ID in client-side JavaScript or iframe embed snippets. If the Flowise UI is exposed, the /api/v1/chatflows endpoint (also often unauthenticated in misconfigured deployments) can enumerate all chatflow IDs directly.- At least one chatflow exists and is publicly shared or embeddable
- Properly authenticated instances gate the chatflows listing endpoint
- UUIDs are not sequentially guessable if the listing endpoint is locked down
/api/v1/chatflows or repeated /api/v1/prediction/ with different IDsSend crafted overrideConfig payload
POST /api/v1/prediction/:id request with a malicious overrideConfig object. Because the endpoint is whitelisted from auth and the two spread operations are ungated, the injected properties overwrite internal execution context. The attacker can set chatId and sessionId to hijack another user's session, or inject values into $flow.* template variables that downstream LLM nodes consume.- Target Flowise version < 3.1.3
- The prediction endpoint is reachable
- Flowise 3.1.3+ patches the ungated spread
- A WAF rule blocking unexpected keys in overrideConfig body would stop this
/api/v1/prediction/Hijack sessions or poison LLM context
chatId/sessionId, the attacker reads another user's conversation history or impersonates them. With control over $flow.* variables, the attacker injects prompt content that the LLM processes as trusted input — enabling prompt injection, data exfiltration through tool calls, or redirection of agent actions to attacker-controlled endpoints.- Other users are actively using the chatflow, or secrets are embedded in flow templates
- Flows without sensitive $flow variables or tool integrations limit blast radius
- Memory-less flows (no session persistence) reduce session hijack impact
Exfiltrate secrets or pivot via tool integrations
- Flow contains tool integrations with embedded credentials
- $flow variables are used to pass sensitive configuration to nodes
- Credentials stored in environment variables rather than flow configs are not directly reachable
- Flows using credential references (not inline secrets) limit exposure
The supporting signals.
| In-the-wild exploitation | No confirmed exploitation of CVE-2026-69258 specifically. However, Flowise has been under active attack since April 2026 — CVE-2025-59528 (CVSS 10.0 RCE) saw exploitation from Starlink IPs per VulnCheck. This CVE's attack surface overlaps. |
|---|---|
| Proof-of-concept | No standalone public PoC repository found. The attack is a single HTTP POST request with a crafted JSON body — trivially reproducible from the advisory description alone. No tooling required beyond curl. |
| EPSS | 0.00383 (low probability of exploitation in next 30 days). This reflects the niche install base, not the ease of exploitation. |
| KEV status | Not listed on CISA KEV as of 2026-08-30. |
| CVSS vector (third-party) | Estimated CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N — network-accessible, no privileges, no interaction. SentinelOne rates 8.8; GitLab Advisory Database rates 8.2. |
| Affected versions | Flowise < 3.1.3 (all prior versions including 3.1.2 and below) |
| Fixed version | Flowise 3.1.3 — fix in GitHub PR #6279 |
| Exposure data | 12,000–15,000 Flowise instances publicly exposed per Shodan/Censys (April 2026 telemetry). Many are developer/hobby instances but enterprise AI deployments exist. |
| Disclosure date | 2026-08-04 (advisory published 2026-08-06) |
| Reporter | Disclosed via GHSA-6vh2-wg4h-4vwj; researcher not named in public advisory. |
noisgate verdict.
The single most decisive factor is the unauthenticated, zero-interaction attack surface on an internet-exposed endpoint with 12,000+ reachable instances — any anonymous attacker can manipulate session context and LLM prompt inputs with a single HTTP request. The impact stops short of CRITICAL because the direct chain yields data manipulation and session hijacking, not proven remote code execution or fleet-scale compromise.
Why this verdict
- Unauthenticated, zero-click attack surface: The
/api/v1/prediction/:idendpoint is explicitly whitelisted from auth in the Flowise codebase. No credentials, no user interaction, no special headers. This removes the most common friction point. - Significant internet exposure: 12,000–15,000 Flowise instances are publicly reachable. While many are hobby/dev instances, enterprise AI deployments with sensitive tool integrations are in the mix. The reachable population is non-trivial.
- Impact is data-plane manipulation, not control-plane RCE: The attacker gains the ability to hijack sessions, inject into LLM prompts, and manipulate flow variables — but not execute arbitrary code on the host. The severity ceiling is set by what the Flowise agent can *reach*, not by OS-level compromise.
- Role multiplier: Flowise is an AI agent orchestration platform. In its *typical* role (b), it's a dev tool building chatbot prototypes — blast radius is low. In its *high-value* role (c), it orchestrates AI agents with database access, cloud API keys, and internal tool integrations — blast radius extends to credential theft and data exfiltration from connected systems. However, Flowise is not a canonical high-value infrastructure component (not a DC, hypervisor, IdP, or backup server). The high-value role represents a minority of deployments. The floor is HIGH, not CRITICAL.
- Chaining potential: This CVE can chain with other Flowise vulnerabilities (e.g., CVE-2026-41268 RCE via parameter override bypass) to escalate from property injection to code execution — but that requires a separate unpatched vulnerability, not this CVE alone.
Why not higher?
CRITICAL would require either direct RCE, a proven chain to fleet/domain compromise, or a canonical high-value infrastructure role. This CVE yields session hijacking and data manipulation — serious, but bounded by what the Flowise process can access. Flowise is not an identity provider, domain controller, or hypervisor. The blast radius of a compromised Flowise instance is limited to its connected integrations, not the broader network.
Why not lower?
MEDIUM would underestimate the risk of an unauthenticated, zero-interaction vulnerability on 12,000+ internet-facing instances. The attack is trivial (single curl command), requires no privileges, and the target often holds cloud API keys and database credentials in flow configurations. The CWE-639 authorization bypass means every public chatflow is a viable entry point. Downgrading past HIGH would ignore the real-world exposure population and the sensitivity of data Flowise instances routinely handle.
What to do — in priority order.
- Place Flowise behind authentication proxy immediately — Deploy a reverse proxy (nginx, Caddy, Traefik) or zero-trust gateway (Cloudflare Access, Tailscale Funnel) that requires authentication before any request reaches Flowise. This neutralizes the unauthenticated attack vector entirely. Per noisgate mitigation SLA for HIGH, deploy within 30 days.
- Restrict /api/v1/prediction/ to known client IPs — If the chatbot must remain public, apply WAF or network ACL rules to allow only your frontend application's IP range to reach the prediction endpoint. Block direct access from arbitrary internet sources.
- Audit and rotate all credentials stored in Flowise flows — Check all chatflows for inline API keys, database passwords, and service tokens. Rotate any credentials that were accessible through
$flow.*variables or flow configs. Assume they may have been exposed if your instance was internet-facing before patching. - Upgrade to Flowise 3.1.3+ — The definitive fix. Per noisgate remediation SLA for HIGH, complete within 180 days. Given the trivial exploitability, prioritize this ahead of the SLA deadline.
- Disable unnecessary public chatflow sharing — Review all chatflows with public sharing enabled. Disable sharing for any flow that doesn't require anonymous access. This reduces the attack surface to only intentionally public flows.
- Rate limiting alone — the attack requires only a single request. Rate limiting won't prevent exploitation, only slow enumeration of chatflow IDs.
- Content Security Policy headers — CSP protects the browser-side UI but has no effect on server-side API endpoint exploitation.
- Flowise's built-in apiOverrideStatus setting — this is the exact control being bypassed. The vulnerability exists because the two spread operations ignore this gate entirely.
Crowdsourced verification payload.
Run this on the Flowise host or from any machine with network access to the Flowise instance. No special privileges needed. Usage: bash check_cve_2026_69258.sh https://your-flowise-host:3000
#!/usr/bin/env bash
# CVE-2026-69258 Checker — Flowise overrideConfig property injection
# Usage: bash check_cve_2026_69258.sh <FLOWISE_BASE_URL>
# Exit codes: 0=VULNERABLE, 1=PATCHED, 2=UNKNOWN
set -euo pipefail
BASE_URL="${1:?Usage: $0 <FLOWISE_BASE_URL>}"
BASE_URL="${BASE_URL%/}"
echo "[*] Checking Flowise version at ${BASE_URL}..."
# Try to get version from the API
VERSION=$(curl -sf --max-time 10 "${BASE_URL}/api/v1/version" 2>/dev/null | grep -oP '"version"\s*:\s*"\K[^"]+' || true)
if [ -z "$VERSION" ]; then
# Fallback: check package.json endpoint or HTML
VERSION=$(curl -sf --max-time 10 "${BASE_URL}" 2>/dev/null | grep -oP 'flowise[/@]\K[0-9]+\.[0-9]+\.[0-9]+' | head -1 || true)
fi
if [ -z "$VERSION" ]; then
echo "[!] UNKNOWN — Could not determine Flowise version."
echo " Verify manually: curl ${BASE_URL}/api/v1/version"
exit 2
fi
echo "[*] Detected Flowise version: ${VERSION}"
# Parse version components
IFS='.' read -r MAJOR MINOR PATCH <<< "$VERSION"
# Vulnerable: < 3.1.3
if [ "$MAJOR" -lt 3 ]; then
echo "[!] VULNERABLE — Flowise ${VERSION} is affected by CVE-2026-69258 (fixed in 3.1.3)."
exit 0
elif [ "$MAJOR" -eq 3 ] && [ "$MINOR" -lt 1 ]; then
echo "[!] VULNERABLE — Flowise ${VERSION} is affected by CVE-2026-69258 (fixed in 3.1.3)."
exit 0
elif [ "$MAJOR" -eq 3 ] && [ "$MINOR" -eq 1 ] && [ "$PATCH" -lt 3 ]; then
echo "[!] VULNERABLE — Flowise ${VERSION} is affected by CVE-2026-69258 (fixed in 3.1.3)."
exit 0
else
echo "[+] PATCHED — Flowise ${VERSION} is not affected by CVE-2026-69258."
exit 1
fiIf you remember one thing.
Sources
- GitLab Advisory Database — CVE-2026-69258
- SentinelOne Vulnerability Database — CVE-2026-69258
- The Hacker News — Flowise Under Active RCE Exploitation (April 2026)
- Cybersecurity News — 15,000+ Flowise Instances Exposed
- FlowiseAI GitHub Security Advisory — GHSA-5cph-wvm9-45gj (prior overrideConfig fix)
- Flowise Vulnerability Rollup (April 2026)
- CWE-639: Authorization Bypass Through User-Controlled Key
What defenders are saying.
Crowdsourced verification outputs.
Results submitted by users who ran the verification payload against their environment.