CVE-2024-48915:Agent Dart 缺失证书验证检查
漏洞编号:CVE-2024-48915 严重等级:高危(CVSS评分7.6) 影响范围:agent_dart (Pub) <= 1.0.0-dev.28 修复版本:1.0.0-dev.29 报告者:eduarddfinity 修复开发者:AlexV525
漏洞详情
在 lib/agent/certificate.dart 文件中的证书验证机制被发现存在两个关键问题:
-
委托验证缺陷:在
_checkDelegation函数中,未验证canister_ranges。此缺陷的后果是,一个子网可以代表另一个子网签署容器响应。更多细节可参考 IC 规范。作为参考,可以查看 agent-rs 中的实现方式。 -
时间戳验证缺失:未验证证书的时间戳(即
/time路径),这意味着证书实际上没有过期时间。互联网计算机(IC)规范没有指定具体的过期时间,但给出了一些建议:“对于 R.signatures 和证书 Cert 中的时间戳,合理的过期时间是 5 分钟(类似于 IC 主网强制执行的 ingress 最大过期时间)。委托至少需要一周的过期时间,因为 IC 主网仅在副本升级后(通常每周发生一次)才会刷新委托。” 作为参考,可以查看 agent-rs 中的实现(此处 和 此处)。
此外,似乎未实现副本签名查询功能。
相关链接
- GHSA-fmj7-7gfw-64pg
- AstroxNetwork/agent_dart@0d20068
- NVD漏洞详情
- 漏洞代码位置 (第162行)
- agent_dart证书验证主文件
CVSS 4.0 指标
基础指标:CVSS:4.0/AV:N/AC:H/AT:N/PR:N/UI:P/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N
可利用性指标:
- 攻击向量 (AV):网络
- 攻击复杂度 (AC):高
- 攻击前提 (AT):无
- 所需权限 (PR):无
- 用户交互 (UI):被动
脆弱系统影响指标:
- 机密性 (VC):高
- 完整性 (VI):高
- 可用性 (VA):无
后续系统影响指标:
- 机密性 (SC):无
- 完整性 (SI):无
- 可用性 (SA):无
弱点分类
- CWE-295:不当的证书验证 - 产品未验证或错误地验证了证书。
- CWE-347:加密签名验证不当 - 产品未验证或错误地验证了数据的加密签名。