在 github 上,任何人(我们称他们为 Alice)都可以分叉一个项目,对其进行修改,然后将这些更改作为拉取请求提交给项目所有者(Bob),其想法是 Bob 审查提交的代码以进行确保它符合规格,并且不含病毒*。
如果 Bob 想要在接受拉取请求之前进行更改(例如代码样式),他们可以发表评论要求 Alice 进行这些更改,而 Alice 很可能会进行这些更改,并将它们提交给 Alice 的分叉,此时提交会自动作为拉取请求的一部分出现。
现在,如果有一个恶意的人(Malice)创建了一个带有有益更改的分叉并提交了一个拉取请求,而 Malice 确切地知道 Bob 何时会查看该拉取请求,并且 Bob 将需要大约 5 分钟查看新代码。那么 Malice 是否有可能在 Bob 请求页面查看拉取请求和 Bob 按下“接受”按钮之间进行恶意提交?
*理想情况下,这就是发生的事情。我们假设 Bob 既仁慈又聪明,并且尽其所能正确地做到这一点,但没有意识到这种特殊的可能漏洞。