本文使用的 Docker 镜像
发布日期: 2026 年 10 月 15 日
风险等级: 严重(Critical)
漏洞编号: CVE-2026-73802
涉及镜像: gitea/runner — 轩辕镜像 · Docker Hub
CVSS: 9.9(Critical)
披露时间: 2026 年 10 月,Gitea 安全公告
相关公告: GHSA-x4q3-gcj3-m6cf
一、漏洞概述
这是 Gitea Actions 的官方 runner(原先的 act_runner),不是 Gitea 服务端镜像。当前镜像坐标是 gitea/runner。gitea/act_runner 已弃用,并迁到这一坐标。
3.0.0 之前,runner 即使没有开启 privileged,工作流可以控制的 jobs.*.container.options 仍会被写进 Docker HostConfig。程序强制了 Privileged=false,但宿主机命名空间和能力相关的选项仍然生效,包括 --pid=host、--ipc=host、--cap-add=ALL,以及把 seccomp 或 AppArmor 设为 unconfined。工作流作者可以由此进入宿主机命名空间,并以 root 执行命令。
共享 Docker 后端的 runner、且不可信用户可以提交工作流时,这条是严重问题。单租户同样会削弱「已经关闭 privileged」这条边界:关闭 privileged 并没有挡住上述选项。
二、漏洞状态
统计截止: 2026 年 10 月 15 日(UTC+8)
| 项目 | 状态 |
|---|---|
| 漏洞细节 | 已公开(Gitea 安全公告、NVD) |
| 漏洞类型 | 未开启 privileged 时,工作流选项仍可把任务容器放进宿主机命名空间 |
| 受影响版本 | runner 低于 3.0.0(含镜像标签 2.x) |
| 官方补丁 | 3.0.0 及更高。危险 options 须由管理员显式开启 privileged 才允许 |
| 前置条件 | 能向这个 runner 提交工作流。共享 runner 上的任意工作流作者即可 |
| CISA KEV | 未列入 |
三、影响范围
1. 版本与发行形态
| 发行形态 | 受影响范围 | 修复 |
|---|---|---|
| Gitea Actions runner | < 3.0.0 | ≥ 3.0.0 |
官方镜像 gitea/runner | 标签 2.x 以及低于 3.0.0 的版本 | Docker Hub 已有 3.0.0、3.0.1,以及更新的 5.1.0 |
旧镜像 gitea/act_runner | 已弃用,Hub 上没有 3.0.0 | 改用 gitea/runner |
修复标签在 gitea/runner 上。继续拉取 gitea/act_runner 到不了 3.0.0。
2. 典型受影响场景
- 一台 runner 给多个仓库或不可信贡献者跑 Actions,Docker 后端是共享的
- 管理员以为关掉 privileged 就已经挡住宿主机命名空间、全部 capabilities 和 unconfined 的 seccomp / AppArmor
- runner 宿主机上还有其他任务的凭据,或能访问内网
工作流只有管理员能改、且 runner 已经是 3.0.0 或更高时,不在这条修复线以下。
四、修复建议
1. 把 runner 升到 3.0.0 或更高(推荐)
| 形态 | 最低建议版本 |
|---|---|
gitea/runner | 3.0.0 |
Hub 上 3.0.1 和 5.1.0 同样不低于修复线。5.1.0 是当前较新的正式标签。
Docker Hub: gitea/runner
轩辕镜像: gitea/runner
bashdocker pull docker.xuanyuan.run/gitea/runner:3.0.0
把仍在使用的 gitea/runner:2.x 或 gitea/act_runner 换成 gitea/runner:3.0.0(或 3.0.1、5.1.0)后,重新创建 runner 容器。升级后确认 runner 版本不低于 3.0.0。
镜像标签不带 v。v3.0.0 在 Hub 上不存在。
发行说明:Gitea Runner 3.0.0。
2. 确需危险 options 时单独放行
3.0.0 起,这类宿主机选项不再在 privileged 关闭时生效。业务确实要 --pid=host 或放开 seccomp 时,由管理员显式开启 privileged,不要为了兼容旧工作流停留在 2.x。
3. 升级前跑过不可信工作流的宿主机
按 runner 宿主机可能已被进入处理:更换 runner 注册令牌和该机上的任务凭据,核对同机其他任务与内网访问。不要只重启旧的 2.x 容器。
五、临时缓解措施
在完成升级之前:
-
不要让不可信用户向低于 3.0.0 的 runner 提交工作流
共享 runner 上,工作流作者就可以尝试进入宿主机命名空间。 -
不要把「已关闭 privileged」当成足够的隔离
2.x 仍会应用 pid、ipc、capabilities 和 seccomp / AppArmor 相关选项。 -
先换成 gitea/runner:3.0.0,再恢复共享
旧坐标gitea/act_runner没有 3.0.0 这个修复标签。
六、与轩辕镜像用户的相关说明
轩辕镜像提供的是镜像加速与拉取服务,不替代 runner 的版本升级。
- 站内页:gitea/runner。拉取命令为
docker.xuanyuan.run/gitea/runner:3.0.0。 - 旧坐标 gitea/act_runner 已弃用。加速拉取旧镜像不会变成 3.0.0。
- 配置与排错见 轩辕镜像使用手册、镜像拉取 FAQ。
七、参考链接
- Gitea:GHSA-x4q3-gcj3-m6cf
- NVD:CVE-2026-73802
- 发行说明:Gitea Runner 3.0.0
- Docker Hub:gitea/runner
- 轩辕站内镜像页:gitea/runner
轩辕镜像安全团队
2026 年 10 月 15 日
评论交流
免责声明
本博客文章所提供的内容、技术方案、配置示例及部署指南等信息,仅供学习交流和技术参考使用。文章内容基于发布时的技术环境和版本信息编写,可能因时间推移、技术更新或环境差异而存在不适用的情况。
用户在参考本博客内容进行部署操作前,应当充分了解相关技术风险,并建议在测试环境中进行充分验证和测试,确认无误后再考虑在生产环境中使用。生产环境部署前,请务必进行数据备份,并制定相应的回滚方案。
用户因使用本博客内容进行部署操作而产生的任何损失、数据丢失、系统故障、安全风险或其他问题,均由用户自行承担全部责任。轩辕镜像官方不对因使用本博客内容而产生的任何直接或间接损失承担责任。
本免责声明的最终解释权归轩辕镜像官方所有。
