GitHub高危漏洞可劫持其他用户的库
2022-11-2 12:1:53 Author: 嘶吼专业版(查看原文) 阅读量:8 收藏

研究人员发现GitHub存在库劫持漏洞,攻击者利用该漏洞可接管其他用户的库。

GitHub库在创建库的用户账号下有唯一的URL。当其他用户想要下载或复制该库时,会使用到该库的完整URL。

GitHub用户是可以修改其账户名的。GitHub支持修改用户重命名,并会展示如息,包括现有库的URL的流量会重定向到新的库URL。

在接受警告信息并修改用户名后,GitHub会自动设置从旧的库URL转到新URL的重定向规则。而用户不会意识到GitHub库所有者用户名的变化。

库劫持(RepoJacking)是指通过利用逻辑漏洞破坏原始重定向过程,实现劫持修改了用户名的URL的流量并重定向到攻击者库的过程。研究人员在GitHub中发现了一个库劫持漏洞,当创建者决定修改其用户名,而老的用户名可以用于注册时就会出现可劫持库的情况。

从GitHub库名与创建者用户名之间的关系可以看出,GitHub可以创建一个新的GitHub账户与现有用户使用的老库URL一致。

此时,默认的重定向就被禁用了,所有现有流量都会立刻路由到攻击者的恶意GitHub库。 

为应对此类行为,GitHub实施了流行库命名空间退出(popular repository namespace retirement)保护策略:超过100个clone的库在用户账户修改时会会被标记为退出(retired)状态,无法被其他人使用。比如,repo库被clone超过100次,用户名“account-takeover-victim”就无法再创建名为repo的库:

研究人员进一步分析发现GitHub提出的应对保护措施可以被绕过。新的绕过方法使用了“Repository Transfer”特征,具体步骤如下:

“victim/repo”是受GitHub retirement保护的GitHub 库,

“helper_account”账户创建了repo库;

“helper_account”将repo库的所有权转给了“attacker_account”;

“attacker_account”将其用户名重命名为“victim”。

新的“victim”账号实际上就是之前的“attacker_account”,会接受所有权的转移。

victim/repo”就会被攻击者控制。

攻击者成功利用该漏洞可以控制主流的包管理器的代码包,包括“Packagist”、“Go”、“Swift”等。研究人员发现有超过1万个重命名的包受到该漏洞的影响。此外,攻击者利用该漏洞还可以发起供应链投毒攻击。

2021年11月8日,研究人员将GitHub命名空间退出特征绕过方法提交给了GitHub。2022年3月,GitHub回复称已修复该绕过。5月,研究人员发现该漏洞仍然是可利用的,5月25日,GitHub修复该问题。6月,研究人员发现了绕过GitHub命名空间退出特征保护机制的绕过方法,并报告给了GitHub。9月19日,GitHub修复该漏洞,并将该漏洞分类为高危。

参考及来源:https://checkmarx.com/blog/attacking-the-software-supply-chain-with-a-simple-rename/


文章来源: http://mp.weixin.qq.com/s?__biz=MzI0MDY1MDU4MQ==&mid=2247553066&idx=2&sn=d7b3f3431dde4f078be72bdb858b8e27&chksm=e915c010de62490688186a7490d9c390036fed27cb64e999c614f62802211f30ab4a6a9f5f3a#rd
如有侵权请联系:admin#unsafe.sh