Agent Dart证书验证漏洞分析
漏洞概述
Agent Dart库在证书验证过程中存在两个关键安全问题:
技术细节
委托验证缺陷
在lib/agent/certificate.dart文件的_checkDelegation函数中,未正确验证canister_ranges参数。这一缺陷导致子网能够代表其他子网签署容器响应,违反了IC规范要求。具体实现可参考agent-rs库中的正确实现方式。
时间戳验证缺失
证书中的时间戳路径(/time)未经验证,导致证书实际上没有过期时间限制。根据IC规范建议:
- 时间戳的合理过期时间应为5分钟
- 委托验证需要至少一周的过期时间,因为IC主网仅在副本升级后刷新委托(通常每周一次)
其他问题
副本签名查询功能尚未实现。
影响范围
受影响版本:<= 1.0.0-dev.28 已修复版本:1.0.0-dev.29
安全评分
CVSS总体评分:7.6(高危)
CVSS v4基础指标
- 攻击向量:网络
- 攻击复杂度:高
- 机密性影响:高
- 完整性影响:高
参考链接
- GHSA-fmj7-7gfw-64pg
- AstroxNetwork/agent_dart@0d20068
- NVD漏洞详情:CVE-2024-48915
- 相关代码文件: https://github.com/AstroxNetwork/agent_dart/blob/f50971dfae3f536c1720f0084f28afbcf5d99cb5/lib/agent/certificate.dart#L162
弱点分类
- CWE-295:不当证书验证
- CWE-347:加密签名验证不当
时间线
- 2024年10月15日:漏洞报告
- 2024年10月15日:发布至NVD
- 2024年10月15日:发布至GitHub咨询数据库
- 2025年1月23日:最后更新