漏洞概述 该漏洞涉及在加载模型或权重时,HDF5(Hierarchical Data Format 5)文件中的“形状炸弹”数据集可能导致内存分配和OOM(Out of Memory)问题。具体来说,HDF5数据集声明的内存大小远大于实际存储在磁盘上的数据量,导致在读取时进行巨大的内存分配。 影响范围 受影响组件:Keras框架中的 文件。 具体路径: 中的 函数。 潜在风险:恶意构造的HDF5文件可以触发此漏洞,导致系统资源耗尽,甚至崩溃。 修复方案 1. 增加内存限制: - 在 函数中,增加对HDF5数据集声明内存大小的检查。 - 如果声明的内存大小超过设定的阈值( ),则抛出异常。 2. 调整阈值: - 将 从1 GiB提高到4 GiB,以保持一致性。 - 设置 为1000,限制最大扩展倍数。 3. 错误处理: - 在检测到形状炸弹时,抛出 异常,并提示拒绝加载潜在的解压缩/形状炸弹。 POC代码 以下是修复后的代码片段: 测试代码 以下是相关的测试代码,用于验证修复效果: 以上代码展示了如何检测和防止HDF5形状炸弹漏洞,确保系统的安全性和稳定性。