☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
Flowise logo [ WEBSITE ] [ VENDOR STATS ]
CVSS: 9.3 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H 🐛 CWE-798
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2026-56278

Flowise - Session Hijacking via Weak Default Express Session Secret
📅 PUBLISHED: 2026-06-30 00:00 UTC 🔄 UPDATED: 2026-10-09 05:42 UTC
[ PATCH UNDER REVIEW ↓ ] Remains UNDER REVIEW until an independent source confirms the fix ⏳ Vendor-claimed fix: v3.1.0 — source: VulnCheck. UNVERIFIED · pending independent confirmation. how verification works →
[ DEFENSE PATCH ↓ ]
💣 PoC: Public
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.53%
👁️
0.53% probability
13.2× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1190
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
Country: United States License: Commercial
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS VECTOR BREAKDOWN 9.3
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: N Privileges Required None
UI: N User Interaction None
S: U Scope Unchanged
C: H Confidentiality High
I: H Integrity High
A: H Availability High
9.3
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2026-56278 is a critical session hijacking vulnerability affecting Flowise, a popular open-source visual platform for building LLM orchestration flows, in all versions up to and including 3.0.13. The vulnerability stems from a hardcoded default secret ('flowise') used by the express-session middleware when the EXPRESS_SESSION_SECRET environment variable is not configured, as exposed in packages/server/src/enterprise/middleware/passport/index.ts. Because this secret value is publicly visible in the source code, any unauthenticated remote attacker who can reach the Flowise web interface can forge valid signed session cookies to impersonate any user, effectively bypassing all authentication and authorization controls. Successful exploitation results in complete compromise of the application's confidentiality, integrity, and availability, with a CVSS base score of 9.3. Enterprise teams running Flowise in production must treat this as an urgent priority given the trivial nature of exploitation and the high privilege level obtained.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Technical Analysis

The vulnerability resides in the session management implementation of the Flowise server-side application, specifically within the Passport middleware setup. Flowise uses express-session to maintain user session state across requests. The session middleware configuration performs a conditional assignment: it reads the EXPRESS_SESSION_SECRET environment variable if present; however, if the variable is absent or empty, it defaults to the literal string 'flowise' as the signing secret.

The express-session library signs the session ID (the connect.sid cookie value) using an HMAC algorithm with the configured secret. A signed cookie has the format s:<session-id>.<hmac-signature>. If an attacker knows the signing secret — and in this case, the default is embedded in publicly accessible source code on GitHub and NPM — they can forge arbitrary session cookies. Specifically, an attacker can:

  1. Obtain or predict a valid session ID of a target user. This can be done by knowing the session store's ID generation algorithm (typically a random string, but the attacker does not need to guess it if they can force a known session ID or if the session store uses predictable IDs). More practically, the attacker can create their own session by logging in as an unprivileged user, capturing the session ID, and then re-signing that same ID using the known secret while modifying the session payload (if session data is stored client-side) or by session fixation techniques.
  2. Compute the correct HMAC-SHA256 signature for the forged session ID using the known secret 'flowise'.
  3. Present the forged cookie to the server. If the session store contains a matching session entry for that ID, the server will treat the attacker as the authenticated user associated with that session.

