通过 `ic_cdk::call` 调用 canister 方法时发生内存泄漏 (CVE-2024-7884)

admin 2024-09-09 03:04:43 Ali_nvd 来源:ZONE.CI 全球网 0 阅读模式
通过 `ic_cdk::call` 调用 canister 方法时发生内存泄漏 (CVE-2024-7884)

CVE编号

CVE-2024-7884

利用情况

暂无

补丁情况

N/A

披露时间

2024-09-05
漏洞描述
当一个通过ic_cdk::call*方法调用罐体方法时,会创建一个新的Future CallFuture,调用者可以等待它来获取执行结果。在内部,Future的状态被跟踪并存储在一个名为CallFutureState的结构中。CallFuture的轮询实现中存在一个漏洞,允许对此内部状态持有多个引用,并且在Future解决之前并非所有引用都已释放。由于我们持有未计数的引用,内部状态的一个副本最终会持久保存在罐体的堆中,从而导致内存泄漏。影响:使用Rust构建的带有ic_cdk和ic_cdk_timers的罐体会受到影响。如果这些罐体调用罐体方法、使用计时器或心跳功能,那么每次此类操作都可能导致少量内存泄漏。在最坏的情况下,这可能会因攻击者的行为而触发堆内存耗尽。基于Motoko的罐体不受此漏洞的影响。补丁:该补丁已回滚到所有>= 0.8.0、<= 0.15.0的次要版本。可用的修补版本为0.8.2、0.9.3、0.10.1、0.11.6、0.12.2、0.13.5、0.14.1和0.15.1,之前的版本已被撤销。解决方案:目前尚无已知的解决方案。建议开发人员尽快将其罐体升级到最新的可用修补版ic_cdk,以避免耗尽Wasm堆内存。升级罐体(不更新ic_cdk)也可以释放泄漏的内存,但这只是一个临时解决方案。
解决建议
"将组件 ic-cdk 升级至 0.10.1 及以上版本""将组件 ic-cdk 升级至 0.11.5 及以上版本""将组件 ic-cdk 升级至 0.15.1 及以上版本""将组件 ic-cdk 升级至 0.9.3 及以上版本""将组件 ic-cdk 升级至 0.8.2 及以上版本""将组件 ic-cdk 升级至 0.12.2 及以上版本""将组件 ic-cdk 升级至 0.13.4 及以上版本""将组件 ic-cdk 升级至 0.14.1 及以上版本"
参考链接
https://docs.rs/ic-cdk/latest/ic_cdk/
https://github.com/dfinity/cdk-rs/pull/509
https://internetcomputer.org/docs/current/references/ic-interface-spec
CVSS3评分 N/A
  • 攻击路径 N/A
  • 攻击复杂度 N/A
  • 权限要求 N/A
  • 影响范围 N/A
  • 用户交互 N/A
  • 可用性 N/A
  • 保密性 N/A
  • 完整性 N/A
N/A
CWE-ID 漏洞类型
- avd.aliyun.com
weinxin
版权声明
本站原创文章转载请注明文章出处及链接,谢谢合作!
评论:0   参与:  0