导语:JFrog Artifactory 默认自托管部署存在严重未授权认证绕过漏洞。攻击者仅需发送特定 HTTP 请求,即可在无需任何凭证的前提下伪造平台管理员令牌,完全接管 Artifactory 实例。该漏洞 CVSS 9.8,已被在野利用。
漏洞概述
CVE-2026-82329 是 JFrog Artifactory 及关联组件 JFrog Access 中一枚高危未授权认证绕过漏洞,CVSS 3.1 评分 9.8(严重)。
漏洞根因在于:默认安装时,JFrog Access 服务的”附加加入密钥”信任集中包含一条空字符串条目。由于 getSigningKey("") 返回 32 字节的 0x20,攻击者可利用这个已知的 HMAC 密钥为任意服务签署有效的”加入 JWT”,进而换取管理员权限的服务令牌,最终 mint 出完整的平台管理员访问令牌。
风险定级:🔴 严重
技术分析
攻击链
整个利用链分三步,均为 HTTP 请求,无需任何身份凭证:
第一步: 向 /access/api/v1/registry/join 发送 POST 请求,使用空白密钥签署的 JWT(alg=HS256,kid = SHA256(""),skip_node_registration=true),获取一个 SERVICE 令牌(scope=admin),返回 HTTP 201。
第二步: 携带该 SERVICE 令牌,向 /access/api/v1/tokens POST,指定 scope=applied-permissions/admin&audience=*,换取完整的平台管理员访问令牌,返回 HTTP 200。
第三步: 携带管理员令牌,即可:
GET /artifactory/api/system/configuration→ 获取全部服务器配置(18284 字节)GET /access/api/v1/tokens→ 列出并窃取所有访问令牌- 在 Pro/Enterprise 版本中还可创建管理员账户、仓库等
根因分析
漏洞版本 JFrog Access 7.191.11 的关键代码:
// VULNERABLE (7.191.11)
Arrays.stream(joinKey.get().split(",")).map(String::trim).forEach(jKey -> {
JoinKeyHashPair hashPair = new JoinKeyHashPair(jKey); // 空白 jKey 被允许
joinKeyListValuesForContext.put(hashPair.getHash(), hashPair); // 空白密钥进入信任集
});
修复版本 7.191.14 添加了空白过滤:
// PATCHED (7.191.14) -> 过滤掉空白条目
Arrays.stream(joinKey.get().split(",")).map(String::trim)
.filter(Strings::isNotBlank)
.forEach(...);
默认配置下 joinKey 值为空字符串 "","".split(",") 产生 [""],空白 JoinKeyHashPair(kid = SHA256(“”))被加入信任集。getSigningKey("") → hexDecodeAndPad("", 32) → 32 字节 0x20,完全已知。
影响范围
受影响版本:
- JFrog Artifactory(自托管)< 7.161.20(对应 JFrog Access < 7.191.14)
- 已验证:artifactory-oss 7.161.19(JFrog Access 7.191.11)
不受影响:
- JFrog Artifactory Cloud(SaaS 版)
- 已升级至 7.161.20+ 的自托管实例
处置方案
紧急修复
升级至以下版本之一:
- JFrog Artifactory 7.161.20 或更高(内含 JFrog Access 7.191.14)
补丁 diff 分析显示,修复仅涉及 JFrog Access 的 12 个类,改动极小但关键。建议优先在测试环境验证后再生产升级,因其可能触发节点重新加入流程。
临时规避措施
若无法立即升级,可通过以下方式阻断攻击路径:
方案一:配置非空加入密钥 在 jfrog-access.bootstrap.json 中设置非空 joinKey,避免空字符串进入信任集。
方案二:网络层封禁 在边界防火墙或 WAF 上对以下端点实施认证强制:
POST /access/api/v1/registry/joinPOST /access/api/v1/tokens
⚠️ 注意: 临时规避措施不能替代正式升级,空密钥问题即使被缓解也不如升级彻底。
PoC 获取
安全研究员 dinosn 在 GitHub 公开了完整 PoC,包含:
- 可复现的 Docker 靶场环境(vulnerable vs. patched 对比)
- URL 参数化验证脚本(
cve_2026-82329_poc.py) - 补丁差异分析(bytecode diff)
仓库地址: https://github.com/dinosn/cve-2026-82329-jfrog-artifactory
直接下载(ZIP): https://github.com/dinosn/cve-2026-82329-jfrog-artifactory/archive/refs/heads/main.zip
漏洞时间线
- 2026-08-28 — 漏洞披露
- 2026-08-28 — 已在野被利用(官方确认)
- 2026-09-02 — JFrog 发布修复版本 7.161.20
- 2026-09-02 — 本快讯发布
总结建议
CVE-2026-82329 是一次典型的”默认配置下的致命漏洞”——问题不在于配置错误,而在于安装默认值本身就是一个可利用的密钥。所有使用默认配置运行 JFrog Artifactory 自托管版本的机构,应视为已失陷,建议:
- 立即隔离并检查访问日志中是否存在
/access/api/v1/registry/join的异常请求 - 尽快完成版本升级
- 轮换所有现有访问令牌
版权声明:本文由华盟网原创发布,保留所有权利。配图由华盟网授权使用。










暂无评论内容