CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



GHSA-664H-GPGQ-H6XX

GHSA-664h-gpgq-h6xx: Privilege Escalation via Broken Authorization in n8n Evaluation Test Runs Controller

Amit Schendel
Amit Schendel
Senior Security Researcher

Jun 17, 2026·6 min read·4 visits

Executive Summary (TL;DR)

A scope misconfiguration in n8n's Evaluation Test Runs Controller allows authenticated, read-only 'viewer' accounts to trigger, cancel, and delete workflow test runs without proper authorization.

An incorrect authorization vulnerability exists in the open-source workflow automation platform n8n within the Evaluation Test Runs Controller. In deployments utilizing Advanced Permissions, an authenticated user assigned a low-privilege project:viewer role can bypass configured permission policies. This allows the unauthorized user to execute, terminate, or delete workflow evaluation test runs by exploiting misconfigured API scope validations that map read-only scopes to mutating endpoints.

Vulnerability Overview

The Evaluation Test Runs component in n8n enables developers and operators to run diagnostic testing routines on defined workflow automation pipelines. Within enterprise-grade and cloud deployments of n8n, access control boundaries are enforced utilizing Advanced Permissions, which implement a Role-Based Access Control (RBAC) model. This system defines granular permissions such as project:viewer, project:editor, and project:admin to restrict interactions based on user roles.

The vulnerability is classified under Improper Privilege Management and Broken Authorization. The core attack surface consists of the HTTP endpoints exposed by the Evaluation Test Runs Controller. These endpoints are meant to gate sensitive, state-altering operations behind write-level scopes. Due to a declaration error in the backend controller decorators, mutating endpoints were configured to accept a read-only validation scope.

An authenticated user with read-only access (project:viewer) can exploit this vulnerability to perform unauthorized modifications within their associated projects. The visual flow below demonstrates how the role permission mapping bypasses the authorization guard:

Technical Root Cause Analysis

The root cause of this vulnerability lies in the improper mapping of authorization scopes to controller methods within n8n's NestJS framework backend. In n8n, permission checks are processed by route guards, specifically the ProjectMemberGuard. This guard intercepts incoming HTTP requests, decodes the caller's JSON Web Token (JWT), evaluates the user's role on the project, and matches it against the required scopes specified by a @Scopes() decorator on the target route.

To maintain security boundaries, read-only permissions such as viewing workflow schemas or execution histories are mapped to the workflow:read scope. State-changing actions, such as triggering executions, require the elevated workflow:execute scope, while schema alterations or database writes require workflow:update or workflow:delete scopes.

The vulnerability manifests because the developer utilized the @Scopes('workflow:read') decorator on three mutating endpoints within the Evaluation Test Runs Controller. Because the controller declared the read scope rather than execution or update scopes, the authorization engine permitted users possessing the low-privilege project:viewer role to successfully pass security validation.

Source Code Analysis and Patch Verification

To understand the implementation flaw, we examine the conceptual configuration of the vulnerable controller against the patched logic. In the vulnerable version, the routes handling creation, cancellation, and deletion of test runs were declared with weak scope requirements:

// VULNERABLE ROUTE DECLARATION
@Controller('evaluation-test-runs')
@UseGuards(ProjectMemberGuard)
export class EvaluationTestRunsController {
 
  @Post()
  @Scopes('workflow:read') // VULNERABILITY: Permitted read-only users to trigger executions
  async createEvaluationRun(@Body() data: CreateRunDto) {
    return this.evaluationService.start(data);
  }
 
  @Post(':id/cancel')
  @Scopes('workflow:read') // VULNERABILITY: Permitted read-only users to terminate active tasks
  async cancelEvaluationRun(@Param('id') id: string) {
    return this.evaluationService.cancel(id);
  }
 
  @Delete(':id')
  @Scopes('workflow:read') // VULNERABILITY: Permitted read-only users to delete database records
  async deleteEvaluationRecord(@Param('id') id: string) {
    return this.evaluationService.delete(id);
  }
}

The patch remediates this security flaw by updating the decorator metadata to align with appropriate access scopes, effectively hardening the endpoints against low-privilege access:

// PATCHED ROUTE DECLARATION
@Controller('evaluation-test-runs')
@UseGuards(ProjectMemberGuard)
export class EvaluationTestRunsController {
 
  @Post()
  @Scopes('workflow:execute') // FIXED: Now requires execution scope
  async createEvaluationRun(@Body() data: CreateRunDto) {
    return this.evaluationService.start(data);
  }
 
  @Post(':id/cancel')
  @Scopes('workflow:execute') // FIXED: Now requires execution scope
  async cancelEvaluationRun(@Param('id') id: string) {
    return this.evaluationService.cancel(id);
  }
 
  @Delete(':id')
  @Scopes('workflow:update') // FIXED: Now requires update/delete scope to alter records
  async deleteEvaluationRecord(@Param('id') id: string) {
    return this.evaluationService.delete(id);
  }
}

This fix is complete and robust because it leverages n8n's central role mapping framework. Once the correct scopes are defined, any attempt by a project:viewer to make request modifications triggers an immediate authorization rejection prior to controller execution.

Exploitation Methodology

To exploit this vulnerability, an attacker must have valid credentials to the target n8n instance and belong to a project with a minimum privilege level of project:viewer. Because the user interface suppresses buttons for execution or deletion based on the UI configuration, the attacker must bypass the frontend and interact directly with the API.

First, the attacker authenticates to obtain a valid JWT. Using read-only access, they query the workflow API to retrieve the target workflowId and associated projectId. Once these identifiers are obtained, they send direct HTTP requests targeting the vulnerable endpoints.

An attacker can trigger an unauthorized evaluation run by sending the following request:

POST /api/v1/evaluation-test-runs HTTP/1.1
Host: n8n.target-domain.com
Authorization: Bearer <Viewer_JWT_Token>
Content-Type: application/json
 
{
  "workflowId": "Wf_12345_Target",
  "projectId": "Proj_98765",
  "testData": {}
}

To disrupt operational activities, the attacker can cancel active, in-flight evaluation tests run by other engineers. They do this by querying active run IDs and dispatching a cancellation payload:

POST /api/v1/evaluation-test-runs/run_abc123_active/cancel HTTP/1.1
Host: n8n.target-domain.com
Authorization: Bearer <Viewer_JWT_Token>

Finally, the attacker can cover their tracks or alter historical compliance logs by issuing a delete instruction against the evaluation history database:

DELETE /api/v1/evaluation-test-runs/run_abc123_active HTTP/1.1
Host: n8n.target-domain.com
Authorization: Bearer <Viewer_JWT_Token>

Threat and Business Impact Assessment

The security impact of this vulnerability is measured by the potential disruption to automated testing pipelines and resource consumption. The ability to cancel in-flight evaluation runs allows malicious actors to execute a partial denial of service against continuous integration and testing suites, leading to delays in software deployment pipelines.

Furthermore, the deletion capability degrades system integrity by making historical testing trends and security log audits unreliable. This can pose compliance challenges in highly regulated corporate environments. Unauthorized execution of workflows also presents a platform abuse concern, as viewer accounts can repeatedly trigger tests that consume critical processing infrastructure, system memory, and external service provider API limits.

This vulnerability only affects deployments utilizing the Advanced Permissions structure, which is restricted to Enterprise and Cloud-licensed products. Standard community editions of n8n that do not use multi-tenant projects or role separation are not vulnerable to this vector, as authenticated users typically hold uniform execution and administrative privileges by design.

Remediation and Detection Controls

The primary remediation for this vulnerability is upgrading the n8n application to a secure version. Deployment administrators must apply the corresponding patch based on their operational release branch:

  • n8n 1.x Releases: Upgrade to 1.123.55 or later.
  • n8n 2.x Releases (prior to 2.26): Upgrade to 2.25.7 or later.
  • n8n 2.x Releases (2.26 and above): Upgrade to 2.26.2 or later.

If immediate software patching is not possible, organizations should implement temporary mitigations to lower risk. Administrators should audit project configurations and remove the project:viewer role from users who do not require live dashboard access. Instead, share static workflow exports to maintain operational airgaps.

To identify potential abuse of this vulnerability, security operations teams should inspect API logs for mutating HTTP methods (POST and DELETE) sent to the /api/v1/evaluation-test-runs path. Cross-referencing the executing JWT identity against the active n8n role mapping database will expose anomalies. Any mutating event initiated by an account with strict read-only authorization indicates successful exploitation.

Technical Appendix

CVSS Score
5.4/ 10
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:L

Affected Systems

n8n Enterprise Edition with Advanced Permissions enabledn8n Cloud Edition with Advanced Permissions enabled

Affected Versions Detail

Product
Affected Versions
Fixed Version
n8n
n8n-io
< 1.123.551.123.55
n8n
n8n-io
>= 2.0.0 < 2.25.72.25.7
n8n
n8n-io
>= 2.26.0 < 2.26.22.26.2
AttributeDetail
CWE IDCWE-863 (Incorrect Authorization)
Attack VectorNetwork
CVSS v3.15.4
Exploit StatusProof of Concept / Technical details understood
Required Privilege LevelLow (project:viewer)
ImpactIntegrity Loss, Denial of Service (Testing Pipelines)

