如何防止企业的数据和机密从GitHub存储库泄露

如何防止企业的数据和机密从GitHub存储库泄露

研究表明,网络攻击者不断在GitHub等公共代码存储库中搜索开发人员可能留下的秘密,任何微小的错误都可能被他们利用。

安全研究员Craig Hays在疫情期间进行了一个实验。他将其SSH用户名和密码泄露到GitHub存储库中,看看是否有网络攻击者可能会找到它。他认为可能需要等待几天才会有人注意到。事实证明更加残酷,第一次未经授权的登录发生在其泄露用户名和密码之后的34分钟内。他说:“对我来说,最让我大开眼界的是它被利用的速度有多快。”

在最初的24小时内,六个不同的IP地址9次登录他的帐号。一名网络攻击者试图安装僵尸网络客户端,另一名网络攻击者试图使用其服务器发起拒绝服务攻击。Hays还看到有人想从他的服务器窃取敏感信息,也有人只是查看信息。

实验表明,威胁行为者不断扫描GitHub和其他公共代码存储库,寻找开发人员留下的敏感数据。随着企业从内部部署软件过渡到云平台以及越来越多的开发人员在家工作,包括用户名、密码、Google密钥、开发工具或私钥在内的机密不断增加。法国安全初创厂商GitGuardian公司的联合创始人Eric Fourrier表示,仅在今年,数据泄露就比去年至少增加了20%,该公司主要提供扫描公共存储库以识别网络攻击者可能利用的数据的服务。

黑客如何找到GitHub的秘密

黑客知道GitHub是查找敏感信息的好地方,联合国机构、Equifax、Codecov、星巴克和优步等机构和组织为此付出了代价。一些企业可能会争辩说他们不会面临风险,因为他们不使用开源代码,但事实上更微妙;开发人员经常将他们的个人存储库用于工作项目。根据针对GitHub的调查报告,85%的数据泄漏发生在开发人员的个人存储库中,其他15%的数据泄漏发生在企业拥有的存储库中。

开发人员会留下shell命令历史、环境文件和受版权保护的内容。有时他们也会犯错误,因为试图简化流程。例如,他们在编写代码时可能会包含他们的凭据,因为这样更容易调试。然后,他们可能会忘记删除并提交。即使他们稍后执行删除提交或强制删除机密,这些私人信息通常仍然可以在Git历史记录中访问。

GitHub上最常见的机密类型

Hays说,“我在旧版本的文件中发现了很多密码,而这些密码已被更新的、更干净的版本替换,而这些版本中没有密码。”Git提交历史会记住所有内容,除非明确删除它。

无论是初级开发人员还是高级开发人员都可能犯错误。Fourrier说。,“即使你是一位出色的开发人员,并且在安全问题上受过教育,在某些时候编码时,可能会犯错误,而泄露秘密通常是人为的错误。”

在GitHub上发现的最常见的文件类型

任何开发人员都会出错,那些刚进入职场的开发人员通常会泄露更多的机密。当Crina Catalina Bucur多年前还是一名软件工程专业的学生时,就开设了一个用于开发目的的AWS账户,但不久收到了2000美元的账单,其中只有0.01美元是她应该支付的费用。

她说,“我开发的项目是一个聚合文件管理平台,用于大约10种云存储服务,包括亚马逊的S3。这发生在GitHub提供免费私有存储库之前,所以我的AWS访问密钥和相应的密钥与代码一起发布到我的公共存储库。而我当时并没有考虑太多。”

几天后,她开始收到来自AWS的电子邮件,警告她的账户已被盗用,但她没有仔细阅读这些邮件,直到收到账单。对她来说,幸运的是AWS公司免除了其他额外费用。但Bucur还是犯了一些被黑客利用的错误,包括为方便起见对密钥进行硬编码并将它们发布到公共代码存储库中。

Hays表示,如今想要发现此类错误的黑客只需要很少的资源。他在业余时间是一名漏洞的赏金猎人,并且经常依赖开源情报(OSINT),这些都是可以在网上找到的信息。他说,“我选择的方法是使用标准的Github.com界面人工搜索,我使用搜索运算符限制特定的文件类型、关键字、用户和组织,具体取决于针对的公司。”

一些工具可以使过程更快、更有效。HUMAN公司的安全研究员Gabriel Cirlig说:“网络攻击者运行自动机器人来抓取GitHub内容并提取敏感信息。这些机器人可以一直运行,这意味着黑客可以在几秒钟或几分钟内检测到错误。”

一旦发现秘密,网络攻击者就可以轻松利用它。Fourrier说,“例如,如果找到AWS密钥,就可以访问某公司的所有云计算基础设施。而针对为特定公司工作的开发人员并尝试查看该公司的一些资产非常简单。”根据机密的性质,黑客可以做很多事情,其中包括发起供应链攻击和危害企业的安全。

随着机密数量的增加,企业需要在为时已晚之前更好地发现它们。GitHub有自己的“秘密扫描合作伙伴程序”,它可以查找类似密码、SSH密钥或API令牌的文本字符串。GitHub与40多家云计算服务提供商合作,自动修复公共存储库中公开的API密钥。

GitHub发言人表示,“我们一直在寻求扩大这些合作伙伴关系,以更好地保护生态系统。我们目前每天注销100多个公开的GitHub API密钥,在我们这样做时,通常会安全地向新开发人员介绍凭证安全的重要性。”

Hays表示,“秘密扫描合作伙伴程序”是朝着正确方向迈出的一步,因为它使网络攻击者更难找到有效凭据。不过他表示,该计划并不完美。他说,“当人们不小心检查他们自己的SSH密钥、密码、令牌或任何其他敏感的东西时,仍然留下了空白。这更难以检测和管理,因为没有合作的凭证提供者可以提出诸如‘这是真的吗?想撤销它吗?我们中的一方应该告诉所有者吗?’之类的问题。”

与此同时,他建议开发人员注意他们编写和部署代码的方式。他说,“首先要做的事情之一是将正确的设置添加到.gitignore文件中,这个文件告诉Git和GitHub.com哪些文件不应该被跟踪和上传到互联网。”

一些安全初创厂商也在试图填补这一空白。GittyLeaks、SecretOps、gitLeaks和GitGuardian旨在为业务用户和独立专业人士提供更多的保护层。有些人可以在几秒钟内检测到泄露的机密,从而使开发人员和公司能够立即采取行动。Fourrier说,“我们在整个开发生命周期、Docker容器、不同类型的数据中扫描软件上的所有代码,我们找到并试图撤销它们。”

在理想情况下,最好的策略是根本不泄露数据或尽可能少地泄露,提高对这一问题的认识有助于做到这一点。Cirlig说:“教育开发人员编写安全代码并主动阻止攻击总比事后应对数据泄露事件要好得多。”

未经允许不得转载:VPS服务器 » 如何防止企业的数据和机密从GitHub存储库泄露

分享到: 生成海报