
eMudhra 八个中间 CA 私钥被曝脆弱,TeamCity 新增健康报告提示
来源标题:The eMudhra Certificate Authority Compromise: What It Means for TeamCity
eMudhra 于 2026 年 10 月披露其运营的 8 个中间证书颁发机构私钥强度不足、可从公开数据中恢复,但称这些 CA 未签发终端实体证书,也未发现被利用的证据。TeamCity 本身不存在该漏洞,但其依赖的 Java 运行时信任库可能仍信任受影响证书。从 2026.2.2 和 2026.1.6 版本起,TeamCity 会在安装仍信任这些证书时显示健康报告并给出修复步骤。
以下正文由 AI 翻译自 JetBrains Blog(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。
概要
2026 年 10 月,eMudhra 运营的八个中间证书颁发机构的私钥被发现存在强度不足的问题,且可从公开数据中恢复。根据 eMudhra 的官方声明,受影响的中间 CA 均未签发终端实体(叶子)证书,且 eMudhra 未发现这些弱密钥在问题披露之前被恢复或利用的证据。
该问题并非 TeamCity 本身的漏洞。但是,TeamCity 所依赖的其他软件组件(主要是 Java 运行时)所维护的信任存储可能仍然信任这些已泄露的证书。从 2026.2.2 和 2026.1.6 版本开始,如果安装环境仍然信任受影响的证书,TeamCity 会显示健康报告,并提供修复步骤。
建议采取的措施:
- TeamCity On-Premises:检查服务器和构建代理的安装情况,并按照以下说明应用必要的修复。升级到 v2026.2.2 或 v2026.1.6,以获得适用于 Windows 代理安装程序的更新版 Java 运行时、更新后的 Docker 镜像以及健康报告;或者按照以下说明对当前安装应用相同的修复。
- TeamCity Cloud:TeamCity Cloud 已完成更新。上传到 TeamCity 的证书必须按照下文“上传到 TeamCity 的证书”一节所述进行审查。自托管构建代理也必须按照以下说明进行审查。
详情
2026 年 10 月 17 日,eMudhra 的八个中间 CA 的私钥被报告泄露,其中六个用于 TLS,两个用于代码签名。这是一起全行业范围的证书颁发机构事件,并非 TeamCity 特有的问题。使用这些密钥签发的证书,对于任何仍然信任它们的软件来说都会显得有效。
浏览器和操作系统厂商已发布更新,阻止这些已泄露的证书,系统在安装这些更新后即可受到保护。拥有独立信任存储的软件(例如 Java 运行时)在该信任存储更新之前,会继续信任这些已泄露的证书。TeamCity 的服务器和构建代理使用其 Java 运行时的信任存储。
TeamCity 的下载文件并非由 eMudhra CA 签名,因此不受影响。
你需要做什么
1. 更新 Java 运行时
- 确定每个服务器节点和代理所使用的 Java 运行时,包括通过 javax.net.ssl.trustStore 设置的任何自定义信任存储。
- 查看 Java 厂商针对 CVE-2026-91403 和 CVE-2026-114820 的发布说明。对于 Amazon Corretto 21,修复版本为 21.0.13.0.11 或更高版本。
- 更新受影响的运行时,并重启每个服务器节点或代理。
可选的信任存储验证可以识别信任存储中仍然存在的受影响证书。如果无法升级,请按照同一节中的手动缓解命令操作。
移除 AAA Certificate Services 可能会中断未受影响的服务;在移除该根证书之前,请测试依赖的连接。
2. 更新 TeamCity 服务器并审查上传的证书
以下服务器维护建议适用于 TeamCity On-Premises 安装。JetBrains 会为 TeamCity Cloud 打补丁,但上传到该服务的证书仍需审查。
- 尽可能升级 TeamCity。2026.2.2 和 2026.1.6 版本新增了健康报告和其他产品改进,并修复了其他漏洞。现有代理需要独立审查。
- 更新每个服务器节点上的 Java。即使升级了 TeamCity,也请遵循“更新 Java 运行时”一节的操作。
- 重新部署 Docker 安装。在补丁版 2026.2.2 或 2026.1.6 服务器镜像发布后,从 Docker Hub 拉取该镜像,或者按照服务器镜像说明重新构建现有镜像。重新创建容器。
- 审查上传的证书。使用健康报告或下方的证书检查命令,然后通过 Root 项目的 SSL / HTTPS Certificates 页面移除受影响的证书。更新 Java 不会移除已上传的证书。
更新 TeamCity 服务器不会更新集成或第三方软件。请按照“审查和更新配套基础设施”一节所述,单独审查这些组件。
3. 更新 TeamCity 代理并审查受信任的证书
- 更新每个构建代理上的 Java。请遵循“更新 Java 运行时”一节的操作。TeamCity Cloud 客户还必须审查其自托管代理所使用的 Java 运行时。健康报告不会检查代理。
- 更新 Docker 安装。从 Docker Hub 拉取补丁版 2026.2.2 或 2026.1.6 代理镜像。或者,使用与服务器镜像相同的重新构建说明来重新构建现有镜像。使用更新后的镜像重新创建容器。
- 审查代理证书。在 /conf/trustedCertificates 下运行“技术命令”一节的证书检查命令,并移除任何受影响的证书文件。更新 Java 不会移除这些证书。
4. 审查和更新配套基础设施
更新服务器不会更新集成或第三方软件。我们建议单独审查以下组件:
- 操作系统和构建工具:对操作系统信任存储、其他 Java 运行时、Git 和 MinGit、Python 的 certifi、Node.js 以及其他拥有独立信任存储的工具应用厂商更新。
- 自定义镜像:更新每个受影响镜像内的操作系统和工具,重新构建镜像,并重新创建容器。
- 连接的服务:通过 eMudhra 的迁移流程,替换 VCS 主机、包注册表和其他服务所使用的 eMudhra 证书。
技术命令
每个脚本都在顶部定义其环境变量:
- TEAMCITY_JRE:默认为 JAVA_HOME;如果 TeamCity 运行在其他 JRE 或 JDK 上,请修改该变量。
- TC_TRUSTSTORE:设置为任何自定义的 javax.net.ssl.trustStore(JDK 8 默认值:jre/lib/security/cacerts)。
- TC_STOREPASS:如果密码不同,请修改该变量。
- TC_CERT_DIR:在指定位置要检查的证书文件。
可选的信任存储验证
请注意,结果仅适用于所选定的信任存储。这些命令不会检查 blocked.certs。
(原文较长,此处译出前 6000 字,完整内容请点「打开原文」。)
正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。