MITRE ATT&CK Mapping

T1548Abuse Elevation Control Mechanism
Privilege Escalation
T1068Exploitation for Privilege Escalation
Privilege Escalation
CWE-863
Incorrect Authorization

The software performs an authorization check when an actor attempts to access a resource or perform an action, but it does not correctly obtain the results of the check or does not associate the results with the correct actor, leading to a bypass of the intended restrictions.

Vulnerability Timeline

GitHub Security Advisory Published (GHSA-664h-gpgq-h6xx)
2026-06-17
Official patched versions released (1.123.55, 2.25.7, 2.26.2)
2026-06-17

References & Sources

  • [1]n8n Security Advisory (GHSA-664h-gpgq-h6xx)
  • [2]n8n Primary Source Repository

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•about 3 hours ago•GHSA-8JR5-V98P-W75M
8.6

GHSA-8JR5-V98P-W75M: Perception Desynchronization via Unnormalized EXIF Orientation and PNG Transparency in vLLM

A critical preprocessing mismatch exists in vLLM's multimodal image pipeline before commit cf1c90672404548aa3bc51f92c4745576a65ee26. The vulnerability occurs because the engine loads user-submitted images and passes them to underlying Vision-Language Models (VLMs) without normalizing their EXIF orientation metadata or fully resolving complex transparency structures. This gap creates a perception desynchronization vulnerability where the physical pixel grid processed by the AI model differs significantly from how the image is visually rendered to human moderators or frontend applications. Attackers can exploit this mismatch to perform silent prompt injections, bypass safety moderation systems, or execute adversarial jailbreaks.

Alon Barad
Alon Barad
2 views•8 min read
•about 11 hours ago•GHSA-JWM3-QCFW-C5PP
5.1

GHSA-jwm3-qcfw-c5pp: Security Bypass in n8n Python Code Node AST Validator

An authenticated security-bypass vulnerability in n8n allows users with workflow creation or modification privileges to bypass the Python AST security validator. By circumventing AST validation logic, attackers can execute arbitrary statements, access the task executor's root module namespace, and disclose sensitive host environment variables on self-hosted instances.

Amit Schendel
Amit Schendel
7 views•6 min read
•about 11 hours ago•GHSA-H3JJ-5F3V-3685
6.4

GHSA-H3JJ-5F3V-3685: Public API Execution Retry Authorization Bypass in n8n

An incorrect authorization vulnerability in the Public API of n8n allows authenticated users with read-only permissions to bypass access control boundaries. By invoking the execution retry endpoint, an unauthorized user can trigger workflow executions, effectively escalating their privileges from workflow:read to workflow:execute.

Amit Schendel
Amit Schendel
6 views•5 min read
•about 17 hours ago•GHSA-M3Q2-P4FW-W38M
2.3

GHSA-M3Q2-P4FW-W38M: Cross-Site Scripting (XSS) via Unsafe innerHTML Assignment in Nuxt <NoScript> Component

A low-severity Cross-Site Scripting (XSS) vulnerability in Nuxt's globally registered <NoScript> head component allows unauthenticated attackers to execute arbitrary JavaScript. By injecting dynamic, untrusted data into <NoScript> slots, standard Vue HTML escaping is bypassed because the component processes slot text nodes and assigns them directly to the target element's innerHTML property instead of textContent. In modern browsers with scripting enabled, this raw injection can implicitly close the <noscript> tag, triggering script execution.

Amit Schendel
Amit Schendel
5 views•8 min read
•about 18 hours ago•CVE-2026-49993
5.7

CVE-2026-49993: Proprietary Source Code Exfiltration via Incomplete Same-Origin Verification in Nuxt Dev Servers

CVE-2026-49993 identifies an incomplete same-origin check validation mechanism in @nuxt/webpack-builder and @nuxt/rspack-builder dev server middleware. When the local development server is bound to a non-loopback address, cross-origin attackers can bypass verification checks by suppressing browser headers, leading to unauthorized retrieval and exfiltration of compiled source code chunks.

Amit Schendel
Amit Schendel
8 views•4 min read
•about 19 hours ago•GHSA-69QJ-PVH9-C5WG
7.5

GHSA-69QJ-PVH9-C5WG: Command Injection in yt-dlp `--exec` Option

An OS command injection vulnerability in yt-dlp before 2026.06.09 allows unauthenticated remote attackers to execute arbitrary shell commands via crafted media metadata when a user processes media using the --exec post-processing parameter with unsafe string interpolation conversions.

Alon Barad
Alon Barad
10 views•7 min read