发布日期: 2026 年 10 月 12 日
风险等级: 严重(Critical)
漏洞编号: CVE-2026-108753
涉及镜像: ghcr.io/agnaistic/agnaistic
CVSS: 9.4(Critical)
披露时间: NVD 与 VulnCheck 已收录,受影响版本止于 1.0.555
相关公告: VulnCheck
一、漏洞概述
Agnaistic(agnai)是可以自托管的应用。官方自托管文件 self-host.docker-compose.yml 把管理员初始口令 INITIAL_PASSWORD 写成 password,把 JWT 签名密钥 JWT_SECRET 写成 self-hosting。
按文档用这份 Compose 拉起、又没有改这两项时,口令和签名密钥都是公开的默认值。影响 1.0.555 及更早。
未认证攻击者可以用默认管理员登录。也可以用公开的 JWT 密钥签发带管理员标记的令牌,从而冒充用户、重置密码、修改服务器配置。
暴露面是按官方 Compose 把服务放到 3001 端口、且仍使用上述默认环境变量的自托管实例。
二、漏洞状态
统计截止: 2026 年 10 月 13 日(UTC+8)
| 项目 | 状态 |
|---|---|
| 漏洞细节 | 已公开(NVD、VulnCheck、官方 Compose) |
| 漏洞类型 | 自托管 Compose 中的硬编码管理员口令与 JWT 签名密钥 |
| 受影响版本 | 1.0.555 及更早 |
| 官方补丁 | NVD 与 VulnCheck 只标到 1.0.555,尚未给出明确的已修复版本号 |
| 前置条件 | 实例使用官方 Compose 的默认 INITIAL_PASSWORD / JWT_SECRET,且 3001 可被攻击者访问 |
| CISA KEV | 未列入 |
三、影响范围
1. 版本与发行形态
| 发行形态 | 受影响范围 | 处理 |
|---|---|---|
按官方 self-host.docker-compose.yml 部署的实例 | ≤ 1.0.555,且未更换上述默认值 | 立刻更换口令与 JWT 密钥 |
官方镜像 ghcr.io/agnaistic/agnaistic | 镜像不在 Docker Hub。版本落在上述区间、且 Compose 仍用默认值 | 更换环境变量后重建容器。不要把某个标签当成已经修好 |
问题写在官方 Compose 的环境变量里。只重拉镜像、不改 INITIAL_PASSWORD 和 JWT_SECRET,实例仍使用公开默认值。
2. 典型受影响场景
- 按官方文档把 3001 映射到宿主机或公网
- Compose 里仍是
INITIAL_PASSWORD=password与JWT_SECRET=self-hosting - 初始化之后没有在应用里改掉管理员口令
已经改过这两项、并且使旧令牌失效的实例,不在这条默认值的利用面上。
四、修复建议
1. 立刻更换默认口令和 JWT 密钥(推荐)
在上游给出明确修复版本之前,按下面做:
- 把
INITIAL_PASSWORD换成自行生成的管理员口令,不要继续用password。 - 已经用默认口令完成初始化的实例,还要在应用里改掉现有管理员口令。只改一个尚未被读过的环境变量,不会替换库里已经落上的口令。
- 把
JWT_SECRET换成自行生成的长随机值,不要继续用self-hosting。更换后重建并重启容器,使用旧密钥签发的令牌失效。 - 不要把仍使用这两项默认值的实例暴露到公网。
官方 Compose 片段:self-host.docker-compose.yml。
镜像坐标是 ghcr.io/agnaistic/agnaistic,从 GHCR 拉取。NVD 与 VulnCheck 还没有可以写成“已修复”的版本号,拉取新标签不能代替更换这两项。
2. 更换后检查账户
默认口令或默认 JWT 密钥曾经对不可信网络开放的,按管理员权限可能已被使用处理:重置管理员与用户口令,轮换该实例能访问到的下游凭据,并核对服务器配置有没有被改过。
五、临时缓解措施
在更换默认值之前:
-
撤掉对公网和不可信网络的 3001 发布
只留给需要管理的人访问。 -
不要用官方 Compose 里的默认值启动新实例
先改INITIAL_PASSWORD和JWT_SECRET,再创建容器。 -
盯上游的修复版本
目前公开记录止于 1.0.555。出现明确修复版之后再固定到该版本。
六、与轩辕镜像用户的相关说明
官方镜像在 GHCR,坐标是 ghcr.io/agnaistic/agnaistic,不在 Docker Hub。请从 GHCR 取得镜像。
轩辕镜像的加速拉取不能去掉 Compose 里的公开默认口令和 JWT 密钥。请先更换 INITIAL_PASSWORD 与 JWT_SECRET,再创建容器。配置与排错见 轩辕镜像使用手册、镜像拉取 FAQ。
七、参考链接
- NVD:CVE-2026-108753
- VulnCheck:agnaistic agnai through 1.0.555
- 官方 Compose:self-host.docker-compose.yml
轩辕镜像安全团队
2026 年 10 月 12 日
评论交流
免责声明
本博客文章所提供的内容、技术方案、配置示例及部署指南等信息,仅供学习交流和技术参考使用。文章内容基于发布时的技术环境和版本信息编写,可能因时间推移、技术更新或环境差异而存在不适用的情况。
用户在参考本博客内容进行部署操作前,应当充分了解相关技术风险,并建议在测试环境中进行充分验证和测试,确认无误后再考虑在生产环境中使用。生产环境部署前,请务必进行数据备份,并制定相应的回滚方案。
用户因使用本博客内容进行部署操作而产生的任何损失、数据丢失、系统故障、安全风险或其他问题,均由用户自行承担全部责任。轩辕镜像官方不对因使用本博客内容而产生的任何直接或间接损失承担责任。
本免责声明的最终解释权归轩辕镜像官方所有。
