从这个网页截图中,可以获取到以下关于漏洞的关键信息: 1. 漏洞描述: - 标题:Out-of-memory during deserialization with crafted inputs - 发布者:ivokub - 漏洞编号:GHSA-cph5-3pgr-c82g - 发布时间:2天前 2. 受影响的版本: - 受影响的版本:v0.11.0 3. 漏洞详情: - 严重性:Critical -> DoS - 受影响组件:Deserialization - 环境: - 编译器版本:go version go1.22.2 linux/amd64 - 发行版版本:Ubuntu 24.04.1 LTS - 额外环境细节: - github.com/consensys/gnark v0.11.0 - github.com/consensys/gnark-crypto v0.14.1-0.20240909142611-e6b99e74ec1 4. 重现步骤: - 下载所需的文件:https://drive.google.com/drive/folders/1KQ5I3vv4bUllvqbatGappwbAkIcR2NI?usp=sharing - 在终端中运行: 5. 根本原因分析: - 代码加载 时,通过调用 函数。这个函数在 库中实现。 - 代码使用BN-254曲线,位于 目录下。 - 在 处,分配了一个长度为 的切片。这个变量直接从反序列化的文件中提取,其值为 。这个大值可能太大,导致内存分配大约±1 TB,如 所示。 6. 详细行为: - 提供了堆栈跟踪,显示了内存耗尽的错误。 7. 附录: - 这个问题也可能发生在 上。 8. 影响: - 证明者和验证者的服务拒绝(公共密钥,验证密钥)。 9. 补丁: - 该问题已修复,合并到 主分支,版本号为 。 - 修复将在下一个次要版本 (v0.11.1)中包含。 10. 工作原理: - 目前没有方便的工作原理。最好的方法是将密钥验证作为单独的服务运行,当验证密钥来自不可信来源时,暂停验证管道。