更新(4 月 15 日):分叉的 repo 和用户不再存在。
昨天,我的一个 GitHub 项目被分叉了,并且在 repo 的分叉上有一个可疑的提交。从提交中可以看出,GitHub Actions 配置在服务器上安装 ngrok,启用对 rdp 的防火墙访问,并在服务器上启用 rdp。
有人可以解释潜在的攻击者试图实现的目标以及为什么背后的人不能在他们自己的回购中做同样的事情吗?这是一种新型攻击吗?我该怎么办?
更新(4 月 15 日):分叉的 repo 和用户不再存在。
昨天,我的一个 GitHub 项目被分叉了,并且在 repo 的分叉上有一个可疑的提交。从提交中可以看出,GitHub Actions 配置在服务器上安装 ngrok,启用对 rdp 的防火墙访问,并在服务器上启用 rdp。
有人可以解释潜在的攻击者试图实现的目标以及为什么背后的人不能在他们自己的回购中做同样的事情吗?这是一种新型攻击吗?我该怎么办?
这并不是试图让用户安装恶意软件。这是试图在构建服务器上运行恶意软件。他们分叉存储库,安装恶意构建脚本,为分叉创建一个拉取请求 (PR),然后构建将为 PR 运行,它看起来像是来自您的存储库。当 Github 工作人员查看他们的构建服务器为什么要挖掘比特币时,他们会发现这是为您的存储库构建的工作。(但他们可能足够聪明,可以看出它来自恶意 PR)
正如@user253751 在他的回答中所说,这是一个构建步骤恶意软件攻击,一旦从 fork 到您的 repo 打开 PR,可能会对您使用它,因为 GitHub 可能不喜欢这些攻击与您的存储库相关。
GitHub 上有一个未解决的问题,建议通过指定允许从哪个分支更改 github 工作流文件来修复它。https://github.com/actions/runner/issues/458#issuecomment-707643141
同时,有一个解决方法是在 repo 中有一个自定义应用程序,该应用程序在 check_run.created webhook 事件上运行,以检查最后一个编辑正在运行的工作流文件的人是否是 repo 上的管理员。(https://github.com/actions/runner/issues/458#issuecomment-713620965)。可悲的是,在撰写此答案时,不存在官方的 github 解决方案。
这里的问题是他可以欺骗一些用户通过它的链接安装你的应用程序。
例如,想想那些关于如何安装任何软件的教程,这些软件通常包括对 repo 进行 git clone/下载,因为检查你实际安装的内容非常重要。
这是一个关于如何安装 Zsh 的非常好的教程:https ://maxim-danilov.github.io/make-linux-terminal-great-again/
但是,如果您查看该Install Oh My Zsh
部分,您可以看到以下命令:
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
该命令基本上运行(通过 sh)托管在 Github 中的所有脚本。当然,在这种情况下,来源是可靠的,但并非总是如此。
这就是为什么我们应该仔细检查我们始终安装的内容的原因。