medium

GHSA-2364-jh4q-m9vm

npm · flowise

Summary

Flowise: IDOR vulnerability exists at the GET /api/v1/organization/customer-default-source endpoint

Severity
medium
CWE
CWE-639
Published
2026-08-04
Updated
2026-08-04

Advisory details

Summary

An Insecure Direct Object Reference (IDOR) vulnerability exists at the GET /api/v1/organization/customer-default-source endpoint. This flaw allows an authenticated attacker to bypass authorization checks and retrieve sensitive payment and profile information of other customers by manipulating the customerId parameter. The exposed data includes email addresses, account balances, currency types, and internal billing configurations.

Details

The application fails to implement proper object-level access control. While the endpoint requires a valid session/token, it does not verify if the requesting user has the authority to access the specific customerId provided in the query string.

When a request is made to: GET /api/v1/organization/customer-default-source?customerId=cus_XXXX

The server processes the request based solely on the existence of a valid session, returning the data associated with the ID regardless of the data owner's identity. Since customer IDs follow a predictable pattern (Stripe-formatted cus_...), an attacker could potentially enumerate these IDs to scrape customer data.

PoC

  1. To reproduce the vulnerability, follow these steps:

  2. Log in to your account at cloud.flowiseai.com.

  3. Capture a request to the payment source endpoint using a proxy tool (e.g., Burp Suite).

  4. Change the customerId parameter in the URL to a target user's ID (e.g., cus_U9ajkQvu0e67uH).

Execute the request:

GET /api/v1/organization/customer-default-source?customerId=cus_U9ajkQvu0e67uH HTTP/2
Host: cloud.flowiseai.com
Cookie: [YOUR_AUTHENTICATED_COOKIES]
...

Response:

{
  "id": "cus_U9ajkQvu0e67uH",
  "object": "customer",
  "email": "truongnguyen210044@gmail.com",
  "balance": 0,
  "currency": "usd",
  "invoice_settings": {
    "custom_fields": null,
    "default_payment_method": null
  },
  "livemode": true
  ...
}

The server returns a 200 OK status with the private data of the target customer.

Impact

References

Related advisories

Is your project exposed to this? Stateward checks every dependency on every pull request and flags it only if your code actually reaches it.

Check my repo

Summarize with AI

ChatGPTClaudePerplexity

Sources: CISA KEV (public domain), OSV.dev & GitHub Advisory Database (CC-BY-4.0), FIRST EPSS, NVD/CWE (public domain). Served live from the Stateward advisory database.