Agent Dart证书验证漏洞分析
漏洞概述
Agent Dart库在证书验证过程中存在两个关键安全问题,影响了版本1.0.0-dev.28及之前的所有版本。
技术细节
委托验证缺陷
在lib/agent/certificate.dart文件的_checkDelegation函数中,存在以下问题:
- canister_ranges未验证:委托验证过程中未对canister_ranges进行检查,这可能导致一个子网能够冒充另一个子网签署canister响应。具体影响是允许子网越权代表其他子网进行操作。
时间戳验证缺失
- 证书时间戳未验证:证书中的
/time路径未被验证,导致证书实际上没有过期时间限制。根据IC规范建议:- 时间戳的合理过期时间应为5分钟
- 委托需要至少一周的过期时间,因为IC主网通常每周才刷新一次委托
其他问题
- 副本签名查询功能尚未实现
影响版本
- 受影响版本:<= 1.0.0-dev.28
- 已修复版本:1.0.0-dev.29
安全评分
- 严重程度:高危
- CVSS评分:7.6/10
- EPSS评分:0.048%
相关弱点
- CWE-295:不当证书验证
- CWE-347:加密签名验证不当
参考链接
- GHSA-fmj7-7gfw-64pg
- AstroxNetwork/agent_dart@0d20068
- NVD漏洞详情:CVE-2024-48915