研究表明,网络攻击者不断地在GitHub等公共代码存储库中搜索开发人员可能留下的秘密,任何微小的错误都可能被他们利用。安全研究员CraigHays在大流行期间进行了一项实验。他将自己的SSH用户名和密码泄露到GitHub存储库中,以查看是否有网络攻击者可以找到它。他认为可能要过几天才会有人注意到。事实证明它更加残酷,第一次未经授权的登录发生在它泄露用户名和密码后的34分钟内。“最让我大开眼界的是它被利用的速度有多快,”他说。在最初的24小时内,六个不同的IP地址登录了他的帐户九次。一名网络攻击者试图安装僵尸网络客户端,另一名网络攻击者试图利用他的服务器发起拒绝服务攻击。海斯还看到有人试图从他的服务器窃取敏感信息,也有人只是查看信息。实验表明,威胁行为者不断扫描GitHub和其他公共代码存储库以查找开发人员留下的敏感数据。随着企业从本地软件过渡到云平台以及越来越多的开发人员在家工作,包括用户名、密码、谷歌密钥、开发人员工具或私钥在内的秘密不断增加。法国安全初创公司GitGuardian的联合创始人EricFourrier表示,仅今年一年,数据泄露事件就比去年增加了至少20%,该公司扫描公共存储库以识别网络攻击者可能利用的数据。黑客如何找到GitHub的秘密黑客知道GitHub是寻找敏感信息的好地方,联合国机构、Equifax、Codecov、星巴克和Uber等机构和组织正在为此付费。一些企业可能会争辩说他们没有风险,因为他们不使用开源,但事实更加微妙;开发人员经常将他们的个人存储库用于工作项目。根据GitHub的一份研究报告,85%的数据泄露发生在开发人员的个人存储库中,另外15%发生在公司拥有的存储库中。开发人员留下了shell命令历史、环境文件和受版权保护的内容。有时他们也会犯错误,因为他们试图简化流程。例如,他们可能会在编写代码时包含他们的凭据,因为这样更容易调试。然后,他们可能会忘记删除和提交。即使他们稍后执行删除提交或强制删除秘密,这些私人信息通常仍然可以在Git历史记录中访问。海斯说,这是GitHub上最常见的秘密类型,“我在旧版本的文件中发现了很多密码,这些文件已被更新、更干净的版本所取代,其中没有密码。”Git提交历史记录保存所有内容,除非您明确删除它。初级和高级开发人员都可能犯错误。傅立叶说。,“即使你是一名优秀的开发人员并且受过安全问题方面的教育,在编码时的某个时刻,也可能会犯错误,而泄露秘密通常是人为错误。”GitHub上最常见的文件类型任何开发人员都会犯错误,而刚进入劳动力市场的开发人员通常会泄露更多秘密。多年前,当CrinaCatalinaBucur还是一名软件工程专业的学生时,她开了一个AWS账户用于开发目的,但很快就收到了2000美元的账单,其中只有0.01美元是她应该支付的。她说,“我正在做的项目是一个聚合文件管理平台,用于大约10种云存储服务,包括亚马逊的S3。这发生在GitHub提供免费私有存储库之前,所以我的AWS访问密钥和相应的密钥被发布到我的公共存储库以及代码。当时我并没有多想。”几天后,她开始收到来自AWS的电子邮件,警告她的账户已被盗用,但她没有仔细阅读这些邮件,直到收到账单。对她来说幸运的是,AWS免除了其他额外费用。但是Bucur犯了一些错误,黑客利用,包括为方便起见对密钥进行硬编码并将其发布在公共代码存储库中。Hays说,如今,想要发现此类漏洞的黑客需要的资源非常少。他在业余时间是一名漏洞赏金猎人,并且经常依赖开源情报(OSINT),这是可以在网上找到的信息。“我选择的方法是使用标准的Github.com界面手动搜索,我使用搜索运算符来限制特定的文件类型、关键字、用户和组织,取决于被攻击的公司,”他说。有几种工具可以使这个过程更容易。更快、更高效。“网络攻击者运行自动化机器人来抓取GitHub内容并提取敏感信息。这些机器人可以一直运行,这意味着黑客可以在几秒钟或几分钟内检测到错误,”HUMAN的安全研究员GabrielCirlig说。一旦发现秘密,网络攻击者就可以轻松利用它。“例如,如果你找到一个AWS密钥,你就可以访问公司的所有云计算基础设施,”Fourrier说。“针对为特定公司工作的开发人员并尝试查看该公司的某些资产非常简单。”根据机密性的性质,黑客可以做很多事情,包括发起供应链攻击和危害企业安全。随着秘密数量的增加,企业需要在为时已晚之前更好地发现它们。GitHub有自己的“秘密扫描合作伙伴计划”,可以查找密码、SSH密钥或API令牌等文本字符串。GitHub与40多家云计算服务提供商合作,自动修复公共存储库中暴露的API密钥。GitHub发言人说:“我们一直在寻求扩大这些合作伙伴关系,以更好地保护生态系统。我们目前每天注销100多个GitHubAPI公共密钥,当我们这样做时,我们通常会安全地与新开发人员共享它们。”证书安全的重要性。”海斯说,秘密扫描合作伙伴计划是朝着正确方向迈出的一步,因为它使网络攻击者更难找到有效的凭据。不过,他表示该计划并不完美。“当人们不小心检查了他们自己的SSH密钥、密码、令牌或任何其他敏感信息时,漏洞仍然存在。检测和管理变得更加困难,因为没有合作的凭证提供者提出诸如‘这是真的吗?想要撤消’之类的问题它?我们中的一个人应该告诉主人吗?'。同时,他建议开发人员注意他们编写和部署代码的方式。“首先要做的事情之一是向.gitignore文件添加正确的设置,它告诉Git和GitHub.com哪些文件不应该被跟踪和上传到互联网,”他说。一些安全初创公司也在尝试填补这一空白。GittyLeaks、SecretOps、gitLeaks和GitGuardian旨在为企业用户和独立专业人士提供额外的保护层。有些可以在几秒钟内检测到泄露的秘密,从而使开发人员和公司能够立即采取行动。“我们在整个开发生命周期中扫描软件上的所有代码,在Docker容器中,在不同类型的数据中,我们找到并尝试撤消它们,”Fourrier说。尽可能少泄漏是可能的,提高对该问题的认识有助于做到这一点。“教育开发人员编写安全代码并主动预防攻击远比事后处理数据泄露要好得多,”Cirlig说。
