GitHub 上数百万个存储库可能容易被劫持

GitHub 上数百万个存储库可能容易被劫持

GitHub 上的数百万个存储库可能容易受到劫持 PlatoBlockchain 数据智能的攻击。垂直搜索。人工智能。

GitHub 上数百万个企业软件存储库容易受到攻击 重新劫持,一种相对简单的软件供应链攻击,威胁行为者将依赖于特定存储库的项目重定向到恶意项目。

Aqua Security 的研究人员在本周的一份报告中表示,这个问题与 GitHub 用户或组织更改项目名称或将其所有权转让给另一个实体时 GitHub 如何处理依赖项有关。

更名风险

为了避免破坏代码依赖关系,GitHub 在原始存储库名称和新存储库名称之间创建了一个链接,以便所有依赖于原始存储库的项目都会自动重定向到新重命名的项目。 但是,如果组织未能充分保护旧用户名,攻击者可以简单地重用它来创建原始存储库的木马版本,以便任何依赖该存储库的项目将再次开始从中下载依赖项。

“当存储库所有者更改其用户名时,会在旧名称和新名称之间创建一个链接,供从旧存储库下载依赖项的任何人使用。” 阿夸研究人员表示 本周在博客中。 “但是,任何人都可以创建旧用户名并破坏此链接。”

Aqua 的研究人员最近决定调查 GitHub 上易受此类重新劫持或依赖项存储库劫持(一些安全研究人员提到的威胁)的存储库的普遍性。

普遍存在的问题

Aqua 的发现是双重的:GitHub 上存在数以百万计的此类存储库,其中包括属于 Google 和 Lyft 等公司的存储库; 攻击者可以轻松使用工具来找到这些存储库并劫持它们。 其中一个工具是 GHTorrent,该项目在 GitHub 上维护所有公共事件的近乎完整的记录,例如提交和拉取请求。 攻击者可以使用 GHTorrent 获取组织以前使用的存储库的 GitHub 名称。 然后,他们可以使用旧用户名注册存储库,重新创建存储库,并将恶意软件传递到使用它的任何项目。

如果存储库的所有者更改或删除其存储库的用户名,则直接引用 GitHub 存储库的任何项目都容易受到攻击。

Aqua Nautilus 安全研究员 Yakir Kadkoda 表示:“我们提供了一个重要的数据集,攻击者可以利用该数据集获取属于组织的先前存储库的名称。”

卡德科达警告说:“组织不应假设其旧组织名称将保持不公开状态。” “对于他们来说,在 GitHub 上声明并保留其旧用户名并扫描 GitHub URL 和代码中的引用以识别可能被攻击者声明的任何存储库至关重要。”

绕过保护

Kadkoda 表示,GitHub 已尝试通过阻止创建以前拥有但现在重定向到其他项目的用户名和存储库来解决此问题。 GitHub 上也有 实施了一个机制 几年前,我们淘汰了流行的存储库命名空间,作为减轻这种威胁的一种手段。 “然而,在过去几年里,已经发现了一些绕过方法,”他说。 在 Aqua 的研究过程中,其研究人员发现了几个不适用 GitHub 实施的保护的存储库示例。 “因此,用户目前不能完全依赖这些防御措施,”他说。

Aqua 的博客指出了 GitHub 的一个漏洞 Checkmarx去年发现 作为攻击者绕过 GitHub 防止重新劫持的尝试的方法之一。 该缺陷涉及一种名为“流行存储库命名空间退休”的机制,并影响 GitHub 上所有重命名的用户名,包括 Swift、Packagist 和 Go 等包管理器上的 10,000 多个包。 “重新劫持是一种劫持重命名的存储库 URL 流量并通过利用破坏原始重定向的逻辑缺陷将其路由到攻击者的存储库的技术,”Checkmarx 在有关该漏洞的报告中表示。 “当 GitHub 存储库的创建者决定重命名其用户名而旧用户名可供注册时,该存储库很容易受到重新劫持。”

Kadkoda 表示,组织可以通过扫描其代码、存储库和 GitHub 链接的依赖项来减轻遭受重新劫持威胁的风险:“他们应该检查这些链接是否直接引用 GitHub 项目,或者是否有重定向指向其他用户名或存储库下的存储库名称比原来的链接。” 在这些情况下,组织应尝试声明可用的用户名,以防止攻击者这样做。 “此外,组织应该始终在 GitHub 上保留他们的旧用户名,”他说。

时间戳记:

更多来自 暗读