HIGHCVSS 8.8Vulnerability

CVE-2026-46480

## Summary **Type:** Mass assignment via `Object.assign(entity, body)` -> client-controlled `workspaceId` (and on create, `id`) overwritten on the Evaluator entity -> cross-workspace data takeover and IDOR. **File:** `packages/server/src/Interface.Evaluation.ts` **Root cause:** The Evaluator controller/service constructs a `new Evaluator()` and copies the request body into it via `Object.assign(...)` without an explicit field allowlist. The request body therefore can include `workspaceId`, `id`, `createdDate`, `updatedDate`. The server only rebinds *some* of these after the assign (e.g. on create, it overwrites `workspaceId` but not `id`; on update, it overwrites `id` but not `workspaceId`). The remaining client-controlled values land directly on the persisted row, breaking workspace isolation. Same root pattern as the evaluator entity's sibling controllers and as `DocumentStore` before it was patched in commit 840d2ae. ## Affected Code **File:** `packages/server/src/Interface.Evaluation.ts` ```ts // at line 85 Object.assign(newEvaluator, body) // <-- BUG: body.id, body.workspaceId, body.createdDate, body.updatedDate accepted ``` **Why it's wrong:** `Object.assign(target, source)` copies every own enumerable property of `source` onto `target`. The TypeORM/SQL persistence layer below it does not strip ownership-bearing columns, so `workspaceId` set in the request body lands as the new `workspaceId` of the persisted row. The DocumentStore patch (commit 840d2ae) demonstrated the intended fix shape (explicit field-by-field allowlist) but it has not been applied to this entity. ## Exploit Chain 1. Attacker is an authenticated member of workspace A. They have a session cookie / JWT for the Flowise web UI. State at this point: attacker can read and write entities scoped to workspace A. 2. Attacker creates a evaluator in workspace A via the documented API (or reuses an existing one they own). They note its entity `id`. 3. Attacker issues a `PUT /api/v1/evaluato

Properties

summary
FlowiseAI: Evaluator create+update mass-assignment allows cross-workspace evaluator takeover
severity
HIGH
cvss_score
8.8
epss_score
0.00335
ghsa_published
2026-05-14T16:19:52Z
source_url
https://github.com/advisories/GHSA-wxrr-jp8m-qq7f
ghsa_updated
2026-05-14T20:55:43Z
ghsa_id
GHSA-wxrr-jp8m-qq7f
cve_id
CVE-2026-46480
cvss_vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
is_ghsa_only
false
epss_percentile
0.26236

Related Entities (5)

ENRICHED_BY (1)

[Source]FIRST EPSS

AFFECTS (1)

[Software]npm/flowise

HAS_WEAKNESS (1)

[Weakness]Improperly Controlled Modification of Dynamically-Determined Object Attributes

REPORTED_BY (1)

[Source]GitHub Advisory Database

VULNERABLE_TO (1)

[Software]npm/flowise

Explore deeper with Ninja Signal's threat intelligence graph

CVE-2026-46480 (CVSS 8.8) — Ninja Signal Threat Intelligence | Ninja Signal