Agent Dart缺失证书验证检查 · CVE-2024-48915
漏洞详情
包管理器: Pub
受影响版本: <= 1.0.0-dev.28
修复版本: 1.0.0-dev.29
漏洞描述
证书验证(位于lib/agent/certificate.dart)被发现存在两个问题:
-
委托验证问题:在委托验证(
_checkDelegation函数)过程中,未验证canister_ranges。不检查canister_ranges的影响是:一个子网可以代表另一个子网签名canister响应。更多详细信息可参考IC规范,也可参考agent-rs中的实现方式。 -
时间戳验证缺失:证书的时间戳(即
/time路径)未被验证,这意味着证书实际上没有过期时间。IC规范没有指定具体的过期时间,但给出了一些建议:“对于R.signatures和证书Cert中的时间戳,合理的过期时间为5分钟(类似于IC主网强制执行的最大入口过期时间)。委托需要至少一周的过期时间,因为IC主网仅在副本升级后刷新委托,而副本升级通常每周发生一次”。可参考agent-rs中的实现方式(此处和此处)。
此外,似乎副本签名查询功能尚未实现。
参考资料
- GHSA-fmj7-7gfw-64pg
- AstroxNetwork/agent_dart@0d20068
- https://nvd.nist.gov/vuln/detail/CVE-2024-48915
- https://github.com/AstroxNetwork/agent_dart/blob/f50971dfae3f536c1720f0084f28afbcf5d99cb5/lib/agent/certificate.dart#L162
- https://github.com/AstroxNetwork/agent_dart/blob/main/lib/agent/certificate.dart
安全评分
严重程度: 高危
CVSS总体评分: 7.6/10
CVSS v4基础指标
可利用性指标:
- 攻击向量:网络
- 攻击复杂度:高
- 攻击要求:无
- 所需权限:无
- 用户交互:被动
脆弱系统影响指标:
- 机密性:高
- 完整性:高
- 可用性:无
弱点分类
- CWE-295: 不当的证书验证
- CWE-347: 加密签名验证不当