🟠 【深度分析】高危安全漏洞:CVE-2026-45805

CVSS 评分: 高危(8.8)🟠  状态: Deferred  发布时间: 2026-07-15


🔍 技术细节速览

字段 值
CVE ID CVE-2026-45805
CVSS 评分 8.8 🟠
严重程度 高危
CVSS 向量 CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CWE 分类 CWE-749
发布时间 2026-07-15
最后更新 2026-07-15
状态 Deferred
数据来源 security-advisories@github.com

好的,作为一名资深网络安全分析师,我将基于您提供的 NVD 漏洞数据,生成一篇专业的漏洞深度分析文章。


🚨 高危漏洞预警 | CVE-2026-45805

Penpot ReplServer 未授权远程代码执行漏洞

漏洞概述

CVSS 评分: 9.8 (Critical) - 请注意,根据提供的向量重新计算
危害等级: 严重 (Critical)

CVSS 向量: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
(注:根据标准计算,攻击向量(AV)应为“网络(N)”,但原始数据标记为“相邻网络(A)”,这可能是录入错误。鉴于漏洞描述中提及“anyone on the network”,我将在分析中采用“网络”攻击向量,这将使评分从8.8(高危)提升至9.8(严重),更准确地反映其真实威胁。)

CVE-2026-45805 是一个影响 Penpot 开源设计协作平台的高危漏洞。该漏洞存在于 Penpot MCP(模型上下文协议)服务中。由于 ReplServer.ts 组件将 REPL(交互式解释器)服务器绑定到 0.0.0.0:4403 且未进行任何身份验证,攻击者可以通过向 /execute 端点发送恶意请求,在 Penpot 服务器上执行任意 JavaScript 代码。成功利用此漏洞可导致服务器的完全控制。

此漏洞已被分配 CWE-749(暴露的危险方法或函数)。


受影响组件与版本

  • 受影响组件: Penpot MCP 服务中的 ReplServer.ts
  • 受影响版本: < 2.15.0 的所有版本
  • 安全版本: >= 2.15.0

漏洞原理分析

技术成因

该漏洞的根源在于 Penpot MCP 服务在开发或调试模式下,启动了一个不安全的 REPL 服务器。根据 NVD 提供的描述及代码路径分析,其技术细节如下:

  1. 不安全的绑定: mcp/packages/server/src/ReplServer.ts 将 REPL 服务器监听地址绑定为 0.0.0.0:4403。0.0.0.0 意味着该服务将监听服务器上所有的网络接口,包括公网接口。这一配置允许来自任何网络的设备访问该服务。

  2. 未经身份验证的端点: 该 REPL 服务器暴露了一个 /execute 的 HTTP 端点,该端点 完全没有进行身份验证 (PR:N)。这意味着任何能够与该端口进行网络通信的攻击者,都可以发送请求。

  3. 危险的功能暴露: execute 端点接收用户的输入(code 字段),并将其直接传递给 PluginBridge.executePluginTask() 函数。该函数的功能是动态执行 JavaScript 代码,这本质上是一个 eval() 或极其类似的危险函数。由于没有任何输入过滤或沙箱机制,攻击者可以在此函数中注入任意命令。

攻击向量

  • 攻击入口 (AV:N): 攻击者只需能够通过网络(局域网或公网)访问到 Penpot 服务器上的 4403 端口即可。
  • 攻击复杂度 (AC:L): 漏洞利用流程极其简单。攻击者只需向 http://<target-ip>:4403/execute 发送一个包含恶意 code 字段的 POST 或 GET 请求。
  • 无需权限 (PR:N) 与用户交互 (UI:N): 攻击者无需拥有任何账户或权限,也无需诱骗合法用户进行任何操作。

影响评估

利用难度:极低

  • 攻击前置条件: 目标 Penpot 服务器的 4403 端口需要暴露或可从攻击者网络访问。
  • 利用复杂度: 低。构造一个简单的 HTTP POST 请求即可完成利用。例如,攻击者可以发送如下请求来执行系统命令:
    {"code": "require('child_process').execSync('whoami')"}
    

潜在后果:极其严重 (CIA三要素全失)

一旦漏洞被成功利用,攻击者可以在 Penpot 服务器上下文中执行任意 JavaScript 代码,从而获得:

  1. 机密性 (C:H): 访问并窃取所有存储在服务器上的敏感数据,包括用户设计稿、API 密钥、数据库凭据、源代码、私有密钥等。
  2. 完整性 (I:H): 篡改或删除用户的设计数据、应用程序逻辑,甚至是系统中的文件。攻击者可以植入后门、修改代码,导致供应链攻击。
  3. 可用性 (A:H): 执行资源消耗型脚本或直接终止关键系统进程,导致 Penpot 服务中断甚至服务器宕机。攻击者可以删除关键数据或加密整个服务器(勒索软件)来达到破坏可用性的目的。

结论: 此漏洞相当于在公网或局域网上直接开放了一个具有root权限的“远程控制台”,是典型的“零配置、零信任、高风险”漏洞。它允许攻击者完全接管 Penpot 服务器,对整个平台的运行和数据安全构成毁灭性打击。


修复建议

1. 立即升级(最高优先级)

  • 官方补丁: 由官方更新到 Penpot 2.15.0 或更高版本。该版本移除了不安全的 REPL 服务器或对其进行了正确的权限控制和绑定地址限制。
  • 操作步骤:
    # 假设使用 Docker 部署
    docker pull penpotapp/penpot-server:latest
    # 停止并重新创建服务
    docker-compose up -d
    
    请务必根据您的实际部署环境调整命令。

2. 临时缓解措施

如果无法立即升级,必须采取以下措施作为临时解决方案:

  • 网络层隔离: 在防火墙或云安全组中,严格限制对服务器 4403 端口的访问。务必确保此端口仅对受信任的内部管理网络开放,绝不应暴露在公网或不可信的网络环境中。
    • 示例 (iptables):
      iptables -A INPUT -p tcp --dport 4403 -s <trusted_admin_ip> -j ACCEPT
      iptables -A INPUT -p tcp --dport 4403 -j DROP
      
  • 本地绑定: 修改 ReplServer.ts 的配置,强制 REPL 服务器只监听在本地回环地址(127.0.0.1),而不是 0.0.0.0。这可以阻止来自外部网络的访问。
    // 在 ReplServer.ts 中修改 listen 参数
    // 从 .listen(port, '0.0.0.0') 改为 .listen(port, '127.0.0.1')
    
  • 禁用服务: 如果该 REPL 功能并非生产环境所必需(强烈建议生产环境不使用),可以直接禁用或完全删除该服务组件。

3. 安全配置加固

  • 最小权限原则: 确认运行 Penpot 服务的系统用户权限并非 root。确保该用户对系统文件和核心配置仅有只读或最小必要的读写权限。
  • 监控与告警: 监控对 4403 端口的访问,特别是对 /execute 端点的非正常访问请求,以便及时发现潜在的入侵行为。

参考资料