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-H3JJ-5F3V-3685

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

Amit Schendel
Amit Schendel
Senior Security Researcher

Jun 17, 2026·5 min read·4 visits

Executive Summary (TL;DR)

A validation flaw in the n8n Public API allowed users with read-only workflow permissions to execute retries, triggering unauthorized workflow executions on the server.

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.

Vulnerability Overview

The workflow automation platform n8n provides a Public API to manage and automate executions. In multi-tenant or team environments, n8n relies on a defined permission model to enforce boundaries between different users and projects. These boundaries ensure that users with read-only access cannot modify state or trigger actions.

A logical flaw in the Public API endpoint responsible for retrying workflow executions broke this authorization model. The endpoint allowed users to perform write/execution operations if they possessed read-only permissions. This flaw is classified under CWE-863 (Incorrect Authorization).

This vulnerability is significant for environments where workflows connect to production resources, cloud infrastructure, or databases. By abusing this endpoint, an unauthorized actor can trigger side effects in downstream integrations, leading to unintended modifications of third-party systems.

Root Cause Analysis

The root cause of this vulnerability lies in the incorrect mapping of permission scopes within the Public API router. n8n utilizes distinct scopes to govern user actions: workflow:read for viewing resources, workflow:write for configuration modifications, and workflow:execute for initiating runtime activities.

When a client targets the endpoint /v1/executions/{executionId}/retry, the application API gateway is responsible for verifying the caller's scope. Due to an integration oversight, the route guard applied to this endpoint verified the presence of the workflow:read scope instead of the workflow:execute scope.

Because the API key or authorization token of a read-only user naturally contains the workflow:read scope, the gateway passed the request to the execution controller. The backend then processed the execution payload as if the user possessed full execution rights, demonstrating a direct breakdown in role-based access control.

Code-Level Authorization Flow

In the vulnerable version of the application, the controller responsible for execution actions implemented route protection decorators incorrectly. The following conceptual representation demonstrates how the middleware authorized the request based on the read scope:

// VULNERABLE ROUTE DEFINITION
@Post('/executions/:executionId/retry')
@Scope('workflow:read') // Bug: Validated read access instead of execute access
async retryExecution(@Param('executionId') executionId: string) {
    return await this.executionService.retry(executionId);
}

The fix applied by the n8n developers updated the decorator to reference the correct cryptographic execution scope. This change ensures that the router drops requests from read-only users before invoking the execution engine:

// PATCHED ROUTE DEFINITION
@Post('/executions/:executionId/retry')
@Scope('workflow:execute') // Fix: Enforce active execution permissions
async retryExecution(@Param('executionId') executionId: string) {
    return await this.executionService.retry(executionId);
}

This patch completely resolves the specific logical path. However, organizations should perform regression testing to ensure no other active state-changing endpoints are decorated with passive read scopes.

Exploitation Methodology & Attack Vector

To exploit this vulnerability, an attacker requires a valid account or API key with read-only privileges. The attack vector is entirely network-based and can be executed via standard HTTP command-line tools.

First, the attacker identifies a target workflow to which they have read-only access. They query the execution list to discover historic execution identifiers:

curl -X GET "https://n8n.example.com/v1/executions?workflowId=10" \
     -H "X-N8N-API-KEY: n8n_api_readonly_token_abc"

Next, the attacker selects a target execution ID (e.g., 105) from the response. They issue a POST request to the retry endpoint using the same read-only credentials:

curl -X POST "https://n8n.example.com/v1/executions/105/retry" \
     -H "X-N8N-API-KEY: n8n_api_readonly_token_abc" \
     -H "Content-Type: application/json"

The server returns a successful execution response, and the engine initiates a new runtime instance of the workflow using the historical input data of execution 105.

Impact Assessment & Risk Evaluation

This vulnerability carries a CVSS v3.1 score of 6.4 (Medium). The scope parameter is classified as 'Changed' (S:C) because exploiting the API allows low-privileged users to trigger backend events that execute operations on third-party integrations outside the user's immediate scope.

Integrity impact is low to medium depending on the specific nodes configured in the target workflow. If the workflow executes SQL updates, writes to a cloud CRM, or interacts with transactional systems, repeating the execution can result in duplicated transactions or data corruption.

Resource exhaustion is also an operational risk. An automated script could repeatedly call the retry endpoint, causing n8n's execution queue to fill up. This would prevent legitimate workflows from running and deplete memory or CPU resources.

Remediation & Defense-in-Depth

The definitive remediation for GHSA-H3JJ-5F3V-3685 is to upgrade n8n to a patched release. Systems on the 2.25.x release path must upgrade to 2.25.7 or later. Systems on the 2.26.x path must upgrade to 2.26.2 or later.

If patching cannot be performed immediately, administrators should implement strict network-level controls. Restrict access to the /v1/ API paths to trusted administrative source IP addresses using an API Gateway or Web Application Firewall.

Additionally, audit all active API keys and user privileges within the n8n application. Revoke any unnecessary keys and ensure that sharing workflows across teams is limited only to instances where collaboration is strictly required.

Technical Appendix

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

Affected Systems

n8n (npm package)n8n docker container image

Affected Versions Detail

Product
Affected Versions
Fixed Version
n8n
n8n-io
< 2.25.72.25.7
n8n
n8n-io
>= 2.26.0, < 2.26.22.26.2
AttributeDetail
CWE IDCWE-863
Attack VectorNetwork
CVSS v3.1 Score6.4 (Medium)
CVSS VectorCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N
Exploit Statuspoc
Patched Versions2.25.7, 2.26.2

MITRE ATT&CK Mapping

T1068Exploitation for Privilege Escalation
Privilege Escalation
T1204User Execution
Execution
CWE-863
Incorrect Authorization

The product performs an authorization check when an actor attempts to access a resource or perform an action, but it does not correctly associate the authorization with the explicit action being executed.

Vulnerability Timeline

Vulnerability published in GitHub Advisory Database.
2026-06-16
Patched versions 2.25.7 and 2.26.2 released.
2026-06-16

References & Sources

  • [1]GHSA-h3jj-5f3v-3685 Security Advisory on GitHub
  • [2]GitHub Advisory Database Entry

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 5 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-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 12 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 13 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
•about 14 hours ago•GHSA-7CX2-G3H9-382P
8.1

GHSA-7CX2-G3H9-382P: Multiple Vulnerabilities in Crawl4AI Docker API (Arbitrary File Write, SSRF, CRLF Log Injection)

An in-depth technical analysis of multiple security vulnerabilities in the self-hosted Docker API server of Crawl4AI up to version 0.8.7. These flaws include a critical arbitrary file write via symlink traversal and TOCTOU weakness, CRLF log injection, webhook header injection, and SSRF filter gaps. These have been remediated in version 0.8.8.

Alon Barad
Alon Barad
5 views•6 min read
•about 15 hours ago•GHSA-F989-C77F-R2CQ
8.2

GHSA-f989-c77f-r2cq: LLM Credential Exfiltration and SSRF in Crawl4AI Docker Server

A technical evaluation of the Crawl4AI open-source web crawling and scraping library revealed a high-severity credential exfiltration vulnerability in its self-hosted Dockerized API server. The flaw arises from an unvalidated base_url parameter in request payloads and a dynamic prefix resolution mechanism that retrieves system environment variables. Unauthenticated remote attackers can leverage these features in tandem to extract host-level secrets or redirect configured LLM API keys to an external listener under their control.

Amit Schendel
Amit Schendel
6 views•6 min read