已关闭
【缺陷报告】内存分配大小未受限 - 文件graph_utils.cc - 函数GraphUtils::ConvertFileConstToConst - 行号1030 #276
zhangjunkai9创建于 17 天前关闭于 11 天前
17 天前 将 gcw_V3YyYBt1 设为负责人
wangmingming
17 天前 评论:
17 天前 评论:
你好,感谢建议, 后续分析处理


11 天前 关闭了 issue
11 天前 添加了label:resolved
你好,感谢建议, 后续分析处理


缺陷信息
缺陷描述
函数 ConvertFileConstToConst 从反序列化图属性 kLength4Recover 读取 attr_length(外部图文件数据),第1026行仅有 attr_length > 0 的下界校验无上界校验,第1028行 static_cast<size_t>(attr_length) 后直接用于第1030行 ComGraphMakeUnique<char_t[]>(file_length) 分配内存(内部使用 new (std::nothrow) char_t[file_length])。分配发生在第1032行 GetBinFromFile(预分配缓冲区版本 file_utils.cc:197)的文件大小校验之前,过大值可导致 OOM/DoS。调用链可达:LoadGEGraph(第977行) -> 第1003行调用 ConvertFileConstToConst。
事实核查
数据流证据
传播路径:
调用链
可达调用链1 起点:
(entry functions)→ 终点:af::GraphUtils::ConvertFileConstToConst深度:1修复建议
在 attr_length > 0 检查之后、分配之前增加上界校验: GE_ASSERT_TRUE(attr_length > 0); constexpr int64_t kMaxFileLength = 2LL * 1024LL * 1024LL * 1024LL; GE_ASSERT_TRUE(attr_length <= kMaxFileLength, "attr_length exceeds maximum allowed size");