Skip to content

安装阶段 SecurityKey 泄露且安装后仍可创建管理员(SSCMS 7.4.0,已本地验证) #3898

Open

Description

@mofeifeifei

SSCMS 的 AgentController(/api/admin/agent/*)没有类级别 [Authorize] 保护,仅依赖 SecurityKey 字符串比对认证。同一 SecurityKey 被复用为所有 JWT Token 的 HMAC-SHA256 签名密钥。攻击者可在系统未安装时通过 InstallController.Prepare 获取 SecurityKey 或通过文件读取获取 sscms.json,随后伪造管理员 JWT 完全接管系统。

Activity

  1. changed the title [-]SSCMS AgentController 缺失认证且 SecurityKey 复用为 JWT 签名密钥导致完全系统接管[/-] [+]安装阶段 SecurityKey 泄露且安装后仍可创建管理员(SSCMS 7.4.0,已本地验证)[/+] on Jul 14, 2026
  2. mofeifeifei commented on Jul 14, 2026

    @mofeifeifei
    Author

    概要

    我在本地 SSCMS 7.4.0 隔离环境中确认:系统安装前,未认证的安装准备流程会返回实例的 SecurityKey;安装完成后,该密钥未被轮换或失效,仍可被 Agent 安装流程接受,并创建额外管理员账户。

    该问题属于安装生命周期中的密钥暴露与访问控制问题。

    已验证范围

    • 受影响版本:SSCMS 7.4.0
    • 验证方式:本地 Docker + SQLite 隔离环境
    • 安装前:安装准备流程返回非空 SecurityKey
    • 安装后:安装准备流程返回 HTTP 401
    • 但安装前取得的同一 SecurityKey 在安装后仍被 Agent 安装流程接受,可创建第二个管理员

    未对外部实例、生产数据或第三方系统进行测试。

    影响

    若攻击者在实例暴露但尚未安装时获取到该引导密钥,并在合法用户完成安装后使用该密钥,则可创建管理员账户并取得后台管理权限。

    建议保守评级为 High,CVSS v3.1:
    CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H(8.1)

    修复建议

    1. 不向未认证调用者返回安装引导密钥。
    2. 将安装授权改为一次性、短期有效的令牌。
    3. 安装成功后立即轮换或使引导密钥失效。
    4. 安装完成后,Agent 相关管理员操作应要求正常的管理员认证与授权。
    5. 分离 JWT 签名密钥与安装/Agent 密钥。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions