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

本文详细分析了Agent Dart库中存在的证书验证漏洞CVE-2024-48915,包括委托验证中未检查canister_ranges和时间戳验证缺失等问题,这些漏洞可能导致子网冒充和证书无期限有效等安全风险。

Agent Dart证书验证缺失检查 · CVE-2024-48915

漏洞详情

包管理器: Pub
受影响的包: agent_dart
受影响版本: <= 1.0.0-dev.28
已修复版本: 1.0.0-dev.29

漏洞描述

证书验证(位于lib/agent/certificate.dart)被发现存在两个问题:

  1. 委托验证问题(在_checkDelegation函数中)未验证canister_ranges。不检查canister_ranges的影响是:一个子网可以代表另一个子网签署canister响应。您可以在IC规范中查看更多详细信息。作为参考,您可以查看在agent-rs中是如何实现此功能的。

  2. 证书时间戳问题,即/time路径未经验证,这意味着证书实际上没有过期时间。IC规范没有指定过期时间,但给出了一些建议,引用如下:“对于R.signatures和证书Cert中的时间戳,合理的过期时间为5分钟(类似于IC主网强制执行的允许的最大入口过期时间)。委托需要至少一周的过期时间,因为IC主网仅在副本升级后刷新委托,而副本升级通常每周发生一次”。作为参考,您可以查看在agent-rs中是如何实现此功能的(此处和此处)。

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

参考资料

安全评分

严重程度: 高
CVSS总体评分: 7.6/10

CVSS v4基础指标

可利用性指标:

  • 攻击向量: 网络
  • 攻击复杂度: 高
  • 攻击要求: 无
  • 所需权限: 无
  • 用户交互: 被动

脆弱系统影响指标:

  • 机密性: 高
  • 完整性: 高
  • 可用性: 无

弱点分类

  • CWE-295: 不正确的证书验证
  • CWE-347: 加密签名验证不当

时间线

  • 报告时间: 2024年10月15日
  • GitHub咨询数据库发布: 2024年10月15日
  • 最后更新: 2025年1月23日

致谢

报告者: eduarddfinity
修复开发者: AlexV525

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计