安全公司Checkmarx披露了一起众多GitHub存储库,遭自动化注入恶意程序代码的攻击事件,攻击者窃取受害者的GitHub个人访问令牌,并用以贡献恶意程序代码到存储库中。这次攻击事件规模庞大,除了公开存储库之外,也影响一些私人存储库,因此研究人员推测攻击是一个自动化过程。

攻击者通过GitHub免费软件项目自动化相依管理工具Dependabot,进行自动贡献,试图掩盖恶意活动。Dependabot工具会持续监控诸如函数库和组件等项目相依项目,发现存在安全漏洞或是过时的程序代码版本,Dependabot会自动产生拉取请求,协助开发人员保持软件的安全性和最新状态。

而这起攻击事件发生在今年7月8日到11日间,攻击者入侵数百个GitHub存储库,通过伪造提交消息(下图),使开发者相信其为真正的Dependabot贡献,并忽略该活动。攻击总共可分为三个阶段,首先是工作区域的初始化,研究人员解释,开发者要进行Git操作就必须使用个人访问权限设置开发环境,而这个权限会被存储在开发者机器上,很容易被截取,由于这些访问权限不需要双重验证,因此只要拥有网际网络连接,就可以使用这些权限访问账户。

图片来源_Checkmarx

第二阶段则是窃取凭证,研究人员目前还不确定攻击者如何获取开发者凭证,但是他们猜测最有可能的场景,是受害者被恶意软件组件感染,再由恶意软件组件将权限上传到攻击者的C2服务器。最后阶段便是利用窃取来的访问权限,通过GitHub身份验证对存储库注入恶意程序代码,而且考虑其攻击的规模,研究人员推断该攻击采用了自动化程序。

图片来源_Checkmarx

注入的恶意程序代码会将GitHub项目中定义的机密,发送到C2服务器。具体方法是恶意程序会修改被攻击项目中任何的JavaScript文件,修改过后的程序代码会窃取网页表单密码,也就是最终用户在网页表单中只要输入并提交密码时,这些机密资讯就会被窃取,发送到攻击者的C2服务器。

Checkmarx提醒开发者,即便在GitHub这样的可信任平台,也要谨慎注意程序代码的来源。之所以攻击者能够成功发动攻击,便是因为许多开发者在看到Dependabot消息时,并不会仔细检查实际变更内容,而且由于权限访问日志仅有企业账户可用,因此非企业用户也无法确认权限是否遭滥用。

研究人员建议,用户可以考虑采用GitHub精细个人访问权限(下图),通过限缩每个权限的权限,来降低当权限泄漏时攻击者所能造成的损害。

图片来源_GitHub