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

CVE-2026-90533

CVE-2026-90533 Vulnerability in Flowise
📅 PUBLISHED: 2026-09-12 00:00 UTC 🔄 UPDATED: 2026-10-11 17:46 UTC
[ OFFICIAL PATCH DEPLOYED ↓ ] FIX: LIKELY — 2 distinct-origin sources confirm fix
[ DEFENSE PATCH ↓ ]
💣 PoC: Public
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.34%
👁️
0.34% probability
8.4× 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: USA License: Open Source
Affected: Flowise — upgrade to patched release
CVSS VECTOR BREAKDOWN 6.5
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: L Privileges Required Low
UI: N User Interaction None
S: U Scope Unchanged
C: H Confidentiality High
I: N Integrity None
A: N Availability None
6.5
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2026-90533 is a broken access control (CWE-862) vulnerability in Flowise, an open-source low-code LLM application builder, affecting all versions before 3.1.4. The endpoint GET /api/v1/organizationuser fails to enforce authorization scoping, allowing any authenticated organization member to retrieve the full user record of the organization owner — including the owner's bcrypt password hash and temporary tokens. Successful exploitation exposes the highest-privileged account's credential material, enabling offline password cracking and full account takeover of the organization owner.

⚡ 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 class here is missing authorization (CWE-862) — the application performs authentication but does not verify that the requesting principal is permitted to access the specific object being requested. This is a horizontal-to-vertical privilege escalation pattern: a low-privilege authenticated user (any organization member) can reach an object owned by a high-privilege principal (the organization owner).

The attack surface is the REST API endpoint GET /api/v1/organizationuser, which according to the NVD description returns a user record. The endpoint accepts a user ID parameter (the description states an attacker "can query the endpoint with any user ID"), meaning the server trusts a client-supplied identifier without binding it to the authenticated session's own organization membership or role. Because no server-side check confirms that the caller is the owner or an administrator, the response object is returned to any authenticated organization member.

The sensitivity arises from the contents of the returned record rather than from code execution. Per the description, the response includes:

  • the owner's bcrypt password hash, and
  • temporary tokens.

Exposing a bcrypt hash does not yield immediate plaintext credentials, but bcrypt is a password-based key derivation function and is therefore vulnerable to offline dictionary and brute-force cracking proportional to password entropy and cost factor. Weak or reused owner passwords are recoverable in practical timeframes with commodity GPU hardware. Temporary tokens, by contrast, may be usable directly if they remain valid at the time of retrieval, collapsing the attack from "crack-then-login" into "replay-now."

No function names, internal class names, middleware identifiers, or database schema details are available in the supplied data; the analysis above is limited to the endpoint, the object returned, the role relationship described, and the CWE classification. Nothing further should be inferred about the implementation.

Exploitation Scenarios

No public proof-of-concept, Nuclei template, or exploit code was identified for this CVE. The attack chain below is inferred from the vulnerability class (CWE-862, broken access control) and the explicit details in the NVD description. No public PoC available; attack chain is inferred from vulnerability class.

1) Reconnaissance / target identification. An attacker identifies an internet-exposed or internally reachable Flowise instance running a version below 3.1.4. Shodan enumeration using the HTTP title/body markers Flowise and the application favicon hash identifies candidate hosts. The attacker must obtain at least one valid low-privilege account within the target organization — this can come from a legitimate but limited account, a compromised member credential, or self-registration where the deployment permits it. Authentication is a hard prerequisite: the CWE-862 flaw is an authorization failure, not an authentication bypass.

2) Triggering the flaw class. With a valid member session, the attacker issues a request to GET /api/v1/organizationuser, supplying a user ID. Because the endpoint does not verify that the requested ID belongs to the caller or that the caller holds owner/admin privileges, the authorization control is absent or ineffective. The attacker enumerates or guesses the owner's user ID — sequential, low-entropy, or otherwise predictable identifiers make this trivial; the description's phrasing ("query the endpoint with any user ID") indicates no ownership validation is enforced on the identifier.

3) Payload / execution method. At the vulnerability-class level, exploitation is a single authenticated HTTP GET with a manipulated identifier — no injection payload, no code execution, and no special tooling. Data exfiltration is achieved simply by reading the JSON response body, which contains the owner's full user record: bcrypt password hash and temporary tokens.

4) Post-exploitation impact. The attacker removes the hash from the environment and cracks it offline with tools such as hashcat (mode 3200 for bcrypt), avoiding any further network contact and therefore any lockout or rate-limit countermeasures. Alternatively, if the temporary tokens are still within their validity window, the attacker uses them directly to assume the owner session. Either path yields account takeover of the organization's highest-privileged account, from which the attacker inherits the owner's access to flows, credentials, connected model providers, API keys, and any downstream systems those integrations reach.

