代码所有者
概述
GitHub 允许您定义负责仓库中代码的个人或团队,即代码所有者。为此,您应该将 CODEOWNERS 文件添加到以下位置之一:
.github//docs/
之后,您可以设置受保护分支的规则,并要求代码所有者进行强制批准。
参考资料:
代码所有权接管
代码所有者的文档说明CODEOWNERS 文件可以在 /、docs/ 或 .github/ 目录中定义:
要使用 CODEOWNERS 文件,请在仓库的根目录、docs/ 或 .github/ 目录中创建一个名为 CODEOWNERS 的新文件,在您想要添加代码所有者的分支中。然而,如果一个仓库包含多个 CODEOWNERS 文件会发生什么?实际上,在允许的路径中存在以下优先级:
.github//docs/
因此,如果 GitHub 在 .github/ 中找到 CODEOWNERS 文件,它将忽略 / 和 docs/ 中的 CODEOWNERS 文件。换句话说,如果 CODEOWNERS 文件已在 / 或 docs/ 中创建,具有写入权限的攻击者能够将 CODEOWNERS 文件添加到 .github/,接管代码所有权,并绕过分支保护规则。现在攻击者是整个仓库代码的所有者,可以批准任何更改。
假设有一个仓库,其中 .github/ 有单独的所有者负责对该目录的更改,而 CODEOWNERS 文件存储在 / 中。在这种情况下,CODEOWNERS 文件可能如下所示:
* @owner-team
.github/ @dev-team@dev-team 团队的成员,或获得该成员账户访问权限的攻击者,可以使用以下步骤在此仓库中提升其权限:
使用个人 GitHub 账户或其他被入侵的账户 fork 仓库。
添加具有以下内容的
.github/CODEOWNERS文件:* @dev-team向目标仓库创建 PR。
批准 PR(由于攻击者有权访问
.github/的代码所有者账户,他们可以在.github/内批准任何更改)。合并更改。
现在攻击者是整个仓库的代码所有者,他们能够批准任何更改,包括
.github/之外的更改。
最后更新于