在 Github 上接受拉取请求的操作是否容易受到竞争条件的影响?

信息安全 脆弱性 代码审查 混帐
2021-08-30 14:29:10

在 github 上,任何人(我们称他们为 Alice)都可以分叉一个项目,对其进行修改,然后将这些更改作为拉取请求提交给项目所有者(Bob),其想法是 Bob 审查提交的代码以进行确保它符合规格,并且不含病毒*。

如果 Bob 想要在接受拉取请求之前进行更改(例如代码样式),他们可以发表评论要求 Alice 进行这些更改,而 Alice 很可能会进行这些更改,并将它们提交给 Alice 的分叉,此时提交会自动作为拉取请求的一部分出现。

现在,如果有一个恶意的人(Malice)创建了一个带有有益更改的分叉并提交了一个拉取请求,而 Malice 确切地知道 Bob 何时会查看该拉取请求,并且 Bob 将需要大约 5 分钟查看新代码。那么 Malice 是否有可能在 Bob 请求页面查看拉取请求和 Bob 按下“接受”按钮之间进行恶意提交?

*理想情况下,这就是发生的事情。我们假设 Bob 既仁慈又聪明,并且尽其所能正确地做到这一点,但没有意识到这种特殊的可能漏洞。

2个回答

不,Github 并不脆弱。

我已经和我的一个非常乐于助人的朋友进行了测试,以使事情进展得更快。尝试此操作时,github 会实时更新提交列表,如果我在更新列表之前单击“接受”按钮,github 会抛出以下消息:

合并尝试失败:修改了头分支。 查看并再次尝试合并

拉取请求并不特定于 GitHub。它是 git 的一部分。

接受拉取请求只是将修订合并到主控中。所以我强烈希望如果你告诉 GitHub 执行git merge deadbeef,他实际上会执行git merge deadbeef而不是执行git merge HEAD