本文使用的 Docker 镜像
发布日期: 2026 年 10 月 21 日
风险等级: 严重(Critical,CVSS 4.0);NVD CVSS 3.1 为高危 8.1
漏洞编号: CVE-2026-114087
涉及镜像: ghcr.io/triggerdotdev/trigger.dev — 轩辕镜像 · GHCR · ghcr.io/triggerdotdev/supervisor — GHCR
CVSS: 9.2(Critical,CVSS 4.0);CVSS 3.1 为 8.1(High)
披露时间: 2026 年 10 月 21 日
相关公告: GHSA-pqxw-g93w-hj9x
一、漏洞概述
Trigger.dev 是可以自托管的任务与工作流平台。官方 Compose 把 webapp 放在 ghcr.io/triggerdotdev/trigger.dev,把 worker 放在 ghcr.io/triggerdotdev/supervisor。标签由 TRIGGER_IMAGE_TAG 决定,未设置时回落到 latest。
4.5.6 之前,hosting/docker/.env.example 写有公开的默认密钥,其中包含 MAGIC_LINK_SECRET。把示例文件直接用于生产、又没有轮换的实例,攻击者可以伪造 magic-link 令牌,用任意邮箱登录。登录之后,还能在基础设施网络上访问仍使用默认凭据的 Postgres、Redis 和 ClickHouse。
后果包括租户数据、API Key、可被解密的 ENCRYPTION_KEY、跨租户访问,以及向捆绑的镜像仓库推送被篡改的镜像、改动队列。
二、漏洞状态
统计截止: 2026 年 10 月 21 日(UTC+8)
| 项目 | 状态 |
|---|---|
| 漏洞细节 | 已公开(厂商 GHSA、NVD) |
| 漏洞类型 | 自托管 Compose 使用公开默认密钥,可伪造登录(CWE-653) |
| 受影响版本 | Trigger.dev 低于 4.5.6 的官方 Docker Compose(webapp 与 worker) |
| 官方补丁 | ≥ 4.5.6。GHCR 上 trigger.dev 与 supervisor 均已有标签 v4.5.6 |
| 在野利用 | 未见确认利用 |
| CISA KEV | 未列入 |
三、影响范围
1. 版本与发行形态
| 发行形态 | 受影响范围 | 修复标签 |
|---|---|---|
| 官方 Compose 的 webapp | ghcr.io/triggerdotdev/trigger.dev,低于 v4.5.6 | v4.5.6 |
| 官方 Compose 的 worker | ghcr.io/triggerdotdev/supervisor,低于 v4.5.6 | v4.5.6 |
未改过的 .env.example | 默认密钥仍是公开值 | 用 generate-secrets.sh 重新生成,不要保留示例值 |
4.5.6 的发行说明写明:新的自托管部署不再附带共享默认凭据,全新安装会自己生成。已经在用以前公开默认值的实例,必须先写成自己的密钥再升级;否则需要临时打开迁移开关才能继续启动。
Docker Hub 上的 triggerdotdev/trigger.dev 没有 v4.5.6,最后可见标签停在 2023 年的 main。不要从那里拉取来修这条公告。supervisor 没有 Hub 仓库。
2. 典型受影响场景
- 生产环境直接使用
hosting/docker/.env.example里的默认密钥,尤其是MAGIC_LINK_SECRET - webapp 可以从不可信网络访问
- Postgres、Redis、ClickHouse 仍使用 Compose 示例中的默认凭据,并且与 webapp 在同一套基础设施网络里
已经换成独立随机密钥的实例,不走这条伪造登录路径。镜像低于 4.5.6 时,仍应升级。
四、修复建议
1. 升级到 v4.5.6,并更换密钥(推荐)
先为现有环境生成新密钥,确认不再使用示例默认值,再把 webapp 和 worker 都固定到 v4.5.6。
*** 是个人中心的专属域前缀,拉取前换成自己的前缀。这个域名不要用 GitHub PAT 执行 docker login。
bashdocker pull ***-ghcr.xuanyuan.run/triggerdotdev/trigger.dev:v4.5.6 docker pull ghcr.io/triggerdotdev/supervisor:v4.5.6
worker 的轩辕站内页当前没有可用详情,supervisor 从 GHCR 拉取。把 Compose 里的 TRIGGER_IMAGE_TAG 设为 v4.5.6,不要继续用未固定的 latest 表示已经修好。
密钥脚本:generate-secrets.sh。发行说明:v4.5.6。
若实例仍是以前公开的默认值,升级前先写入独立密钥。需要先把服务拉起来再迁的,可以临时设置 ALLOW_INSECURE_DEFAULT_SECRETS=true,迁完立即关掉。这个开关只为了过渡,不能当作修复。
线上轮换要先备份。强制轮换可能让已有加密数据、会话和卷无法继续使用。
2. 密钥已经暴露过时
按登录和数据库都可能被使用过处理:轮换 MAGIC_LINK_SECRET、ENCRYPTION_KEY、数据库口令和 API Key,检查捆绑镜像仓库里是否有未授权推送,再用新密钥重建。
五、临时缓解措施
在升到 v4.5.6 之前:
-
不要把
.env.example的默认值用于任何可访问环境
公开的MAGIC_LINK_SECRET可以伪造登录。 -
先收紧 webapp 的入口,并改掉数据库默认凭据
伪造登录之后,默认同网络里的 Postgres、Redis、ClickHouse 会扩大影响。 -
不要把
latest或 Docker Hub 上的旧main标签当成 4.5.6
修复标签是 GHCR 上的 v4.5.6。webapp 与 supervisor 要一起换。
六、与轩辕镜像用户的相关说明
轩辕镜像提供的是镜像加速与拉取服务,不替代 Trigger.dev 的版本修复。只换镜像、不换密钥,默认密钥仍然有效。
- 站内页:ghcr.io/triggerdotdev/trigger.dev。拉取命令为
***-ghcr.xuanyuan.run/triggerdotdev/trigger.dev:v4.5.6。 ghcr.io/triggerdotdev/supervisor:v4.5.6从 GHCR 拉取。- 配置与排错见 轩辕镜像使用手册、镜像拉取 FAQ。
七、参考链接
- 厂商通告:GHSA-pqxw-g93w-hj9x
- NVD:CVE-2026-114087
- 发行说明:v4.5.6
- 密钥脚本:generate-secrets.sh
- GHCR:trigger.dev · supervisor
- 轩辕站内镜像页:ghcr.io/triggerdotdev/trigger.dev
轩辕镜像安全团队
2026 年 10 月 21 日
评论交流
免责声明
本博客文章所提供的内容、技术方案、配置示例及部署指南等信息,仅供学习交流和技术参考使用。文章内容基于发布时的技术环境和版本信息编写,可能因时间推移、技术更新或环境差异而存在不适用的情况。
用户在参考本博客内容进行部署操作前,应当充分了解相关技术风险,并建议在测试环境中进行充分验证和测试,确认无误后再考虑在生产环境中使用。生产环境部署前,请务必进行数据备份,并制定相应的回滚方案。
用户因使用本博客内容进行部署操作而产生的任何损失、数据丢失、系统故障、安全风险或其他问题,均由用户自行承担全部责任。轩辕镜像官方不对因使用本博客内容而产生的任何直接或间接损失承担责任。
本免责声明的最终解释权归轩辕镜像官方所有。
