针对 Langflow 代码注入漏洞(CVE-2026-9198)的独立复现、实验环境验证与暴露面披露。该漏洞为 CVSS 9.8 的未认证远程代码执行漏洞,影响 Langflow 1.0.0 至 1.10.0 的默认部署。已在 1.10.1 中修复,并于 2026-08-04 被加入 CISA 的已知被利用漏洞(KEV)目录。
研究时间窗口:2026 年 8 月 17 日至 18 日。所有利用测试均仅针对我们自有的实验实例进行。
网络文章: https://riftweld.github.io/langflow-cve-2026-9198/
本仓库并非最初的发现报告。CVE-2026-9198 由 IBM 和 CISA 公开披露;本仓库记录的是独立的根因复现、实验环境重现,以及协调开展的托管服务提供商通知行动。
| 路径 | 描述 |
|---|---|
WRITEUP.md | 完整报告:根因、攻击链、实验环境差异对比、暴露面,以及通过提供商渠道进行的披露 |
LAB-VALIDATION.md | 实验日志:在 1.10.0 上的重现,以及已修补的 1.10.1 的差异对比 |
poc/poc_takeover.py | 端到端实验 PoC(仅限实验环境,请先修改目标主机) |
poc/poc_transcript.md | 针对我们实验容器捕获的 PoC 运行记录 |
recon/shodan_langflow_recon.py | 被动暴露面枚举(Shodan API,不进行主动探测) |
notifications/ | 发送至托管服务提供商滥用处理部门的八封通知邮件副本(按实例列表已隐去) |
LANGFLOW_AUTO_LOGIN=true)下,GET /api/v1/auto_login 无需任何凭据即可返回长期有效的超级用户 JWT。POST /api/v1/validate/code 会执行提交的函数定义,并在 HTTP 响应中回显命令输出:构成完整的未认证代码执行。langflowai/langflow:1.10.0 上重现;1.10.1 对照组封堵了这两个环节(短期令牌;空的执行接收端)。仅限实验环境。启动一个存在漏洞的 Langflow 容器,并将脚本指向它:
docker run -d --name lf-lab -p 127.0.0.1:7860:7860 \
-e LANGFLOW_AUTO_LOGIN=true langflowai/langflow:1.10.0
python3 poc/poc_takeover.py --url http://127.0.0.1:7860 --cmd "id"
切勿对第三方系统运行此脚本。暴露面发现均通过托管服务提供商的滥用处理渠道处理;按目标划分的记录有意不予公开。
| 日期 | 事件 |
|---|---|
| 2026-06-23 | Langflow 1.10.1 发布(修复) |
| 2026-07-02 | IBM 公告 |
| 2026-07-06 | 首次野外传感器命中(公开披露前) |
| 2026-07-17 | CVE 发布 |
| 2026-07-29 | 公开的 nuclei 模板合并 |
| 2026-08-04 | 列入 CISA KEV(修复截止日期 08-07) |
| 2026-08-17/18 | 本次独立复现、实验环境验证及提供商通知 |
代码按原样提供,用于防御和教育目的。