内容提要
GitHub修复了一个容器漏洞,该漏洞允许访问生产容器中的凭据。影响仅限于一个漏洞赏金研究员,但为了预防起见,凭据已经被更换。该漏洞也存在于GitHub企业服务器上,但需要一个具有组织所有者角色的经过身份验证的用户才能利用。GHES版本3.8.13、3.9.8、3.10.5和3.11.3有可用的补丁。更换凭据导致了服务中断,但流程已经改进。用户可能需要采取额外措施来旋转GitHub提交签名密钥和客户加密密钥。
延伸解读
GHES 漏洞利用门槛较高,但补丁仍需尽快应用
文章指出,该容器漏洞同样影响 GitHub Enterprise Server,但利用条件较为苛刻:攻击者需要是已通过身份验证且拥有组织所有者角色的用户,并登录到 GHES 实例。这显著降低了被利用的风险。尽管如此,GitHub 仍为 3.8.13、3.9.8、3.10.5 和 3.11.3 版本发布了补丁,并建议客户尽快应用。对于使用这些版本的企业,及时升级仍是必要的安全措施。
提交签名密钥轮换:外部验证和 Codespace 用户需留意
GitHub 于 2024 年 1 月 16 日启用新的 GPG 提交签名密钥,旧密钥同日过期。若你在 GitHub 之外验证 GitHub.com 的提交(包括在 GHES 中验证),需要导入新的公钥,并建议定期拉取以确保使用最新数据。此外,若你的 Codespace 启用了提交签名且尚未推送提交,需在 1 月 23 日前推送旧提交,否则这些提交将不再显示为已验证,除非重新签名。使用自有 GPG 密钥的用户不受影响。
客户加密密钥已轮换,硬编码或缓存旧密钥可能导致错误
GitHub Actions、GitHub Codespaces 和 Dependabot 的客户加密公钥已于 2024 年 1 月 16 日轮换。如果你在代码中硬编码或缓存了旧公钥,向 GitHub 发送新密钥时可能会收到错误提示,指出提供的 key_identifier 不是最新版本,并建议调用 GET /secrets/public-key 获取最新公钥后重新加密数据。为避免此类问题,建议定期从 API 拉取公钥,以确保始终使用最新版本。
Q&A
GitHub 最近修复的容器漏洞具体是什么?影响范围有多大?
该漏洞允许访问生产容器中的凭据,于2023年12月26日通过漏洞赏金计划报告,GitHub当天修复并开始轮换所有可能暴露的凭据。调查确认影响仅限于一名漏洞赏金研究员,但出于谨慎仍轮换了凭据。
GitHub Enterprise Server 是否受此漏洞影响?哪些版本需要打补丁?
是的,GHES 也受此漏洞影响,但利用需要具有组织所有者角色的已认证用户登录。补丁已于2024年1月16日发布,适用于 GHES 版本 3.8.13、3.9.8、3.10.5 和 3.11.3,建议客户尽快应用。
凭据轮换导致了服务中断吗?GitHub 采取了什么措施?
是的,在2023年12月27日至29日期间,凭据轮换导致了一些服务中断。GitHub 已改进凭据轮换流程,以降低未来计划外停机的风险。
GitHub 提交签名密钥轮换后,用户需要做什么?
如果用户在 GitHub 外部验证 GitHub.com 的提交(包括在 GHES 中验证),需要导入新的公钥(托管在此处),并建议定期拉取公钥以确保使用最新数据。如果用户有启用了提交签名的 GitHub Codespace 且尚未推送提交,需在2024年1月23日前将2024年1月16日之前创建的所有提交推送到仓库,否则这些提交将不再显示为已验证,除非重新签名。使用自己的 GPG 密钥签名提交的用户无需操作。
GitHub Actions、Codespaces 和 Dependabot 的客户加密密钥轮换后,用户需要注意什么?
这些公钥用于加密 secrets 后再通过 API 发送给 GitHub。密钥已于2024年1月16日轮换。如果用户硬编码或缓存了旧公钥,在发送新 secrets 时可能会收到错误消息,提示提供的 key_identifier 不是最新版本,需要调用 GET /secrets/public-key 并使用最新密钥重新签名数据。建议定期从 API 拉取公钥以确保使用最新数据。
旧的 GPG 提交签名密钥何时过期?使用旧密钥签名的提交何时不再显示为已验证?
旧的 GPG 密钥于2024年1月16日20:00:00 UTC 过期。从2024年1月23日起,任何使用旧密钥签名的新上传提交将不再显示为已验证。