查看原文
其他

怕不怕?GitHub 公开库 API 和加密密钥泄漏了这么多秘密

Catalin Cimpanu 代码卫士 2022-04-06

 聚焦源代码安全,网罗国内外最新资讯!

编译:360代码卫士团队

北卡罗来纳州立大学 (NCSU) 大学的一个三人研究团队在半年的时间里扫描了13% GitHub 公共库数十亿份文件后发现,超过10万个库已泄露 API 令牌和加密密钥,每天约有数千份新库正在泄露机密信息。

扫描数十亿份 GitHub 文件

NCSU 研究团队的这项研究要比之前的所有类似研究都要全面且深入。他们在2017年10月31日至2018年4月20日期间扫描了 GitHub 账号,并查看了以 API 令牌和加密密钥形式格式存在的文本字符串。

他们不仅像此前的研究人员那样使用 GitHub Search API 查看这些文本格式,而且还查看了存储在谷歌 BigQuery 数据库中记录的 GitHub 库快照。在为期6个月的时间里,研究人员分析了来自数百万份 GitHub 库中的数十亿份文件。

研究人员在上个月发布论文表示,使用 GitHub Search API 捕获并分析了表示681,784 个库的4,394,476 份文件以及记录在谷歌 BigQuery 数据库中 3,374,937个库中的另外2,312,763,353 份文件。

扫描11家公司的 API 令牌

研究人员在庞大的文件中查找了以某种 API 令牌或加密密钥格式存在的文本字符串。由于并非所有的 API 令牌和加密密钥的格式都一样,因此研究团队决定重点研究15个 API 令牌格式(11家公司的15种服务,其中5种服务名列 Alexa 前50)和4种加密密钥格式。这些 API 密钥格式由谷歌、亚马逊、推特、Facebook、Mailchimp、MailGun、Stripe、Twilio、Square、Braintree 和 Picatic 使用。

结果显示,每天都在泄漏数千个 API 令牌和加密密钥。研究团队表示他们找到了 575,456 个加密密钥,其中 201,642 个密钥是唯一的,且分散在超过10万个 GitHub 项目中。

研究团队在论文中指出,使用谷歌 Search API 和使用谷歌 BigQuery 数据集找到的“秘密”之间也有一些重合之处。他们表示,最后判断“7044份或39%的机密信息都出现在这两种数据集中,证明我们的方法基本是互补的。”

另外,多数 API 令牌和加密密钥 (93.58%) 源自单个所有者账户,而非多个所有者库。也就是说大多数 API 令牌和加密密钥很可能是在真实世界中所使用的合法令牌和密钥,因为多所有者账户通常包含用于共享测试环境的测试令牌和设备内代码。

秘密拥有人何时意识到错误?

由于这项研究发生在为期6个月的时间里,因此研究人员能够观测到账户所有人是否以及何时意识到已将 API 和加密密钥暴露的问题并删除这些敏感数据。

研究团队表示,6%的所追踪的 API 和加密密钥在遭泄漏后1小时内被删除,表明 GitHub 所有人马上意识到自己犯的错误。

超过12%的密钥和令牌在一天之后消失,而19%的密钥和令牌暴露的时间长达16天。研究人员指出,这意味着81%的秘密并未被删除。原因可能是开发人员并不知道自己提交了机密信息或者低估了攻陷风险。

高级别泄漏案例

研究人员开始查看哪些组织机构在泄漏机密以及机密内容时,证实了这些扫描活动的高质量。

研究人员表示,在某个案例中发现了一个被美国数百万大学申请者依赖的大型网站的 AWS 凭证,很可能是被某合同商泄漏的。他们还发现了某个西欧国家的主要政府机构网站的 AWS 凭证。研究人员证实了账户的合法想,甚至是找到了提交这些机密信息的开发人员。该开发人员据称已拥有近10年的开发经验。

在另外一个案例中,研究人员发现某个网站使用564个谷歌 API 密钥规避 YouTube 的速率限制并下载 YouTube 视频,随后托管在另外一个视频共享门户上。研究人员表示,由于密钥数量如此之高,怀疑(并无法证实)这些密钥是以欺诈性手段获取的。

最后,研究人员还从 OpenVPN 配置文件中找到了7280个 RSA 密钥。通过查看这些配置文件中的其它设置,研究人员表示多数用户已经禁用了认证而且只依靠 RSA 密钥进行认证,意味着只要找到这些密钥,任何人都能获取对数千个私密网络的访问权限。

当研究人员使用其它 API 令牌扫描工具分析自己的数据集以确定扫描系统的有效性时也意识到这次研究扫描结果的高质量。研究人员指出,结果显示,TruffleHog 在检测机密信息方面基本没有效果,因为其算法智能检测到 Search 数据集中25.236%的机密以及 BigQuery 数据集中29.39%的机密。

GitHub 已意识到问题

NCSU 大学计算机科学系的副教授 Brad Reaves 表示已经将结果通知了 GitHub。后者表示正在监控除了这项研究所列结果以外的其它机密信息,不过除此以外 GitHub 并未透露更多信息。

Reaves 认为,“由于这种类型的泄漏如此普遍,因此难以通知到所有受影响的开发人员。我们面临的其中一个问题是我们不知道如何获取大量 GitHub 开发人员的安全的联系方式。在论文发布时,我们试图和 GitHub 合作发布通知,但鉴于我们令牌扫描的结果和他们扫描的结果之间存在重合之处,他们认为没有必要再另行发布一次通知。”

GitHub 的一名发言人表示,NCSU 团队报告的 API 密钥可能是无效令牌,GitHub 当时正在推出安全功能 Token Scanning。该功能扫描了 GitHub 对公共库 API 密钥的推送提交,并通知可能撤销该密钥的服务提供商或通知其所有人。

API 密钥泄露是一个已知问题

开发人员将 API 和加密密钥暴露在应用和网站的源代码中并非新鲜事。亚马逊早在2014年就督促web 维护人员搜索代码并删除公共库中的 AWS 密钥,甚至专门发布了一款工具帮助他们在向公共库提交代码时扫描库。

某些公司亲自扫描 GitHub 和其它代码共享库,查找不慎被暴露的 API 密钥,并且在 API 密钥所有人意识到被泄露或滥用之前就撤销这些令牌。

NCSU 团队的这项研究提供了迄今为止对该问题的最深入的观察。

研究人员表示,“我们的研究结果认为开源软件库中的认证管理问题对于新手和专家等群体而言仍然具有挑战性。”

论文下载地址:https://www.ndss-symposium.org/wp-content/uploads/2019/02/ndss2019_04B-3_Meli_paper.pdf



推荐阅读

利用 GitHub 被删账户和非官方 GitHub CDN 实施密币劫持

五周年庆:GitHub 漏洞奖励计划扩大范围提高赏金



原文链接

https://www.zdnet.com/article/over-100000-github-repos-have-leaked-api-or-cryptographic-keys/





本文由360代码卫士编译,不代表360观点,转载请注明“转自360代码卫士 www.codesafe.cn”。



360代码卫士 (codesafe)

国内首个专注于软件开发安全的产品线。


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存