Flowise (npm packages `flowise` and `flowise-components`) through 3.1.4 looks up credentials by...
zetlyn/cve-ghsa vulnerability ghsa GHSA-2jfx-whrm-9j49 cve CVE-2026-100609 known 2026-09-26
https://github.com/advisories/GHSA-2jfx-whrm-9j49
Properties
| cvss | 6.8receipt
What the source handed over{
"credits": [],
"cve_id": "CVE-2026-100609",
"cvss": {
"score": 6.8,
"vector_string": "CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:N"
},
"cvss_severities": {
"cvss_v3": {
"score": 6.8,
"vector_string": "CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:N"
},
"cvss_v4": {
"score": 7.6,
"vector_string": "CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X"
}
},
"cwes": [
{
"cwe_id": "CWE-639",
"name": "Authorization Bypass Through User-Controlled Key"
}
],
"description": "Flowise (npm packages `flowise` and `flowise-components`) through 3.1.4 looks up credentials by ID without filtering on the requesting user's workspace (findOneBy({ id: credentialId }) with no workspaceId condition) in several code paths: getAllOpenaiAssistants/getSingleOpenaiAssistant (GET /api/v1/openai-assistants and /api/v1/openai-assistants/:id), uploadFilesToAssistant (POST /api/v1/openai-assistants-file/upload/), deleteAssistant (DELETE /api/v1/assistants/:id, reachable by first importing a poisoned assistant row via POST /api/v1/export-import/import), and the shared helper used by getVoices (GET /api/v1/text-to-speech/voices). An authenticated user of one workspace can supply a credential UUID belonging to another workspace, causing the server to decrypt and use that workspace's OpenAI or ElevenLabs API key on the attacker's behalf. No patched version was available at the time of publication.",
"epss": {
"percentage": 0.00233,
"percentile": 0.12799
},
"ghsa_id": "GHSA-2jfx-whrm-9j49",
"github_reviewed_at": null,
"html_url": "https://github.com/advisories/GHSA-2jfx-whrm-9j49",
"identifiers": [
{
"type": "GHSA",
"value": "GHSA-2jfx-whrm-9j49"
},
{
"type": "CVE",
"value": "CVE-2026-100609"
}
],
"nvd_published_at": "2026-09-26T14:16:41Z",
"published_at": "2026-09-26T15:31:14Z",
"references": [
"https://github.com/FlowiseAI/Flowise/security/advisories/GHSA-27w2-26m5-x82c",
"https://nvd.nist.gov/vuln/detail/CVE-2026-100609",
"https://www.vulncheck.com/advisories/flowise-through-3.1.4-insecure-direct-object-reference-via-credential",
"https://github.com/advisories/GHSA-2jfx-whrm-9j49"
],
"repository_advisory_url": null,
"severity": "high",
"source_code_location": "",
"summary": "Flowise (npm packages `flowise` and `flowise-components`) through 3.1.4 looks up credentials by...",
"type": "unreviewed",
"updated_at": "2026-09-26T15:31:21Z",
"url": "https://api.github.com/advisories/GHSA-2jfx-whrm-9j49",
"vulnerabilities": [],
"withdrawn_at": null
} |
|---|---|
| cwe | CWE-639receipt
What the source handed over{
"credits": [],
"cve_id": "CVE-2026-100609",
"cvss": {
"score": 6.8,
"vector_string": "CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:N"
},
"cvss_severities": {
"cvss_v3": {
"score": 6.8,
"vector_string": "CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:N"
},
"cvss_v4": {
"score": 7.6,
"vector_string": "CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X"
}
},
"cwes": [
{
"cwe_id": "CWE-639",
"name": "Authorization Bypass Through User-Controlled Key"
}
],
"description": "Flowise (npm packages `flowise` and `flowise-components`) through 3.1.4 looks up credentials by ID without filtering on the requesting user's workspace (findOneBy({ id: credentialId }) with no workspaceId condition) in several code paths: getAllOpenaiAssistants/getSingleOpenaiAssistant (GET /api/v1/openai-assistants and /api/v1/openai-assistants/:id), uploadFilesToAssistant (POST /api/v1/openai-assistants-file/upload/), deleteAssistant (DELETE /api/v1/assistants/:id, reachable by first importing a poisoned assistant row via POST /api/v1/export-import/import), and the shared helper used by getVoices (GET /api/v1/text-to-speech/voices). An authenticated user of one workspace can supply a credential UUID belonging to another workspace, causing the server to decrypt and use that workspace's OpenAI or ElevenLabs API key on the attacker's behalf. No patched version was available at the time of publication.",
"epss": {
"percentage": 0.00233,
"percentile": 0.12799
},
"ghsa_id": "GHSA-2jfx-whrm-9j49",
"github_reviewed_at": null,
"html_url": "https://github.com/advisories/GHSA-2jfx-whrm-9j49",
"identifiers": [
{
"type": "GHSA",
"value": "GHSA-2jfx-whrm-9j49"
},
{
"type": "CVE",
"value": "CVE-2026-100609"
}
],
"nvd_published_at": "2026-09-26T14:16:41Z",
"published_at": "2026-09-26T15:31:14Z",
"references": [
"https://github.com/FlowiseAI/Flowise/security/advisories/GHSA-27w2-26m5-x82c",
"https://nvd.nist.gov/vuln/detail/CVE-2026-100609",
"https://www.vulncheck.com/advisories/flowise-through-3.1.4-insecure-direct-object-reference-via-credential",
"https://github.com/advisories/GHSA-2jfx-whrm-9j49"
],
"repository_advisory_url": null,
"severity": "high",
"source_code_location": "",
"summary": "Flowise (npm packages `flowise` and `flowise-components`) through 3.1.4 looks up credentials by...",
"type": "unreviewed",
"updated_at": "2026-09-26T15:31:21Z",
"url": "https://api.github.com/advisories/GHSA-2jfx-whrm-9j49",
"vulnerabilities": [],
"withdrawn_at": null
} |
| severity | high From 7.0 to 8.9. receipt
What the source handed over{
"credits": [],
"cve_id": "CVE-2026-100609",
"cvss": {
"score": 6.8,
"vector_string": "CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:N"
},
"cvss_severities": {
"cvss_v3": {
"score": 6.8,
"vector_string": "CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:N"
},
"cvss_v4": {
"score": 7.6,
"vector_string": "CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X"
}
},
"cwes": [
{
"cwe_id": "CWE-639",
"name": "Authorization Bypass Through User-Controlled Key"
}
],
"description": "Flowise (npm packages `flowise` and `flowise-components`) through 3.1.4 looks up credentials by ID without filtering on the requesting user's workspace (findOneBy({ id: credentialId }) with no workspaceId condition) in several code paths: getAllOpenaiAssistants/getSingleOpenaiAssistant (GET /api/v1/openai-assistants and /api/v1/openai-assistants/:id), uploadFilesToAssistant (POST /api/v1/openai-assistants-file/upload/), deleteAssistant (DELETE /api/v1/assistants/:id, reachable by first importing a poisoned assistant row via POST /api/v1/export-import/import), and the shared helper used by getVoices (GET /api/v1/text-to-speech/voices). An authenticated user of one workspace can supply a credential UUID belonging to another workspace, causing the server to decrypt and use that workspace's OpenAI or ElevenLabs API key on the attacker's behalf. No patched version was available at the time of publication.",
"epss": {
"percentage": 0.00233,
"percentile": 0.12799
},
"ghsa_id": "GHSA-2jfx-whrm-9j49",
"github_reviewed_at": null,
"html_url": "https://github.com/advisories/GHSA-2jfx-whrm-9j49",
"identifiers": [
{
"type": "GHSA",
"value": "GHSA-2jfx-whrm-9j49"
},
{
"type": "CVE",
"value": "CVE-2026-100609"
}
],
"nvd_published_at": "2026-09-26T14:16:41Z",
"published_at": "2026-09-26T15:31:14Z",
"references": [
"https://github.com/FlowiseAI/Flowise/security/advisories/GHSA-27w2-26m5-x82c",
"https://nvd.nist.gov/vuln/detail/CVE-2026-100609",
"https://www.vulncheck.com/advisories/flowise-through-3.1.4-insecure-direct-object-reference-via-credential",
"https://github.com/advisories/GHSA-2jfx-whrm-9j49"
],
"repository_advisory_url": null,
"severity": "high",
"source_code_location": "",
"summary": "Flowise (npm packages `flowise` and `flowise-components`) through 3.1.4 looks up credentials by...",
"type": "unreviewed",
"updated_at": "2026-09-26T15:31:21Z",
"url": "https://api.github.com/advisories/GHSA-2jfx-whrm-9j49",
"vulnerabilities": [],
"withdrawn_at": null
} |
Text
Flowise (npm packages `flowise` and `flowise-components`) through 3.1.4 looks up credentials by...
Flowise (npm packages `flowise` and `flowise-components`) through 3.1.4 looks up credentials by ID without filtering on the requesting user's workspace (findOneBy({ id: credentialId }) with no workspaceId condition) in several code paths: getAllOpenaiAssistants/getSingleOpenaiAssistant (GET /api/v1/openai-assistants and /api/v1/openai-assistants/:id), uploadFilesToAssistant (POST /api/v1/openai-assistants-file/upload/), deleteAssistant (DELETE /api/v1/assistants/:id, reachable by first importing a poisoned assistant row via POST /api/v1/export-import/import), and the shared helper used by getVoices (GET /api/v1/text-to-speech/voices). An authenticated user of one workspace can supply a credential UUID belonging to another workspace, causing the server to decrypt and use that workspace's OpenAI or ElevenLabs API key on the attacker's behalf. No patched version was available at the time of publication.