Sonatype Nexus Repository 3.91.0 漏洞及修复总结 漏洞概述 Sonatype Nexus Repository 3.91.0 版本主要修复了多个仓库类型(npm, PyPI, Docker, Maven, Swift, Terraform等)中的功能缺陷、元数据缓存错误、垃圾回收问题以及高可用性环境下的并发和稳定性问题。这些修复旨在提高系统的可靠性、正确性和安全性。 影响范围 npm 和 PyPI 仓库: 组仓库(Group Repositories)的元数据缓存逻辑错误,导致包索引页面缓存不准确。 npm 审计请求(audit requests)在无依赖项时无法成功完成。 组仓库无法正确显示所有包文件或应用基于策略的版本过滤。 APT 代理仓库在移除上游包后无法正确提供缓存包。 PyPI 代理仓库不支持空的 Remote Index Path 设置。 Docker 仓库: 删除 Docker Manifest 时未移除关联的标签,影响仓库完整性。 垃圾回收(Garbage Collection)未能正确处理所有 Manifest,导致数据丢失风险。 无法接受包含连续下划线的镜像名称。 标签列表请求限制不当,导致超时或崩溃。 防火墙超时错误处理不当(返回 504 而非 404)。 匿名拉取权限评估逻辑错误。 容器启动脚本导致 JVM 内存参数重复。 无法识别和处理 zstd 压缩层。 远程内容验证失败时返回错误的 HTTP 状态码(400 Bad Request 而非 404 Not Found)。 其他仓库格式: Maven:严格内容类型验证拒绝 macOS Mach-O 可执行文件;清理策略评估错误。 Swift/Terraform:代理配置需通过 UI 进行;Terraform 模块归档未自动重新打包。 Hugging Face:无法正确处理包含空格和特殊字符的文件名。 Conan:无法接受 Conan 2.0 客户端的元数据文件;搜索不存在包时返回无效 JSON。 Yum:无法正确识别签名 RPM 包的架构。 Go:删除文件夹时未移除关联组件。 系统稳定性与高可用性: IQ Server 集成导致系统死锁或节点无响应。 高可用性节点间并发威胁请求检索失败。 会话超时设置在 HA 部署中未正确应用。 大文件(500MB+)扫描导致内存耗尽。 修复方案 升级版本:将 Sonatype Nexus Repository 升级至 3.91.0 版本。 具体修复措施: 缓存与元数据:优化 npm 和 PyPI 组仓库的缓存逻辑,确保元数据准确并正确应用策略过滤。 Docker 行为修正:修正 Manifest 删除、垃圾回收算法、标签列表限制及错误状态码返回逻辑(如将 400 改为 404)。 兼容性增强:支持 macOS Mach-O 文件、Conan 2.0 元数据、包含特殊字符的文件名等。 稳定性提升:修复 IQ Server 集成导致的死锁问题,优化高可用性环境下的并发请求处理和会话超时设置,引入流式解析器以处理大文件扫描。