Detection opportunity. Because the exploit is a well-formed, authenticated GET, it will not trigger injection-oriented signatures. Detection must rely on behavioral signals: a single member account requesting organizationuser with an ID that does not match its own, repeated requests with varying IDs (enumeration), or a rapid sequence of GETs to that path in a short window.

Impact Assessment

The confidentiality impact is high: the vulnerability discloses credential material (bcrypt hash) and temporary tokens belonging to the most privileged account in the organization. Integrity and availability impacts on the vulnerable component are indirect but severe — once the owner account is taken over, the attacker can modify or delete flows, exfiltrate connected secrets, and pivot through any integration the owner administers.

Under the modeled CVSS v3.1 vector CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N, the base characteristics are: Network attack vector (the API is typically reachable over HTTP/HTTPS), Low attack complexity (a single crafted request), Low privileges required (any authenticated organization member), No user interaction, Unchanged scope, High confidentiality impact, and No direct integrity or availability impact at the moment of exploitation. EPSS has not yet scored this CVE; no exploit-in-the-wild evidence and no CISA KEV listing were identified.

Blast radius. Every Flowise deployment below 3.1.4 that (a) exposes the API to untrusted networks and (b) has more than one user in an organization is potentially affected. Multi-tenant or multi-member workspaces carry the widest exposure because the precondition — an authenticated member account — is easiest to satisfy. Single-user, non-exposed deployments carry minimal practical risk. The upstream consequence of a successful exploit is disproportionate to the entry cost: a low-privilege member escalates straight to the owner, the account most likely to hold API keys for OpenAI, Anthropic, or other model providers, database credentials, and webhook secrets.

Detection Guidance

Sigma Rule

title: Flowise Broken Access Control - Organization User Enumeration (CVE-2026-90533)
id: 8f2c1a44-9053-4d7b-b6e1-0a7c5e21d9aa
status: experimental
description: Detects authenticated requests to the Flowise organizationuser API endpoint that may indicate unauthorized retrieval of the organization owner's user record, including password hash and temporary tokens.
references:
  - https://nvd.nist.gov/vuln/detail/CVE-2026-90533
author: Valters IT Threat Intelligence
date: 2026-01-01
tags:
  - attack.t1190
  - attack.initial_access
  - cve.2026-90533
logsource:
  category: webserver
detection:
  selection_endpoint:
    cs-uri-stem|contains: '/api/v1/organizationuser'
    cs-method: 'GET'
  selection_suspicious:
    cs-uri-query|contains:
      - 'userId='
      - 'id='
  condition: selection_endpoint
fields:
  - c-ip
  - cs-username
  - cs-uri-query
  - sc-status
falsepositives:
  - Legitimate administrative consoles retrieving their own user record
  - Organization management UI performing routine profile lookups
level: medium

YARA Rule

rule CVE_2026_90533_Flowise_OrganizationUser_BAC
{
    meta:
        description = "Detects Flowise source or build artifacts referencing the vulnerable organizationuser endpoint (CVE-2026-90533, pre-3.1.4)"
        author = "Valters IT Threat Intelligence"
        reference = "https://nvd.nist.gov/vuln/detail/CVE-2026-90533"
        date = "2026-01-01"
        severity = "high"

    strings:
        $ep = "/api/v1/organizationuser" ascii wide nocase
        $ep2 = "organizationuser" ascii wide nocase
        $ver = "flowise" ascii wide nocase

    condition:
        $ver and any of ($ep*)
}

Suricata IDS Rule

alert http any any -> any any (msg:"CVE-2026-90533 Flowise Organization User Access Control Bypass Attempt"; flow:established,to_server; http.method; content:"GET"; http.uri; content:"/api/v1/organizationuser"; http.uri; content:"userId="; fast_pattern; threshold:type both, track by_src, count 10, seconds 60; classtype:attempted-user; reference:cve,2026-90533; reference:url,nvd.nist.gov/vuln/detail/CVE-2026-90533; sid:9005331; rev:1;)

Elastic Detection

sequence by user.name with maxspan=5m
  [http where http.request.method == "GET" and
    http.request.path == "/api/v1/organizationuser"]
  [http where http.request.method == "GET" and
    http.request.path == "/api/v1/organizationuser"]

Splunk SPL Query

index=web sourcetype=access_common
| search method=GET uri_path="/api/v1/organizationuser*"
| rex field=uri_query "userId=(?<requested_user_id>[^&]+)"
| stats count min(_time) as first_seen max(_time) as last_seen
        values(requested_user_id) as requested_ids
        dc(requested_user_id) as distinct_ids
        by src_ip user
