Agent Dart证书验证漏洞深度剖析:CVE-2024-48915技术细节

本文详细分析了Agent Dart库中一个高严重性安全漏洞CVE-2024-48915。该漏洞存在于证书验证模块,攻击者可利用此漏洞绕过关键的授权和时间戳检查,可能导致一个子网冒用另一个子网的身份签署容器响应,并且证书无有效过期时间。

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

漏洞详情

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

漏洞描述

lib/agent/certificate.dart中的证书验证被发现了两个问题:

  1. 委托验证缺失范围检查: 在委托验证过程中(位于_checkDelegation函数),canister_ranges未被验证。不检查canister_ranges的后果是,一个子网可以代表另一个子网签署容器响应。关于此实现的更多细节可参考互联网计算机规范,并可参考agent-rs中的实现方式。

  2. 证书时间戳未验证: 证书的时间戳(即/time路径)未被验证,这意味着证书实际上没有过期时间。互联网计算机规范并未指定具体的过期时间,但给出了建议:“对于R.signatures和证书Cert中的时间戳,合理的过期时间为5分钟(类似于IC主网强制执行的最大入口过期时间)。委托需要至少一周的过期时间,因为IC主网仅在副本升级后(通常每周一次)才会刷新委托”。作为参考,可查看agent-rs中的实现。

额外问题: 看起来副本签名查询功能尚未实现。

技术参考

  • GHSA ID: GHSA-fmj7-7gfw-64pg
  • 修复提交: AstroxNetwork/agent_dart@0d20068
  • NVD漏洞详情: https://nvd.nist.gov/vuln/detail/CVE-2024-48915
  • 相关代码文件:
    • https://github.com/AstroxNetwork/agent_dart/blob/f50971dfae3f536c1720f0084f28afbcf5d99cb5/lib/agent/certificate.dart#L162
    • https://github.com/AstroxNetwork/agent_dart/blob/main/lib/agent/certificate.dart

时间线

  • 2024年10月15日: 由AlexV525报告至AstroxNetwork/agent_dart仓库。
  • 2024年10月15日: 由国家漏洞数据库发布。
  • 2024年10月15日: 发布至GitHub Advisory Database并完成评审。
  • 2025年1月23日: 最后更新。

严重性评级

严重等级: 高 CVSS总体评分: 7.6 / 10

CVSS v4基础指标

可利用性指标:

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

脆弱系统影响指标:

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

后续系统影响指标:

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

CVSS v4向量: 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

EPSS评分

漏洞被利用概率(未来30天内): 0.066% (处于第20百分位)

相关弱点

  • CWE-295: 不正确的证书验证 - 产品未验证或错误地验证证书。
  • CWE-347: 不正确的加密签名验证 - 产品未验证或错误地验证数据的加密签名。

标识符

  • CVE ID: CVE-2024-48915
  • GHSA ID: GHSA-fmj7-7gfw-64pg

源代码仓库

AstroxNetwork/agent_dart

致谢

  • 报告者: eduarddfinity
  • 修复开发者: AlexV525
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计