GitHub撤销了由git客户端生成的不安全SSH密钥

GitHub撤销了由git客户端生成的不安全SSH密钥

漏洞描述及影响

1.0.3 及以下版本的密钥对所使用的伪随机数生成器中的一个错误可能允许弱 RSA 密钥生成。这可能使攻击者能够解密机密消息或获得对属于受害者的帐户的授权访问。我们建议替换使用密钥对版本 1.0.3 或更早版本生成的任何 RSA 密钥。

GitHub中修复情况

  • 伪随机数生成器中的错误已在 commit 中修复9596418
  • 如果加密模块可用,则使用它代替伪随机数生成器。

额外细节

有缺陷的具体线路是:

b.putByte(String.fromCharCode(next & 0xFF))

定义putByte

util.ByteBuffer.prototype.putByte = function(b) {
  this.data += String.fromCharCode(b);
};

简化,这是String.fromCharCode(String.fromCharCode(next & 0xFF))
这导致大部分缓冲区包含零。一个示例生成的缓冲区:

(注:为简洁起见被截断)

\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
\x00\x00\x00\x00\x04\x00\x00\x00....\x00\x00\x00\x00\x00\x00\x00\x00\x00
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00

由于它使用 0xFF 进行掩码,因此大约 97% 的字节被转换为零。影响是 RNG 种子中的每个字节都有 97% 的机会由于转换不正确而为 0。

GitHub撤销了由git客户端生成的不安全SSH密钥

漏洞详情

2021 年 9 月 28 日,我们收到了开发人员 Axosoft 的通知,关于他们流行的 git GUI 客户端 GitKraken 的依赖项中存在漏洞。一个名为 的依赖项的潜在问题keypair导致 GitKraken 客户端生成弱 SSH 密钥。这个问题影响了 GitKraken 客户端的 7.6.x、7.7.x 和 8.0.0 版本,您可以在他们的博客上阅读 GitKraken 的披露。

今天,截至 1700 UTC,我们已经撤销了在 GitHub.com 上使用的这些易受攻击的 GitKraken 客户端版本生成的所有密钥,以及可能使用相同易受攻击依赖项的其他客户端创建的其他潜在弱密钥。除了撤销这些密钥之外,我们还实施了保护措施,以防止易受攻击的 GitKraken 版本在未来添加旧的易受攻击版本的客户端新生成的弱密​​钥。

我们还调查了在 GitHub.com 上使用的弱生成密钥来自其他第三方客户端和集成商的可能性,也使用这个易受攻击的库。此漏洞的性质使我们无法识别此库和使用它的易受攻击的客户端生成的所有可能的弱 SSH 密钥。出于谨慎考虑,我们还撤销了与这些场景相关的其他潜在弱密钥并阻止了它们的使用。

其密钥已被 GitHub 吊销的用户将直接收到通知。
这不是 GitHub 或我们系统的妥协、数据泄露或其他数据泄露事件的结果,而是通常用于生成与 GitHub 一起使用的 SSH 密钥的库的问题。

GitHub 推荐什么?

我们建议您查看链接到您的 GitHub 帐户的 SSH 密钥,并轮换使用易受攻击/不安全的库生成的任何密钥。有关如何查看 SSH 密钥的信息,请访问https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/reviewing-your-ssh-keys

GitHub Enterprise Server 部署的管理员可以通过查看站点管理仪表板审核日志public_key.create中的操作来查看添加到其实例的 SSH 密钥。这些结果可以过滤到特定的用户代理,以识别潜在的易受攻击的客户端。

GitHub 非常感谢 Axosoft 立即联系 GitHub 并将此问题告知我们。我们还要感谢Julian Gruber与 GitHub 安全实验室合作快速解决keypair库中的潜在问题以及他们在GHSA-3f99-hvg4-qjwj 上的合作

有关更多信息,请访问 GitKraken 的博客文章https://www.gitkraken.com/blog/weak-ssh-key-issue-fix。有关 GitKraken 的问题,请通过 [email protected] 联系他们的支持团队。

GitKraken v8.0.1 中弱 SSH 密钥生成修复

如果您使用的是 GitKraken 版本 7.6.x、7.7.x 或 8.0.0,本文将说明您可以采取哪些步骤来维护与 GitHub、GitLab、Bitbucket 和 Azure DevOps 上远程存储库的安全 SSH 密钥连接。  

如何修复弱 SSH 密钥问题

此问题仅影响使用版本 7.6.x、7.7.x、8.0.0 通过 GitKraken 界面生成 SSH 密钥的 GitKraken 用户。如果您不确定用于生成 SSH 密钥的版本,我们鼓励您通过以下过程更新您的密钥。

受影响的用户需要:

  1. 删除所有存储在本地的旧 GitKraken 生成的 SSH 密钥。 

  2. 使用 GitKraken 8.0.1 或更高版本为您的每个 Git 服务提供商生成新的 SSH 密钥。 

按照以下说明在 GitKraken 中生成和连接 SSH 密钥,用于:

有关该问题的更多信息

9 月下旬,GitKraken 团队发现开源 SSH 密钥生成库中的一个漏洞,该库在 7.6.x、7.7.x、8.0.0 版本中实现,在 5/12/21 和 9/27/21 之间发布。此缺陷导致创建了较弱形式的公共 SSH 密钥。弱密钥是以低熵创建的,这意味着密钥重复的可能性更高。

GitKraken 工程团队在 8.0.1 版本中通过用新的替换以前的 SSH 密钥生成库解决了这个问题。

注意:升级到 8.0.1 或更高版本的用户仍然需要替换他们的 GitKraken 生成的密钥,如果它们是在受影响的版本中生成的。 

该团队还联系了 Git 托管服务提供商 GitHub、Bitbucket、GitLab 和 Azure DevOps,以提醒他们注意这个问题。我们与所有这些提供商密切合作,使正在使用的弱公钥失效。在可能的情况下,受影响的密钥现在被 Git 托管服务提供商永久阻止。

我们将继续努力为所有用户实现最高的安全标准。 

Axosoft 工程师 Dan Suceava 因发现了安全漏洞而受到赞誉,而 GitHub 安全工程师 Kevin Jones 则因确定了漏洞的原因和源代码位置而受到认可。在撰写本文时,没有证据表明该漏洞被广泛利用来破坏帐户。

转载请注明出处及链接

Leave a Reply

您的电子邮箱地址不会被公开。 必填项已用 * 标注