| where count > 3 OR distinct_ids > 1
| eval first_seen=strftime(first_seen,"%Y-%m-%d %H:%M:%S"),
       last_seen=strftime(last_seen,"%Y-%m-%d %H:%M:%S")
| sort - count

Wazuh OSSEC Rule

<group name="flowise,web,access_control,">
  <rule id="100533" level="10">
    <decoded_as>json</decoded_as>
    <field name="url">/api/v1/organizationuser</field>
    <field name="method">GET</field>
    <description>CVE-2026-90533 - Flowise organizationuser endpoint accessed; possible broken access control / owner record disclosure attempt.</description>
    <mitre>
      <id>T1190</id>
    </mitre>
  </rule>

  <rule id="100534" level="12" frequency="5" timeframe="120">
    <if_matched_sid>100533</if_matched_sid>
    <same_source_ip />
    <description>CVE-2026-90533 - Repeated Flowise organizationuser requests from same source; suspected user ID enumeration.</description>
    <mitre>
      <id>T1190</id>
    </mitre>
  </rule>
</group>

Mitigation & Patch Guidance

Patch confidence: 0/4 — UNPATCHED. No patch evidence from any tracked source. No vendor advisory, commit reference, or hotfix was supplied in the source data. The version boundary below (< 3.1.4) is derived solely from the NVD description. Treat patch availability as unverified and confirm with the vendor before relying on an upgrade as the sole control.

1) Immediate mitigations (assume no patch is available).

  • Restrict network access to the Flowise management API. Place /api/v1/organizationuser and the rest of the API behind a VPN, mTLS gateway, or IP allowlist so that only trusted administrative networks can reach it. This removes the exposed attack surface that makes the precondition (any authenticated member) reachable.
  • Enforce strict, non-predictable user identifiers if the deployment's user IDs are sequential or low-entropy. Note that this is defense-in-depth only — the underlying flaw is missing authorization, not identifier guessability.
  • Apply a reverse-proxy or API-gateway authorization rule that rejects GET /api/v1/organizationuser requests where the requested user ID does not match the authenticated session's own ID, or where the caller lacks an owner/admin role. This compensates for the missing application-layer check.
  • Reduce the member population: audit organizations for stale or unnecessary member accounts and remove them, since the vulnerability requires only one valid member session.
  • Rotate credentials and invalidate sessions/tokens for organization owner accounts in any deployment where source-IP logs show the endpoint was accessed by a non-owner. Treat owner bcrypt hashes and temporary tokens as potentially compromised; rotate all API keys and downstream secrets the owner account can reach.

2) Patch / upgrade steps.

  • Upgrade Flowise to 3.1.4 or later, which is the version boundary given in the NVD description. Because no patch reference is available, verify the fix by (a) confirming the deployed version after upgrade and (b) re-testing the endpoint with a low-privilege member account to confirm it can no longer retrieve another user's record. Do not assume the upgrade resolves the issue without verification.
  • Re-run the credential rotation step above for any deployment that was exposed while running a vulnerable version.

3) Long-term hardening.

  • Adopt object-level authorization as a first-class control: every API handler that accepts an object identifier must bind that identifier to the authenticated principal's own scope or verified role. Broken access control at the endpoint level (CWE-862) is a recurring class and is not eliminated by input validation or WAF rules alone.
  • Implement centralized authorization middleware and enforce it by default so new endpoints inherit a deny-by-default posture rather than requiring per-handler opt-in.
  • Add continuous authorization testing (automated regression suites and periodic manual review) to CI/CD so that object-level access failures are caught before release.
  • Instrument and alert on sensitive-endpoint access patterns — particularly single-object retrieval endpoints that return credential material — and avoid returning credential hashes or temporary tokens in any API response at all.
  • Maintain an asset inventory with version tracking so affected Flowise instances can be located and remediated quickly when a patch lands.

References

Exploit-in-the-wild and threat actor note: No public proof-of-concept, Nuclei template, or exploit code was identified for CVE-2026-90533 at the time of writing, and the CVE is not listed in CISA KEV. No threat actor campaign has been attributed. Exploitation requires a valid low-privilege authenticated account and is a single, non-noisy authenticated request, making real-world abuse plausible but difficult to detect without the behavioral monitoring described above. Treat "no PoC" as a current-state observation, not a durable one — broken access control vulnerabilities are frequently weaponized quickly once disclosed.

👁️ 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.

http.title:

💣 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-90533/ · 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.