Agent Dart 证书验证缺失漏洞分析

本文详细分析了Agent Dart库(<= 1.0.0-dev.28版本)中存在的高危安全漏洞CVE-2024-48915。该漏洞源于证书验证环节存在缺陷,包括未验证委托中的canister范围以及未检查证书时间戳,导致存在安全风险。

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 文件中的证书验证机制被发现存在两个关键问题:

  1. 委托验证缺陷:在 _checkDelegation 函数中,未验证 canister_ranges。此缺陷的后果是,一个子网可以代表另一个子网签署容器响应。更多细节可参考 IC 规范。作为参考,可以查看 agent-rs 中的实现方式。

  2. 时间戳验证缺失:未验证证书的时间戳(即 /time 路径),这意味着证书实际上没有过期时间。互联网计算机(IC)规范没有指定具体的过期时间,但给出了一些建议:

    “对于 R.signatures 和证书 Cert 中的时间戳,合理的过期时间是 5 分钟(类似于 IC 主网强制执行的 ingress 最大过期时间)。委托至少需要一周的过期时间,因为 IC 主网仅在副本升级后(通常每周发生一次)才会刷新委托。” 作为参考,可以查看 agent-rs 中的实现(此处此处)。

此外,似乎未实现副本签名查询功能。

相关链接

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:加密签名验证不当 - 产品未验证或错误地验证了数据的加密签名。
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计