本文使用的 Docker 镜像
发布日期: 2026 年 9 月 12 日
更新日期: 2026 年 10 月 15 日
更新内容: 44.14.7 不覆盖后来公开的 CVE-2026-110865、CVE-2026-110867、CVE-2026-110868。这三条请升到 44.79.0 或更高。
风险等级: 高危(High)
漏洞编号: CVE-2026-88887 · CVE-2026-88885 · CVE-2026-88886
相关公告: GHSA-v73q-hvqx-hxwx(凭据泄露)等
一、漏洞概述
Renovate 是广泛使用的依赖自动更新工具,常以 renovate/renovate 镜像或 npm 包跑在 CI / 自托管机器人中,用于扫描并升级容器镜像、Go 模块、Gradle Wrapper 等依赖。
近期官方披露多条高危问题,与 容器依赖扫描 和 binarySource=docker 场景高度相关。本文合并通报三条 CVE,便于运维与平台同学一次性排查。
1. CVE-2026-88887:Registry Link 分页附带凭据(High,约 8.6)
当 Renovate 列出镜像的 tag / digest 时,会跟随远端 registry 在 Link 响应头中给出的分页地址,并在请求「下一页」时 附带对该 registry 的凭据。
若 registry 恶意或已被控制,将 Link 指向攻击者控制的服务器,即可 窃取 原本应只发给合法 registry 的凭据。
说明: 官方指出该问题常以「registry 已被攻陷」为前提;若 registry 本身已失陷,攻击方往往已在初次请求中拿到凭据。本缺陷额外允许把凭据 外泄到新的位置。官方未提供完整绕过式临时方案;修复后可用
RENOVATE_X_DOCKER_PAGINATION_ALLOW_CROSS_ORIGIN显式放宽跨域分页(仅当信任该行为时使用)。
2. CVE-2026-88885:gomod 路径命令注入(High)
在 binarySource=docker 且启用相关 Go 更新选项(如 postUpdateOptions 含 gomodUpdateImportPaths)时,gomod 管理器对依赖名(depName)插值处理不当,恶意依赖名中的 shell 元字符可能导致 以 Renovate 运行用户身份执行任意命令(常见于 Go 模块 major 版本更新场景)。
3. CVE-2026-88886:gradle-wrapper 路径命令注入(High)
在 自托管、binarySource=docker,且 allowedUnsafeExecutions 中包含 gradleWrapper 时,从仓库 gradle/wrapper/gradle-wrapper.properties 读取的 distributionUrl 未正确转义 即交给 Gradle Wrapper CLI。攻击者可构造恶意 distributionUrl(例如拼接 shell 元字符),在处理 Wrapper 更新时执行任意命令。
二、漏洞状态
统计截止: 2026 年 9 月 12 日(UTC+8)
| 项目 | CVE-2026-88887 | CVE-2026-88885 / 88886 |
|---|---|---|
| 风险 | High(约 8.6) | High |
| 类型 | 凭据外泄(分页 Link) | 命令注入 |
| 官方补丁 | 已发布 | 已发布 |
| 临时缓解 | 无完整 workaround(见官方) | 可关闭触发配置(见第五节) |
三、影响范围
1. 版本与发行形态
| 发行形态 | 与 88887(凭据)相关 | 与 88885 / 88886(命令注入)相关 |
|---|---|---|
npm renovate / 镜像 renovate/renovate | < 44.11.2 | 建议 ≥ 44.14.7(覆盖命令注入修复) |
| Mend Renovate CE / EE 镜像 | < 15.4.0 | 按发行说明升至含修复版本(常与 CE/EE 15.4.0 线对齐,以官方 advisory 为准) |
| Mend Helm EE chart | < 10.4.0(chart 10.4.0 起含 88887 修复) | 以官方 chart / 镜像说明为准 |
实操建议: 若使用开源 renovate/renovate 镜像,直接升到 ≥ 44.14.7(或当前最新稳定版),可同时覆盖凭据泄露与两条命令注入的修复线。
2. 典型受影响场景
- CI / 自托管机器人使用 Renovate 扫描容器镜像依赖(88887)
- 自托管 Renovate,且
binarySource=docker(88885 / 88886) - Go 项目启用
gomodUpdateImportPaths等会触发易损路径的选项(88885) - Gradle 项目且显式允许
gradleWrapper不安全执行(88886)
风险边界提示:
- 88887 依赖「能与(恶意 / 被控)registry 交互并携带凭据」的前置条件。
- 88885 / 88886 多需 非默认配置组合;未使用
binarySource=docker或未打开对应选项时,实际触发面显著缩小,仍建议升级。
四、修复建议
1. 升级 Renovate(推荐)
| 产品线 | 最低建议安全版本 |
|---|---|
开源 Renovate(npm / renovate/renovate) | ≥ 44.14.7(至少覆盖 88887 的 44.11.2,并含 88885 / 88886) |
| Mend Renovate CE / EE | ≥ 15.4.0(以官方安全公告为准) |
| Mend Renovate EE Helm chart | ≥ 10.4.0 |
Docker Hub 官方镜像: renovate/renovate
轩辕镜像对应路径: xuanyuan.cloud/zh/r/renovate/renovate(请在站内打开核对当前可用 tag)
拉取示例(请将标签替换为你确认的安全版本):
bashdocker pull docker.xuanyuan.run/renovate/renovate:44.14.7
具体 tag 以 Hub / 轩辕站内列表及官方 Release 为准;生产环境避免依赖未审计的浮动标签作为唯一依据。
2. 版本与配置自查
bash# 容器内或 CI 中查看 Renovate 版本(以实际入口为准) renovate --version
同时检查配置中是否存在:
binarySource: "docker"postUpdateOptions含gomodUpdateImportPathsallowedUnsafeExecutions含gradleWrapper- 是否对不可信 / 第三方 registry 使用长期凭据做依赖扫描
五、临时缓解措施
在无法立即完成升级前,可按 CVE 分别缓解:
针对 CVE-2026-88887
- 官方 无完整 workaround;优先升级。
- 缩小不可信 registry 的扫描范围;轮换可能已暴露的 registry 凭据 / token。
- 修复后勿轻易开启
RENOVATE_X_DOCKER_PAGINATION_ALLOW_CROSS_ORIGIN,除非明确信任跨域分页场景。
针对 CVE-2026-88885
- 关闭
gomodUpdateImportPaths,或避免对 gomod 使用binarySource=docker。
针对 CVE-2026-88886
- 从
allowedUnsafeExecutions中移除gradleWrapper。 - 审计仓库内
gradle-wrapper.properties的distributionUrl,拒绝异常拼接。
六、与轩辕镜像用户的相关说明
轩辕镜像提供的是 镜像加速与拉取服务,不替代 你对 Renovate 应用版本的升级与配置加固。
- 使用轩辕拉取
renovate/renovate不会自动变成安全版本;请将镜像 tag 固定为 已含修复的版本(建议 ≥ 44.14.7)。 - 可通过 轩辕镜像专业版 加速拉取 Docker Hub 上的
renovate/renovate,站内路径见:renovate/renovate。 - 配置与排错可参考:轩辕镜像使用手册、镜像拉取 FAQ。
七、参考链接
- Renovate 安全公告(Link 分页凭据):GHSA-v73q-hvqx-hxwx
- Docker Hub:renovate/renovate
- 轩辕站内镜像页:renovate/renovate
- 项目主页:https://github.com/renovatebot/renovate
轩辕镜像安全团队
2026 年 9 月 12 日
评论交流
免责声明
本博客文章所提供的内容、技术方案、配置示例及部署指南等信息,仅供学习交流和技术参考使用。文章内容基于发布时的技术环境和版本信息编写,可能因时间推移、技术更新或环境差异而存在不适用的情况。
用户在参考本博客内容进行部署操作前,应当充分了解相关技术风险,并建议在测试环境中进行充分验证和测试,确认无误后再考虑在生产环境中使用。生产环境部署前,请务必进行数据备份,并制定相应的回滚方案。
用户因使用本博客内容进行部署操作而产生的任何损失、数据丢失、系统故障、安全风险或其他问题,均由用户自行承担全部责任。轩辕镜像官方不对因使用本博客内容而产生的任何直接或间接损失承担责任。
本免责声明的最终解释权归轩辕镜像官方所有。
