了解 Github 回购劫持

2022 年 8 月 5 日

威胁行为者一直在使用 GitHub 的 repojacking 漏洞来劫持并向数以千计的存储库注入恶意代码。 此缺陷尚未修复,这意味着 GitHub 用户可能很快就会看到更多此类攻击。

幸运的是,有一些方法可以防止网络犯罪分子利用这个软件安全漏洞。 继续阅读以了解有关 GitHub 的 repojacking 漏洞的更多信息,以及组织可以采取哪些步骤来保护 GitHub 存储库免受 repojacking。

Repojacking 攻击是如何发生的

也称为依赖存储库劫持,repojacking 是一个模糊的供应链和数据安全漏洞,与子域接管有一些相似之处。

repojacking 可以通过三种方式发生:

1. GitHub 用户重命名他们的帐户:这是 GitHub 存储库变得可劫持的最常见方式。 每当存储库所有者更改其用户名时,任何人都可以注册旧用户名。 威胁行为者可以注册旧的 GitHub 名称,重新填充存储库,并使用它将恶意代码注入任何依赖它的项目。

2. GitHub 用户将他们的存储库转移给另一个用户并删除他们的帐户。 在用户转移存储库后创建重定向。 一旦用户删除了他们的帐户,任何人都可以劫持该帐户。

3. GitHub 用户删除了他们的帐户。这是三者中危害最小的。 当原始用户删除他们的帐户时,任何引用它的项目或依赖项在获取存储库时都会出错。

Repojacking 的影响

Repojacking 非常危险,特别是如果攻击者破坏了具有数百万下载量的流行软件包。 许多编程语言、框架、软件、加密钱包、应用程序和游戏直接从 GitHub 等版本控制系统中提取包的代码。 他们还使用 GitHub 存储库 URL 作为包的指针。

受影响的项目、语言、框架和软件包括:

  • Go、PHP、Swift 等语言
  • 个人编程项目和软件
  • 开源依赖项、模块和小部件
  • 来自 Facebook、Google、Kubernetes、Amazon 和 NodeJS 等领先公司的网络框架和存储库
如何保护GitHub 存储库免遭 Repojacking

显然,GitHub 的 repojacking 是广泛而有影响力的。 幸运的是,公司有办法保护他们的软件供应链。

避免直接链接到 GitHub 存储库

首先,组织应该避免链接到 GitHub 存储库。 GitHub 存储库曾经是——而且永远不应该是——替代包管理器。 相反,团队应该使用更安全、可用和静态的专用包管理器。

然而,这并不是避免 repojacking 的万无一失的方法。 如果用户的依赖项之一直接链接到 GitHub 存储库 URL,用户可能仍然容易受到 repojacking 的攻击。 即使似乎没有任何依赖项具有 GitHub 链接,一些传递依赖项也可能具有隐藏的 GitHub 存储库链接。

贩卖

另一种防止 repojacking 的方法是通过 vendoring,它预先下载所有依赖项并将它们包含在存储库中。 由于所有依赖项都已下载,因此组织不必链接到可能已损坏的 GitHub 存储库。

不幸的是,如果用户更新他们的依赖项并且其中一个已被篡改,他们仍然会被重新劫持。 这意味着供应商只有在团队有时间和精力密切监视依赖项更新时才有效。

版本固定

网络安全团队还可以使用版本固定来避免 GitHub 的 repojacking。

版本固定是将软件或框架的特定安全版本与依赖项绑定在一起的做法,以防止软件包安装程序安装其他版本。 在 GitHub 存储库上下文中,版本固定通常涉及 SHA1 哈希,它指示包管理器仅下载特定的存储库版本。 因此,即使该 repo 被 repojacked,网络犯罪分子也无法在不更改提交哈希的情况下更改代码。

锁定文件由列出版本固定依赖项的包管理器创建。 它强制尝试构建该项目的用户下载锁定文件中指定的相同版本和包。 然而,经验丰富的黑客可以绕过大多数主要包管理器的锁定文件和版本固定。

应用安全

采用尖端的应用程序安全工具是防止 repojacking 的唯一可靠方法。 与上述方法不同,应用程序安全平台:

  • 快速获得结果:手动保护代码免遭 repojacking 可能需要很长时间。 例如,供应商和版本固定可能需要数小时甚至数天。 相比之下,团队可以在几分钟内设置应用程序安全工具。 然后他们可以立即开始扫描并在云端共享结果。
  • 帮助团队制定行动计划:应用安全平台可以帮助团队根据安全目标和不同场景的假设模拟制定行动计划。
  • 与 DevOps 环境集成:一些工具使团队能够直接从其集成开发环境 (IDE) 中发现漏洞,因此他们可以在整个软件开发生命周期 (SDLC) 中发现安全漏洞。
  • 与各种工具集成:应用程序安全工具可以与各种 IDE、错误跟踪器、存储库和构建系统集成。 例如,Kiuwan SAST 与 Visual Studio、Jenkins、Bamboo、Bitbucket 等集成。

最好的应用程序安全工具还符合严格的安全标准,例如常见弱点枚举 (CWE) 和开放 Web 应用程序安全项目 (OWASP)。 这意味着 IT 团队不必在每次更新代码库时都担心合规性问题。


体验Kiuwan的不同之处

为了保护自己免受 repojacking、数据泄露和其他网络安全风险,组织应考虑获得 Kiuwan 的代码安全 (SAST)。 作为最佳的企业级安全解决方案,Code Security 会自动扫描代码库以发现并修复威胁参与者可以利用的代码漏洞。 Code Security 功能强大、可靠且易于使用,可直接集成到 DevOps 环境中。 它还提供:

检测和修复各种漏洞的能力,包括 repojacking、跨站点请求伪造、格式字符串漏洞、目录索引、返回本地指针和应用程序配置错误
用于修复安全漏洞和管理技术债务的定制报告和自动行动计划
能够自定义不同漏洞的重要性
一个行动计划仪表板,用于跟踪实现目标的进度并避免偏差
完全符合领先的信息技术 (IT) 标准,包括 OWASP、CWE、PCI 和 NIST

有兴趣了解更多关于九湾的信息吗? 立即注册代码安全演示。 Kiuwan 的专家团队将展示启动扫描、导航无缝用户界面、创建补救行动计划和管理代码风险是多么容易。




立即获取 Kiuwan 应用程序安全性的演示!

快速、高效地扫描和报告漏洞并进行修复。 我们符合所有安全标准,为您的团队量身定制软件包,以减轻您在 SDLC 内的网络风险。

立即演示