Agent Dart证书验证漏洞详解:CVE-2024-48915安全分析

本文详细分析了Agent Dart库中编号为CVE-2024-48915的高危安全漏洞。该漏洞源于证书验证过程的两个关键缺陷:未验证canister_ranges和证书时间戳,导致子网可冒充其他子网签名且证书无有效期限,严重威胁系统安全。

Agent Dart证书验证漏洞:CVE-2024-48915深度分析

漏洞概述

GitHub安全公告数据库收录了一个针对AstroxNetwork/agent_dart库的高严重性漏洞,编号为CVE-2024-48915。该漏洞存在于Agent Dart的证书验证机制中,CVSS评分为7.6(高危)。

受影响版本

  • 受影响版本:<= 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规范虽未指定具体的过期时间,但给出了合理建议:
    • 时间戳的合理过期时间应为5分钟(类似于IC主网强制执行的允许入口最大过期时间)
    • 委派证书需要至少一周的过期时间,因为IC主网仅在副本升级后刷新委派(通常每周一次)
  • 参考实现:可查看agent-rs中的正确实现方式

额外发现

  • 副本签名查询功能似乎尚未实现

技术参考

安全指标

CVSS v4基础指标

  • 攻击向量:网络(Network)
  • 攻击复杂度:高(High)
  • 所需权限:无(None)
  • 用户交互:被动(Passive)
  • 影响范围
    • 机密性:高(High)
    • 完整性:高(High)
    • 可用性:无(None)

弱点分类

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

时间线

  • 报告日期:2024年10月15日
  • GitHub审核:2024年10月15日
  • 最后更新:2025年1月23日
  • 修复提交:AstroxNetwork/agent_dart@0d20068

贡献者

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

建议措施

  1. 立即升级到修复版本1.0.0-dev.29或更高版本
  2. 审查所有使用Agent Dart库的应用程序
  3. 实施定期的安全审计和依赖项更新流程
  4. 参考agent-rs的实现来确保证书验证的正确性

该漏洞的发现和修复凸显了在分布式系统中实现正确的证书验证机制的重要性,特别是在涉及子网间信任边界的场景中。

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