是否可以通过远程控制来破坏 git 存储库?

Is it possible to corrupt a git repository with control of a remote?

所以我试图了解恶意行为者破坏 git 存储库的方式。

例如,假设有一个您通过 ssh 连接到的不受信任的服务器,该服务器具有您使用的远程服务器。恶意行为者是否有可能破坏 git 存储库,以至于当我从中提取时,我会丢失某种数据?

我假设由于完整性检查,答案是否定的,但理想情况下我正在寻找 git 客户端为保护回购的完整性所做的 mechanisms/checks。

Git 通常不会在获取时执行 fsck,因此可能会在不注意的情况下获取损坏的数据(如损坏或无效的提交或标记对象)。不受信任的远程也有可能提供有效但恶意的数据,例如由于不区分大小写问题而试图覆盖 .git 目录的数据;这些也被 git fsck.

拒绝

fetch.fsckObjects 设置为 true 将捕获所有这些情况。然而,这并不能阻止人们插入包含恶意代码或数据的有效对象,这些代码或数据会利用您的工作环境,但它应该拒绝试图利用 Git 本身的案例。大多数托管服务提供商设置 receive.fsckObjects 以便他们在被接受到存储库之前拒绝所有这些攻击,以及一般的损坏数据。

如果您需要推送到不受信任的服务器,您可以选择设置 fetch.fsckObjects 并使用提交签名,这将防止其他人篡改实际对象。但是,它不会阻止人们回滚引用或以其他方式修改它们。