Agent Dart证书验证漏洞:CVE-2024-48915深度分析
漏洞概述
GitHub安全公告数据库收录了一个针对AstroxNetwork/agent_dart库的高严重性漏洞,编号为CVE-2024-48915。该漏洞存在于Agent Dart的证书验证机制中,CVSS评分为7.6(高危)。
受影响版本
- 受影响版本:<= 1.0.0-dev.28
- 已修复版本:1.0.0-dev.29
漏洞详情
技术缺陷分析
证书验证功能(位于lib/agent/certificate.dart)被发现存在两个关键问题:
1. 委派验证缺失(_checkDelegation函数)
- 问题:未验证
canister_ranges参数 - 影响:由于不检查
canister_ranges,一个子网可以代表另一个子网签署canister响应。这使得攻击者能够进行子网冒充攻击 - 参考:互联网计算机(IC)规范中对此有明确规定,
agent-rs的实现可作为正确参考
2. 时间戳验证缺失
- 问题:证书的时间戳(即
/time路径)未被验证 - 影响:证书实际上没有过期时间,这意味着一旦签发,将永久有效
- 规范建议:IC规范虽未指定具体的过期时间,但给出了合理建议:
- 时间戳的合理过期时间应为5分钟(类似于IC主网强制执行的允许入口最大过期时间)
- 委派证书需要至少一周的过期时间,因为IC主网仅在副本升级后刷新委派(通常每周一次)
- 参考实现:可查看
agent-rs中的正确实现方式
额外发现
- 副本签名查询功能似乎尚未实现
技术参考
- 漏洞代码位置:
- 相关标识:
- GHSA ID: GHSA-fmj7-7gfw-64pg
- NVD链接: https://nvd.nist.gov/vuln/detail/CVE-2024-48915
安全指标
CVSS v4基础指标
- 攻击向量:网络(Network)
- 攻击复杂度:高(High)
- 所需权限:无(None)
- 用户交互:被动(Passive)
- 影响范围:
- 机密性:高(High)
- 完整性:高(High)
- 可用性:无(None)
弱点分类
- CWE-295:证书验证不当
- CWE-347:加密签名验证不当
时间线
- 报告日期:2024年10月15日
- GitHub审核:2024年10月15日
- 最后更新:2025年1月23日
- 修复提交:AstroxNetwork/agent_dart@0d20068
贡献者
- 报告者:eduarddfinity
- 修复开发者:AlexV525
建议措施
- 立即升级到修复版本1.0.0-dev.29或更高版本
- 审查所有使用Agent Dart库的应用程序
- 实施定期的安全审计和依赖项更新流程
- 参考
agent-rs的实现来确保证书验证的正确性
该漏洞的发现和修复凸显了在分布式系统中实现正确的证书验证机制的重要性,特别是在涉及子网间信任边界的场景中。