git历史中的旧API密钥是安全漏洞吗?

信息安全 数据泄露
2021-08-19 09:09:37

我最近犯了一个错误,在一个开源 GitHub 项目中泄露了我的 Mailgun API 密钥。我立即将其无效,但 Mailgun 支持要求我采取额外的步骤来删除我的 GitHub 存储库。到目前为止,他们拒绝重新激活我的发送域,直到我这样做。

为什么这个这么重要?诚然,在我的公共记录中出现这种情况很尴尬,但它怎么能被用来对付我呢?

更新: Mailgun 现在告诉我旧的 API 密钥不是问题。

2个回答

在纽约时报的标题页上发布旧的 API 密钥是安全的,或者他们实际上没有正确的失效程序。

用户经常使用 API 密钥多年,几乎没有人会更换它们,除非这些密钥发生了非常糟糕的事情,例如它们被盗或泄露。在这种情况下,将发布一个新密钥,并且从发布新密钥的那一刻起,对于任何与 API 相关的内容,旧密钥都必须不再有效(因此无效)。为各种 CDN 和缓存增加一个小时,甚至一天,它仍然与删除 Github 存储库无关。

关于评论中的一些建议,

新密钥可以从旧密钥中计算出来

API 密钥本身只是一个随机的字节序列。除了纯熵之外,一个新的密钥应该是可以计算的。无论如何,旧密钥是新密钥的错误基础。如果新密钥依赖于那些旧密钥,那么他们最好再考虑一下 API 身份验证的设计。

Mailgun 可能担心人们会在他们的服务器上尝试旧密钥,这会增加服务器负载。

任何人都可以针对 API 服务器尝试任意随机的字节序列。对于身份验证服务器来说,偶尔处理一次无效的 API 密钥必须是负担得起的。如果这是一个真正的问题,还有一些方法甚至产品可以帮助防止暴力破解。我不认为泄露旧密钥会以某种方式显着影响服务器负载(除非他们唯一的服务器是 Raspberry Pi 实例)。

如果密钥不是泄露而是被盗怎么办?您是否必须说服小偷从他们的数据库中删除旧的无效密钥?这是荒唐的。Mailgun 没有理由要求这样做。

是否可以使用旧 API 密钥来削弱安全性

旧密钥可能会以多种方式构成风险,并且 Mailgun 支持人员坚持要求您删除存储库,这似乎意味着他们认为这是一种风险。

  • 新密钥可以从旧密钥中计算出来
    • 知道旧密钥可能会使破解新密钥更容易(这取决于密钥的生成方式)
  • 旧密钥可能不会立即失效(或根本失效)
    • 服务器可能会缓存有效的密钥,而这个缓存可能不会立即失效,所以旧的密钥可能会被用来访问服务,直到密钥离开缓存。
  • Mailgun 可能担心人们会在他们的服务器上尝试旧密钥,这会增加服务器负载。

旧的 API 密钥是否会带来风险

如果旧 API 密钥以合理的方式生成,它们不应该构成风险,对于上面的部分,我假设它们不是以合理的方式生成的,因为 Mailgun 似乎认为这是一种风险,而且他们更了解他们的生成 API 密钥