近几个月来,对开源存储库的主要威胁就包括存储仓库劫持,通常称为RepoJacking。RepoJacking 是指恶意攻击者通过一定手段接管托管存储库的所有权或维护者的账户。通过获取对账户的访问权限,攻击者可以将恶意代码注入到使用对应仓库作为依赖项的项目中。
存储库攻击,也称为供应链攻击,通常利用 GitHub 等托管平台中的漏洞。RepoJacking 中常用有两种方法:
一旦攻击者获得了对存储库的控制权,他们就可以执行各种特权操作。这包括指定其他恶意用户或自行创建的账户为管理员或维护者,使他们能够批准未经授权的代码更改。它们可以强制在新的项目版本中包含恶意或不需要的代码,甚至从存储库中删除功能代码,从而导致现有功能遭到破坏或损坏。
成功的存储库劫持攻击可能会对安全造成严重影响,尤其是对于充当依赖项的受影响软件包的用户而言。这些攻击允许通过现有或新发布的版本上传不受限制的恶意代码,这些代码可以通过自动或手动升级到最新版本直接影响外部项目。
repojacking通常会在很长一段时间内被忽视,有时持续数天或数周。它们通常由专门的安全研究人员、细心的用户或意识到其存储库已被劫持的原始所有者披露。解决问题的责任通常在于托管平台,托管平台可以通过删除或暂停受感染的账户来采取措施来减轻恶意包版本的影响。
虽然这些攻击似乎很容易被利用,但它们取决于特定条件,这在受欢迎的项目所有者的账户中并不常见,尤其是那些经常收到更新的项目所有者。对于比较活跃的账户所有者,攻击者通常使用网络钓鱼或更复杂的“捕鲸”技术,以访问其账户或通过跨站点脚本攻击操纵他们执行操作。但是,许多浏览器和网站都有针对此类攻击的内置保护措施。
RepoJacking 事件的真实例子:
可以实施多种措施来保护组织免受 RepoJacking 和其他供应链攻击。一种关键方法是使用多因素身份验证,特别是双因素身份验证(2FA)。GitHub 宣布,从 2023年开始,所有维护者账户都必须强制使用 2FA,从而显著提高其安全性。然而,尽管存在风险,但像 NPM 这样的一些平台尚未强制执行 2FA。还可以通过主动暂停或删除具有过期或即将过期域的账户来防止域接管。但是,这种方法需要托管平台增加维护和监控。
随着开源项目的不断发展,并且越来越成为很多项目的依赖,repojacking事件可能会不断增加。为了解决这个问题,有必要更多地采用2FA等预防技术。强制执行 2FA 等安全措施可以通过确保存储库所有者的更高级别的账户安全性来帮助减轻存储库劫持的影响。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。