导读: 专家警告说,GitHub上的数千个Go模块存储库很容易受到称为存储库劫持或repojacking的攻击。在这次攻击中,黑客滥用了开发人员更改其帐户名...

专家警告说,GitHub上的数千个Go模块存储库很容易受到称为存储库劫持或repojacking的攻击。在这次攻击中,黑客滥用了开发人员更改其帐户名称或完全删除帐户的事实。他们通过创建帐户和同名存储库,然后向其中添加恶意代码来滥用它。因此,这使得他们能够发起毁灭性的供应链攻击,因为开发人员可以集成该代码,而不知道它是恶意模仿者。

根据VulnCheck网络安全研究人员的一份新报告,有9,000多个存储库由于GitHub用户名更改而容易受到重新劫持,还有6,000个存储库由于帐户删除而容易受到攻击。它们总共托管至少800,000个Go模块版本。

《黑客新闻》在分析警报时表示,用Go编写的模块“特别容易”受到重新劫持,因为它们是去中心化的,并发布到GitHub或BitBucket等版本控制平台。

“然后任何人都可以指示Go模块镜像和pkg.go.dev缓存模块的详细信息,”VulnCheck首席技术官JacobBaines告诉该出版物。“攻击者可以注册新未使用的用户名,模块存储库,并将新模块发布到proxy.golang.org和go.pkg.dev。”

GitHub已经尝试通过一项名为“流行存储库命名空间退休”的功能来解决这个问题。它可以防止用户使用过去克隆超过100次的已退役命名空间的名称创建存储库。然而,VulnCheck表示,该功能并没有多大帮助,因为Go模块是由模块镜像缓存的,这意味着可能存在少于100个克隆的流行Go模块,因此仍然容易受到重新劫持。

“不幸的是,缓解所有这些重新劫持是Go或GitHub必须承担的事情,”贝恩斯说。“第三方无法合理注册15,000个GitHub帐户。在此之前,Go开发人员必须了解他们使用的模块以及这些模块源自的存储库的状态,这一点非常重要。”