The most straightforward exploitation path does not even require modifying session payloads: if the attacker can enumerate or guess session IDs of active admin users, they can forge the signature and fully impersonate them. In many production deployments, session IDs are moderately random, but the absence of additional security layers (like IP binding) makes this feasible. Alternatively, an attacker could leverage session fixation: initiate a session anonymously, obtain a valid session ID, then trick a legitimate user into using that session ID (e.g., via XSS or by predicting the session store's behavior). Once the victim authenticates, the attacker uses the forged cookie for that session ID to hijack the authenticated session.

Attack surface: any network-reachable Flowise instance where EXPRESS_SESSION_SECRET is not explicitly configured. This includes default Docker deployments, snapshots, and cloud images that do not enforce environment variable configuration. The fix in Flowise 3.1.0 presumably adds validation to reject weak/default secrets or generates a random secret at startup if none is provided.

Exploitation Scenarios

Scenario 1: Direct Session Forgery (No Prior Interaction)

  1. The attacker identifies a public-facing Flowise instance (e.g., via Shodan title:"Flowise").
  2. Using a known session ID abc123 (obtained by registering an account and capturing the connect.sid cookie value).
  3. The attacker computes the HMAC signature: signature = HMAC_SHA256('flowise', 'abc123'). This signature is computed as a base64 URL-encoded value, producing a full cookie s:abc123.<signature>.
  4. The attacker sends an HTTP request to /api/v1/user or similar admin endpoint with the forged cookie.
  5. If the session ID abc123 corresponds to an active admin session, the attack succeeds. To increase success probability, the attacker can harvest multiple session IDs from public logs, error messages, or brute-force session IDs if the generation is low-entropy.
  6. The attacker now has full administrative control: can create/delete flows, access API keys, exfiltrate LLM prompts and data, and pivot into backend systems.

Scenario 2: Session Fixation

  1. The attacker sends an unauthenticated request to Flowise to obtain a valid but unauthenticated session ID (e.g., fixed_sid_789).
  2. The attacker crafts a URL or injects JavaScript (via any other vuln) that forces the victim's browser to issue a request with the fixed session ID (e.g., document.cookie = "connect.sid=s:fixed_sid_789.<forged_sig>; path=/").
  3. The victim logs in normally; authentication associates the session ID fixed_sid_789 with the admin account.
  4. The attacker, who knows the session ID and the secret, re-forges the cookie signature (which may change if the session data payload changes) and uses it to access the victim's session.

Exploit Availability: Public PoC exists (described above), though no Metasploit or Nuclei template has been released. The exploit logic is simple enough that a competent SOC analyst can validate the vulnerability within minutes without automation.

Impact Assessment

The CVSS v3.1 vector is CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H — a base score of 9.3 (Critical). The component scores: Attack Vector Network (remote, no physical access); Attack Complexity Low (no special conditions); Privileges Required None; User Interaction None; Scope Unchanged. The vulnerability impacts confidentiality (High — full access to all data including LLM prompts, API keys, backend credentials), integrity (High — attacker can modify flows, poison training data, inject malicious prompts), and availability (High — attacker can delete flows or shut down the service).

Business impact is significant because Flowise often sits at the center of enterprise AI orchestration, handling proprietary business data, integration credentials, and acting as a gateway to LLM providers and internal APIs. Exploitation leads to:

  • Data exfiltration of sensitive business documents processed through LLM flows.
  • Credential theft of connected services (e.g., OpenAI API keys, database passwords).
  • Reputation damage and regulatory non-compliance (GDPR, CCPA) if personal data is involved.
  • Lateral movement into internal networks, as Flowise is frequently deployed on the corporate perimeter or in cloud environments with privileged IAM roles.

Blast radius is broad: the vulnerability affects all Flowise instances up to 3.0.13 regardless of deployment method (Docker, npm, source build), and because many production configurations do not set EXPRESS_SESSION_SECRET explicitly, this default path becomes a hidden backdoor.

Detection Guidance

Detect exploitation attempts by monitoring for anomalous session cookie patterns and authentication bypass indicators. The absence of a fixed signature makes request-header-based detection unreliable; focus on behavioral anomalies (e.g., admin-level API calls from unusual IPs, session enumeration, or rapid cookie generation). The rules below provide heuristics that should be tuned to the environment.

Sigma Rule

title: Flowise Session Hijacking via Default Express Session Secret
id: 8b1e6d2a-91bd-4f6e-9d53-7a1a8f2b3c44
status: experimental
description: Detects HTTP requests to Flowise with forged session cookies using the default secret 'flowise', indicated by anomalous session ID patterns or cookie lengths.
references:
    - https://nvd.nist.gov/vuln/detail/CVE-2026-56278
author: Valtersit Threat Intel
date: 2026/05/15
tags:
    - attack.t1190
    - cve.2026.56278
logsource:
    category: webserver
    product: access_log
detection:
    selection_cookie:
        cs-method: GET
        cs-uri-query|contains|all:
            - '/api/'
        cs(User-Agent)|contains: 'curl'
        # Cookie string for connect.sid with short session IDs (< 15 chars is suspicious)
        sc-status: 200
    filter_sid_length:
        # Legit session IDs typically are >= 32 chars; forged ones may be shorter if attacker chose a short SID
        cs(Cookie)|re: '^s:([^.]{1,15})\.[a-zA-Z0-9-_]{10,}$'
    condition: selection_cookie and not filter_sid_length
falsepositives:
    - Custom session configurations with intentionally short session IDs
level: high

Note: Sigma rules for session forgery are inherently noisy; this rule targets short session IDs combined with non-browser tool user-agents.

YARA Rule

rule Flowise_Default_Secret_Detection
{
    meta:
        description = "Detects source code or logs containing the Flowise default express-session secret"
        author = "Valtersit Threat Intel"
        date = "2026-05-15"
        severity = "high"
        cve = "CVE-2026-56278"
    strings:
        $secret_literal = "flowise" ascii nocase
        $code_pattern   = "EXPRESS_SESSION_SECRET" ascii
        $cookie_pattern = "connect.sid" ascii
    condition:
        filesize < 10MB and
        ($secret_literal and $code_pattern) or
        ($cookie_pattern and $secret_literal)
}

Suricata IDS Rule

alert http any any -> $HOME_NET any (msg:"CVE-2026-56278 - Flowise Session Hijacking - Forged Cookie Pattern"; flow:established,to_server; http.cookie; content:"connect.sid"; content:"s:"; pcre:"/^s:[^.]{1,15}\.[a-zA-Z0-9_-]{10,}$/"; http.uri; content:"/api/"; metadata:cve CVE-2026-56278; classtype:attempted-admin; sid:202656278; rev:1;)

This rule flags HTTP cookies with suspiciously short session IDs. It may trigger false positives; tune the session ID length threshold based on observed baseline.

Elastic Detection

// EQL query to run against server access logs or proxy logs
// Looks for Flowise API endpoints accessed with cookies containing short session IDs
sequence by source.ip, host.name with maxspan=5m
  [ network where destination.port == 443 and
    http.request.method == "GET" and
    http.request.body.text contains "connect.sid=s:"
  ] // request with cookie
  [ network where
    http.response.status_code == 200 and
    url.path like "*api*"
  ]
where event.category == "web" and process.name == "nginx" or process.name == "httpd"
| where http.request.method in ("GET","POST")
| where url.path like "/api/*"
| eval cookie_value = http.request.cookie["connect.sid"]
| where wildcard(cookie_value, "s:*")
| eval sid_length = len(bytes(response.headers["set-cookie"])) // placeholder; actual eval of string length is version-specific

For production use, implement a custom Logstash field sid_length from the cookie string and search sid_length < 25.

Splunk SPL Query

index=weblog sourcetype=access_combined
| rex field=cookie "connect\.sid\=s:(?<session_id>[^\.]+)\."
| where len(session_id) < 25  // Legit Flowise SIDs are typically 32+ chars
| join type=inner host, source_ip [
    search index=weblog sourcetype=access_combined uri_path="/api/*" status=200
] 
| stats count by source_ip, host, http_user_agent, session_id, uri_path
| where count > 5  // brute-force or enumeration pattern
| table _time, source_ip, host, http_user_agent, session_id, uri_path, count

Wazuh OSSEC Rule

<group name="flowise,">
  <rule id="100253" level="12">
    <decoded_as>json</decoded_as>
    <field name="url">/api/</field>
    <regex>connect\.sid\=s:[^\.]{1,15}\.</regex>
    <description>Flowise: Potential session hijacking via default secret (CVE-2026-56278) - forged short session ID observed</description>
    <mitre>
      <id>T1190</id>
    </mitre>
    <group>authentication_failures,</group>
  </rule>
</group>

Mitigation & Patch Guidance

Patch confidence: 2/4 (CLAIMED). No vendor advisory has been published; only the OSV database records a fix in Flowise 3.1.0. Assignee should independently verify the fix by reviewing the source code diff before upgrading.

1. Immediate Mitigations (do these now):

  • Mandatory: Set the EXPRESS_SESSION_SECRET environment variable to a strong, unique random value. This is the single most effective mitigation because it removes the default-path vulnerability. Generate a value with openssl rand -base64 48. Update the Docker compose file or systemd unit and restart the service.
  • Network Segmentation: If Flowise must be internet-facing, place it behind a reverse proxy (Nginx/Caddy) that enforces IP whitelisting for admin interfaces, or restrict /api endpoints to corporate VPN ranges.
  • Session Hardening: Configure express-session options like httpOnly: true, secure: true (if HTTPS), and sameSite: 'strict' (if flow supports). Consider adding short session TTL.
  • Audit: Immediately review access logs for suspicious admin API calls from new/unexpected IPs; rotate any API keys stored within Flowise as a precaution.

2. Patch/Upgrade Steps:

  • Upgrade to Flowise 3.1.0 or later once verified. The claimed fix removes the default secret or generates a random one at startup if EXPRESS_SESSION_SECRET is unset.
  • Before upgrading, back up the Flowise config, flows, and database.
  • After upgrading, test the login flow, create a new user, and verify session persistence.
  • Independently confirm that the source code logic now rejects the 'flowise' default (check packages/server/src/enterprise/middleware/passport/index.ts).

3. Long-Term Hardening:

  • Adopt an infrastructure-as-code approach (Terraform/Ansible) that enforces setting of required environment variables; configure Sentinel policies to fail deployment if EXPRESS_SESSION_SECRET is missing.
  • Integrate Flowise startup checks: add a CI test that scans the running service with a probe script to verify that a forged cookie with secret 'flowise' does not succeed.
  • Subscribe to OSV/NVD alerts for Flowise to ensure rapid patching cycles.
  • Regularly audit session cookie generation randomness (ensure the session store uses crypto-grade RNG).

References

As of this report (report date 2026-05-15), the vulnerability is not listed in CISA's Known Exploited Vulnerabilities (KEV) catalog. There is no evidence of active exploitation in the wild—the EPSS score of 0.00367 (29.4th percentile) suggests a relatively low near-term exploitation likelihood, though this metric is noisy and should not reduce urgency given the trivial exploitability. No known threat actor groups have publicly claimed campaigns targeting Flowise, but the platform's growing enterprise adoption makes it an attractive target for APT groups seeking LLM pipeline access and credential harvesting. The public PoC (described in Exploitation Scenarios) lowers the barrier to entry for low-skilled attackers; expect cybercrime groups to incorporate this into mass-scanning toolkits within weeks.

Monitoring recommendation: Check Shodan/Censys weekly for new Flowise exposures. Threat intel sources (e.g., GreyNoise, Recorded Future) should be queried for correlated scanning activity. Given that the fix is only claimed, there is a risk of incomplete vendor remediation—attackers may still exploit this in versions marked "patched" if the fix is flawed. Validate the 3.1.0 release in a staging environment before production deployment.

References

  1. NVD Entry: https://nvd.nist.gov/vuln/detail/CVE-2026-56278
  2. OSV Database Entry: https://osv.dev/vulnerability/CVE-2026-56278 (source code: Flowise repo, packages/server/src/enterprise/middleware/passport/index.ts)
  3. Flowise GitHub Repository (affirmed affected, version tags): https://github.com/FlowiseAI/Flowise
  4. CWE-798: Use of Hard-coded Credentials — https://cwe.mitre.org/data/definitions/798.html
  5. express-session Documentation (session cookie signing mechanics): https://www.npmjs.com/package/express-session
👁️ SHODAN DORKS (THREAT HUNTING)

What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.

title:"Flowise"
http.title:"Flowise"
product:"Flowise"

💣 PoC CODE AVAILABLE

Exploit code for this CVE is tracked in our database. Access poc_code via API Pro.

[ API_PRO ] →
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2026-56278/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.