每天都有数以千计的新API或加密密钥通过GitHub项目泄漏。 数十亿个文件在六个月内扫描了GitHub超过13%的公共存储库,发现API令牌和加密密钥在超过100,000个存储库中泄露,每天都有数千个新存储库泄露新的秘密内容。 该扫描是北卡罗来纳州立大学(NCSU)的一个团队进行的一项学术研究的主题,其结果已移交给GitHub,GitHub看到了这些发现并采取行动加快了名为Token的新项目的开发一种称为令牌扫描的新安全功能,目前处于测试阶段。 研究人员扫描了数十亿个GitHub文件 NCSU的研究是迄今为止对GitHub最全面、最深入的扫描,超过了以往任何同类研究。 在2017年10月31日至2018年4月20日期间,NCSU研究人员对多个GitHub帐户进行了近六个月的扫描,寻找API令牌和加密密钥等格式的文本字符串。 他们不仅像之前的其他研究工作一样使用GitHub搜索API来查找这些文本模式,而且还查看了GoogleBigQuery数据库中记录的GitHub存储库快照。 在这六个月的时间里,研究人员分析了无数GitHub存储库中的数十亿个文件。 在上个月发表的一篇研究论文中,NCSU的三人团队表示,他们使用GitHubSearchAPI获取和分析了代表681,784个代码存储库的4,394,476个文件,以及代表GoogleBigQuery数据库中记录的4,394,476个文件。3374973个存储库的另一个2312763353个文件。 NCSU团队扫描了11家公司的API令牌。 研究人员在这个巨大的文件堆中寻找特定API令牌或加密密钥格式的文本字符串。 由于并非所有API令牌和加密密钥都采用相同格式,NCSU团队决定使用15种API令牌格式(来自11家公司的15项服务,其中5项来自AlexaTop50)和4种加密密钥格式。 这包括Google、Amazon、Twitter、Facebook、Mailchimp、MailGun、Stripe、Twilio、Square、Braintree和Picatic使用的API密钥格式。 很多流行的API的key都具有独特的结构,一旦泄露会带来安全隐患。 结果马上就出来了,研究项目发现每天都有数以千计的API和加密密钥泄露。 NCSU团队表示,他们总共发现了575,456个API和加密密钥,其中201,642个是唯一的,分布在超过100,000个GitHub项目中。 合并数据集中的秘密内容绝大多数由单个所有者使用。 研究团队在一篇学术论文中透露,使用谷歌搜索API发现的“秘密内容”与通过谷歌BigQuery数据集发现的“秘密内容”之间也几乎没有重叠。 研究人员表示:“合并两个数据集后,我们确定两个数据集中出现了7044个秘密,占总数的3.49%。这表明我们的方法在很大程度上是互补的。” 此外,大多数API令牌和加密密钥(93.58%)来自单个所有者帐户,而不是多个所有者代码存储库。 这意味着NCSU团队发现的绝大多数API和加密密钥很可能是在真实环境中使用的有效令牌和密钥,因为具有多个所有者的帐户通常包含阶段代码的测试令牌。 泄露的API和加密密钥会持续数周 由于该研究项目进行了六个月,研究人员还有机会观察账户所有者是否以及何时意识到他们泄露了API和加密密钥,并从代码中删除敏感数据。 该团队表示,他们跟踪的6%的API和加密密钥在泄漏后的一个小时内被删除,这表明这些GitHub所有者立即意识到犯了错误。 超过12%的钥匙和令牌在一天后消失,而19%的钥匙和代币最多保留16天。 研究人员表示:“这也意味着我们发现的81%的秘密内容没有被删除。这81%的秘密内容的开发者很可能不知道秘密内容被泄露,或者低估了泄露的风险。 对秘密内容的短期和长期监控 研究团队发现了一些重大漏洞 当研究人员开始调查这些内容从哪里泄漏时,这种扫描的重要性就被揭示出来了。 NCSU“在一个例子中,我们发现了我们认为是美国数百万大学申请者所依赖的一个主要网站的AWS登录信息,该信息可能被承包商泄露了,”该团队表示。” “我们还发现了一个西欧国家主要政府机构网站的AWS登录。在这种情况下,我们能够验证帐户的有效性,甚至可以验证提交秘密内容的具体开发者。开发者在线号称拥有近10年的开发经验。 在另一个案例中,研究人员还发现了564个谷歌API密钥,一个在线网站使用这些密钥来规避YouTube的速率限制,并下载后来托管在另一个视频共享门户网站上的视频。Youtube视频。 NCSU研究人员说:“由于密钥数量非常多,我们怀疑(但无法证实)这些密钥可能是通过欺诈手段获得的。 此外,研究人员还发现了7,280个RSA密钥。通过分析这些配置文件中的其他设置,研究人员发现,绝大多数用户禁用了密码验证,完全依赖RSA密钥进行身份验证,这意味着任何发现这些密钥的人都可以访问数以千计的私人网络。 当研究人员使用其他API令牌扫描工具分析自己的数据集以确定扫描系统的效率时,扫描结果的高质量也可见一斑。 研究团队表示:“我们的结果表明,TruffleHog在很大程度上是无效的在检测分类内容方面,因为它的算法在我们的搜索数据集和BigQuery数据集中只检测到25.236%的秘密内容。29.39%的秘密内容。 GitHub得知后忙于修复 北卡罗来纳州立大学,助理教授计算机科学博士BradReaves今天在接受ZDNet采访时表示,他们在2018年向GitHub通报了这项研究的结果。 Reaves说:“我们发现在GitHub上使用结果。对方几乎在我们完成研究后就启动了一个内部项目来检测并通知开发人员泄露的秘密。该项目于2018年10月获得公开认可。 “我们被告知GitHub比监控研究文件中列出的那些更隐秘,但我们没有得到进一步的细节。 Reaves补充说:“由于这种类型的违规行为非常普遍,我们很难通知所有受影响的开发人员。我们面临的众多挑战之一是,我们根本无法访问大量GitHub开发人员的安全联系信息。 “我们曾尝试与GitHub合作,在我们的论文发表时通知开发人员,但鉴于我们的令牌扫描与GitHub之间存在重叠,他们认为没有必要这样做。” API密钥泄漏是一个已知问题 开发人员在众多应用程序和网站的源代码中留下API和加密密钥并不是什么新鲜事。亚马逊早在2014年就敦促互联网开发人员扫描代码,从公共代码存储库中删除任何AWS密钥,甚至发布了一个工具来帮助他们在将任何代码提交到公共存储库之前扫描代码存储库。 一些公司采取了个人做法,扫描GitHub和其他代码共享库,找到无意中泄露的API密钥,并在API密钥所有者注意到泄漏或滥用之前撤销令牌。 NCSU进行了这项研究,以获得 Reaves说:“研究结果表明,开源软件代码库中的登录信息管理对于新手和专家来说仍然具有挑战性。” Reaves与MichaelMeli和Matthew共同撰写了这篇论文R.McNiece名为《Git 会有多糟糕?细述公共 GitHub 代码库中的秘密内容泄露》
