新的研究发现,GitHub 上超过 15000 个 Go 模块仓库容易受到一种名为 repojacking 的攻击。
“VulnCheck公司首席技术官雅各布-贝恩斯(Jacob Baines)分享的一份报告中说:”由于GitHub用户名变更,9000多个软件仓库容易受到repojacking攻击。”超过 6000 个版本库容易因账户删除而被重新劫持。
这些软件源总共包含了不少于 800,000 个 Go 模块版本。
Repojacking 是 “repository”(存储库)和 “hijacking”(劫持)的谐音,它是一种攻击技术,可让不良行为者利用账户用户名的更改和删除来创建一个具有相同名称和预先存在的用户名的存储库,从而发动开源软件供应链攻击。
今年 6 月早些时候,云安全公司 Aqua 透露,GitHub 上的数百万个软件仓库很可能容易受到这种威胁的影响,并敦促进行名称变更的组织确保仍拥有以前的名称作为占位符,以防止这种滥用。
用 Go 编程语言编写的模块特别容易受到 repojacking 的攻击,因为与 npm 或 PyPI 等其他软件包管理器解决方案不同,这些模块是分散的,因为它们会发布到 GitHub 或 Bitbucket 等版本控制平台上。
“任何人都可以指示 Go 模块镜像和 pkg.go.dev 缓存模块的详细信息,”贝恩斯说。”攻击者可以注册新的未使用用户名,复制模块仓库,并向 proxy.golang.org 和 go.pkg.dev 发布新模块。
为了防止开发人员下载潜在的不安全软件包,GitHub 采取了一项名为 “流行版本库命名空间退役”(popular repository namespace retirement)的应对措施,该措施可阻止使用退役命名空间名称创建版本库的尝试,这些命名空间在所有者账户重命名或删除之前已被克隆超过 100 次。
但 VulnCheck 指出,当涉及 Go 模块时,这种保护措施并没有用,因为模块镜像会缓存这些模块,从而避免了与存储库交互或克隆存储库的需要。换句话说,可能有一些基于 Go 的流行模块被克隆了不到 100 次,从而造成了某种绕过。
“贝恩斯说:”不幸的是,减少所有这些repojackings是Go或GitHub必须承担的责任。”第三方无法合理注册 15000 个 GitHub 账户。在此之前,Go 开发者必须了解他们使用的模块,以及模块来源的版本库状态。
拉索安全公司(Lasso Security)表示,它在Hugging Face和GitHub上发现了1681个暴露的API令牌,其中包括与谷歌、Meta、微软和VMware相关的令牌,这些令牌有可能被利用来实施供应链、训练数据投毒和模型盗窃攻击。
原创文章,作者:xbear,如若转载,请注明出处:https://cncso.com/15000-go-module-repojacking-attack-on-github.html