依靠存储库劫持漏洞已经影响谷歌GitHub等7万多个开源项目
发布时间:2021-11-15 00:06:37 所属栏目:安全 来源:互联网
导读:研究人员最近发现了依赖存储库劫持的情况非常普遍,这是一个隐藏的漏洞,允许任何人在用户更改用户名的情况下劫持存储库。这个漏洞类似于子域接管,利用起来很容易,并且会导致远程代码注入。在分析了这个漏洞的开源项目并总结了搜索它们的依赖关系图后,研究
研究人员最近发现了依赖存储库劫持的情况非常普遍,这是一个隐藏的漏洞,允许任何人在用户更改用户名的情况下劫持存储库。这个漏洞类似于子域接管,利用起来很容易,并且会导致远程代码注入。在分析了这个漏洞的开源项目并总结了搜索它们的依赖关系图后,研究人员发现有超过70000个开源项目受到影响,这包括来自谷歌、GitHub、Facebook等公司的流行项目和框架。为了缓解这个漏洞,请确保你的项目不依赖于GitHub的直接URL或使用依赖关系锁定文件和版本固定。 什么是Repo Jacking? 依赖存储库劫持(又名“Repo Jacking”)是供应链上一个鲜为人知的漏洞,在概念上类似于子域名接管,影响超过7万个开源项目,影响从web框架到加密货币的所有操作。这个漏洞利用起来很不容易,会导致远程代码注入,并影响来自谷歌、GitHub、Facebook、Kubernetes、NodeJS、Amazon等公司的重大项目。研究人员在最近的一次活动中首次发现这个漏洞后,就想知道这个漏洞有多普遍,于是就对所有开源项目进行了递归分析,结果发现它非常普遍。 哪些对象易受Repo Jacking攻击? 每个编译依赖于GitHub存储库动态链接代码的项目都可能受到攻击,不过攻击要成功,需要满足以下两个条件: 你的代码需要直接引用GitHub存储库(通常作为依赖关系)。 存储库的所有者需要更改/删除他们的用户名。 当链接的存储库所有者更改其用户名时,任何人都可以立即重新注册该用户名。这意味着,任何链接回原始存储库URL的项目现在都很容易受到依赖劫持的远程代码注入的攻击。恶意攻击者可以注册旧的GitHub用户名,重新创建存储库,并使用它向依赖它的任何项目提供恶意代码。 即使依赖于GitHub存储库的项目现在还不容易受到攻击,但如果其中一个依赖关系的所有者更改了他们的用户名,那么该项目和其他依赖于该旧链接的项目就会受到repo jacking的攻击。当存储库更改位置时,可能会出现某种警告,比如“404 -未找到存储库”之类的漏洞,但实际上没有。此外,Github的一项小功能(存储库重定向)使此漏洞明显更加危险。 “存储库重定向”使攻击更加严重 当GitHub用户更改存储库的名称或用户名时,GitHub设置了一个从旧URL到新URL的重定向,这种重定向同时适用于HTTP和Git请求。当用户更改其用户名、传输存储库或重命名存储库时,就会创建此重定向。这里的漏洞是,如果重新创建原始存储库(在本例中为“twitter/bootstrap”),重定向将中断,并将你发送到新创建的存储库。 示例场景 链接https://github.com/twitter/bootstrap指向资源库“twitter/bootstrap”,但实际上会将你重定向到“twbs/bootstrap”资源库。 如果Twitter更改了他们的GitHub用户名,那么任何人都可以重新注册它,重新创建一个名为“bootstrap”的资源库,任何对https://github.com/twitter/bootstrap的新请求都将进入新创建的资源库。 任何依赖于https://github.com/twitter/bootstrap的项目现在都将开始从这个新存储库加载代码。 重定向是一个方便的功能,因为它意味着当你重命名你的帐户时链接不会立即中断。但这也意味着你的项目可能在不知不觉中变得容易受到Repo Jacking的攻击。从你的角度来看,什么都没有改变,你的代码编译仍然是一样的,一切都按照它应该的方式工作。但是,你的项目现在很容易受到远程代码注入的攻击,而且你并不知道。 (编辑:西双版纳站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |