May 21, 2026·5 min read·28 visits
Flowise versions prior to 3.1.2 fail to filter incoming data on the user profile update endpoint. Authenticated attackers can supply a `credential` parameter to overwrite their password hash directly, establishing persistence without knowing the current password.
A mass assignment vulnerability in the Flowise profile update endpoint allows authenticated users to directly modify their database records. By injecting the `credential` field into a `PUT` request, an attacker can overwrite their password hash, bypassing standard security controls and enabling persistent account access.
Flowise relies on an API endpoint located at PUT /api/v1/user to handle updates to user profile information. This endpoint correctly implements authorization checks to ensure that a user can only modify their own profile data. This specific check prevents direct insecure direct object reference (IDOR) attacks against other accounts.
However, the endpoint lacks input validation and filtering on the attributes provided in the request body. This absence of filtering leads to a mass assignment vulnerability, classified under CWE-915.
An authenticated attacker can supply arbitrary database fields within the JSON payload. The application blindly maps these fields to the underlying user entity. This allows unauthorized modification of sensitive account parameters, including the user's password hash.
The vulnerability originates in the request handling logic of the user controller. The application extracts the id from the request body and compares it against the authenticated session token. If the IDs match, the controller forwards the entire req.body object to the service layer without restricting the allowed keys.
Within UserService.updateUser, the application leverages the TypeORM object-relational mapper to update the database record. The application calls the merge function, passing the existing user data and the unvalidated newUserData derived directly from the HTTP request.
The Flowise user database schema utilizes a column named credential to store the bcrypt-hashed password. Because the TypeORM merge function overwrites existing entity properties with any matching keys from the input object, supplying a credential key in the JSON body modifies this secure field. The system processes the database update without executing the standard password change workflow.
The vulnerable controller implementation demonstrates the missing input sanitization. The code verifies the user identity but immediately passes the raw payload to the database abstraction layer.
// Vulnerable Controller Logic
const currentUser = req.user;
const { id } = req.body;
if (currentUser.id !== id) {
throw new InternalFlowiseError(StatusCodes.FORBIDDEN);
}
// req.body is passed entirely to the service
const user = await userService.updateUser(req.body);The service layer subsequently executes the merge operation. TypeORM applies all key-value pairs from newUserData onto the oldUserData object, replacing internal attributes.
// Vulnerable Service Logic
updatedUser = queryRunner.manager.merge(User, oldUserData, newUserData);The remediation implemented in Flowise version 3.1.2 via Pull Request #5986 introduces strict allowlisting. The controller now extracts only explicitly permitted fields, such as name and email, from the request body. Any extraneous fields like credential are discarded before the service layer invokes the database update operation.
Exploitation requires an active authenticated session and knowledge of the underlying database schema. The attacker first generates a valid bcrypt hash for a password they control using standard cryptographic tools.
The attacker intercepts or crafts a PUT request targeting the /api/v1/user endpoint. They inject the credential field containing the newly generated hash into the JSON payload alongside their valid user ID.
PUT /api/v1/user
Authorization: Bearer <JWT_TOKEN>
Content-Type: application/json
{
"id": "<your-user-id>",
"credential": "$2b$10$abc123examplehashvalue..."
}Upon processing the request, the application replaces the legitimate password hash in the database. The attacker can subsequently authenticate using the new password. This technique successfully bypasses the requirement to provide the current password, finalizing account takeover without utilizing the standard credential rotation UI.
This mass assignment vulnerability facilitates persistent account compromise. If an attacker gains transient access to a user session through cross-site scripting (XSS) or API token theft, they can permanently backdoor the account by overwriting the credentials.
By overwriting the password hash directly, the attacker evades multiple security controls. The application fails to enforce password complexity policies, does not validate the old password, and fails to invalidate existing active sessions during the unauthorized credential rotation.
The CVSS v4.0 score of 5.3 reflects the specific constraints of the attack. The vulnerability requires a low-privileged authenticated session (PR:L) and specific knowledge of internal field names (AC:H). The impact is strictly isolated to the integrity of the individual user account (VI:H).
Administrators must upgrade Flowise to version 3.1.2 or later to address this vulnerability. The updated release implements field-level allowlisting in the user update controller, preventing the mass assignment condition.
Organizations unable to apply the patch immediately can deploy Web Application Firewall (WAF) rules to inspect traffic destined for PUT /api/v1/user. WAF policies should explicitly block requests containing restricted JSON keys, specifically credential, tempToken, and status.
Development teams utilizing object mappers like TypeORM or Sequelize must avoid passing raw HTTP input directly to merge or update functions. Implementing Data Transfer Objects (DTOs) with strict validation schemas prevents mass assignment flaws by isolating the API presentation layer from internal database models.
CVSS:4.0/AV:N/AC:H/AT:N/PR:L/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N| Product | Affected Versions | Fixed Version |
|---|---|---|
Flowise FlowiseAI | < 3.1.2 | 3.1.2 |
| Attribute | Detail |
|---|---|
| CWE ID | CWE-915 |
| Attack Vector | Network |
| CVSS v4.0 | 5.3 |
| Privileges Required | Low |
| Exploit Status | Proof of Concept |
| Authentication | Required |
The software receives input from an upstream component, but it does not restrict which attributes can be modified, allowing an attacker to overwrite internal properties.
The vibe-trading-ai package prior to version 0.1.7 contains multiple critical security vulnerabilities including unauthenticated remote code execution (RCE) via session message injection, missing authentication on read endpoints, unrestricted file upload, insecure CORS policies, and sensitive key disclosure. Because the application default settings failed open, ran as root within Docker, and bound to all interfaces, remote unauthenticated attackers could compromise host environments containing sensitive trading data.
CVE-2026-18140 is a denial-of-service vulnerability in the Amazon aws-smithy-json Rust crate. Under-validation of recursion depth within the unknown-key skipping path allows a remote, unauthenticated attacker to cause stack exhaustion and process aborts by sending deeply nested JSON arrays.
A sensitive information disclosure vulnerability exists in the Trigger.dev Command Line Interface (CLI) framework. When executing build processes inside CLI v3 packages, the framework's debug deployment logs print unredacted, resolved environment variables and secrets to standard output or log streams. This exposure occurs when the CLI is operated with a high logging verbosity level, enabling any individual or automated system with read access to build logs, CI/CD output consoles, or local development streams to capture plaintext sensitive parameters, such as database credentials, API keys, and private external integration tokens.
CVE-2026-104855 is a critical vulnerability involving a race condition and reentrant state desynchronization within Wasmtime, a standalone WebAssembly runtime. Due to incremental mid-operation preemption points in compiler-generated loops for bulk memory and table operations, a host-defined epoch or fuel deadline callback could mutate the WebAssembly Store. Upon resuming, the virtual machine utilized stale cached pointers, resulting in use-after-free, out-of-bounds writes, and sandbox escape.
CVE-2026-74802 is a critical Cross-Site WebSocket Hijacking (CSWSH) vulnerability in the SiYuan knowledge workspace application. Due to improper origin validation across multiple internal WebSocket endpoints, an attacker can hijack active authenticated sessions when a victim visits an untrusted external page. This allows the attacker to route malicious network traffic through the victim's localized SiYuan server, establishing an authenticated network pivot and facilitating Server-Side Request Forgery (SSRF).
A high-severity missing authorization vulnerability (CWE-862) exists in the SiYuan note-taking application before v3.7.4. Seventeen block metadata and content-derived endpoints within kernel/api/block.go lack proper publish-access and role-based checks. This allows low-privilege or anonymous users in publish mode to bypass workspace restrictions and disclose private block content, trace workspace structures, map document indexes, and verify the existence of private notes. The vulnerability is addressed in version v3.7.4.