CVE-2026-39396OpenBao是一款开源的身份感知秘密管理系统。在2.5.3版本之前,其OCI插件下载器中的`ExtractPluginFromImage()`函数存在安全漏洞。该函数在从容器镜像提取插件二进制文件时,使用`io.Copy`流式传输解压后的tar数据,且未对写入字节数设置上限。攻击者若控制或破坏了受害者配置引用的OCI注册表,可提供包含解压缩炸弹的特制镜像,解压后生成任意大的文件。由于完整性检查在文件完全写入后进行,此时磁盘耗尽已发生,导致拒绝服务。
该漏洞源于OpenBao处理OCI插件镜像时的逻辑缺陷。具体而言,`ExtractPluginFromImage()`函数负责从容器镜像中提取插件,它通过`io.Copy`将解压流直接写入磁盘。关键问题在于代码未对解压后的数据大小进行限制或配额控制。攻击者可以构造一个恶意的压缩包(解压缩炸弹),其中包含极小的压缩数据(如几KB的gzip文件),但在解压时会膨胀成巨大的文件(如几十GB)。当OpenBao尝试拉取并处理受控注册表中的恶意镜像时,它会消耗大量磁盘空间,导致系统资源耗尽。虽然系统设计了SHA256完整性校验,但该校验步骤位于文件写入完成之后,属于“事后检查”,无法防止写入过程中的资源耗尽攻击。