Agent Dart证书验证漏洞分析与修复

本文详细分析了Agent Dart库中存在的证书验证漏洞CVE-2024-48915,包括委托验证缺失和证书时间戳未验证等问题,并提供了修复方案和受影响版本信息。

Agent Dart证书验证漏洞分析

漏洞概述

Agent Dart库在证书验证过程中存在两个关键安全问题:

技术细节

委托验证缺陷

lib/agent/certificate.dart文件的_checkDelegation函数中,未正确验证canister_ranges参数。这一缺陷导致子网能够代表其他子网签署容器响应,违反了IC规范要求。具体实现可参考agent-rs库中的正确实现方式。

时间戳验证缺失

证书中的时间戳路径(/time)未经验证,导致证书实际上没有过期时间限制。根据IC规范建议:

  • 时间戳的合理过期时间应为5分钟
  • 委托验证需要至少一周的过期时间,因为IC主网仅在副本升级后刷新委托(通常每周一次)

其他问题

副本签名查询功能尚未实现。

影响范围

受影响版本:<= 1.0.0-dev.28 已修复版本:1.0.0-dev.29

安全评分

CVSS总体评分:7.6(高危)

CVSS v4基础指标

  • 攻击向量:网络
  • 攻击复杂度:高
  • 机密性影响:高
  • 完整性影响:高

参考链接

弱点分类

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

时间线

  • 2024年10月15日:漏洞报告
  • 2024年10月15日:发布至NVD
  • 2024年10月15日:发布至GitHub咨询数据库
  • 2025年1月23日:最后更新
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计