我正在做一个项目,一个私人仓库,突然间所有的提交都消失了,取而代之的是一个文本文件,上面写着
要恢复丢失的代码并避免泄漏:将 0.1 比特币 (BTC) 发送到我们的比特币地址 1ES14c7qLb5CYhLMUekctxLgc1FV2Ti9DA 并通过电子邮件与我们联系 admin@gitsbackup.com 并提供您的 Git 登录名和付款证明。如果您不确定我们是否有您的数据,请联系我们,我们将向您发送证明。您的代码已下载并备份在我们的服务器上。如果我们在接下来的 10 天内没有收到您的付款,我们将公开您的代码或以其他方式使用它们。
发生这种情况时,谷歌搜索没有显示任何内容,但大约一个小时后,它开始出现。
我正在使用 SourceTree(始终是最新的),但不知何故我怀疑 SourceTree 是问题所在,或者我的系统(Windows 10)受到了损害。我不是说不是这样,只是我对此表示怀疑。
这仅发生在我的一个存储库(它们都是私有的)中,而其他所有存储库都没有受到影响。我更改了密码,启用了 2 因素身份验证,删除了一个我多年未使用的访问令牌,并给 GitLab 写了一封电子邮件,希望他们能告诉我有关攻击者在哪里/谁进入的信息。
我的密码很弱,可以通过暴力破解相对容易(它不是一个常见的密码,但以“a”开头,并且只有 az 字符)并且可能是他们只是自动检查是否可以访问该帐户,然后运行一些 git 命令。我的电子邮件地址和该特定密码也可能在泄露的帐户列表中。有人可能会争辩说,如果他们是这样进入的,他们会简单地更改帐户凭据,但搜索 Internet 发现在这些情况下 GitLab/GitHub 只会为您恢复凭据,所以我认为这就是他们没有这样做的原因不要这样做。
也可能是那个旧的访问令牌,我不记得我过去用它做什么和在哪里使用它 - 很可能是为在我以前拥有的计算机上使用而生成的,所以我怀疑这是问题所在。
还有 4 名开发人员正在开发它,他们都拥有对存储库的完全访问权限,因此他们的帐户也有可能被盗用。
我已经用 BitDefender 扫描了我的计算机,但我没有在互联网上做任何可疑的事情,所以我不认为我感染了恶意软件/木马是造成这种情况的原因。
我正在等待 GitLab 的回答,也许他们可以对此有所了解。我在本地 Git 上有代码库,所以这不是问题,但我还没有将代码推回存储库。此外,以防万一代码在某处发布,我将更改要在源(数据库、IMAP 帐户)中找到的所有密码
更新
我发现代码没有消失。我尝试访问提交的哈希并且它有效。所以代码在那里,但 HEAD 有问题。我对此的了解非常有限,但
git reflog
显示我所有的提交。
这对我来说意味着攻击者很可能没有克隆存储库(无论如何,这对所有受害者来说都是一场后勤噩梦),而且他们有机会通过源代码寻找敏感数据,或者公开代码的比例很低。对我来说,这也意味着这不是有针对性的攻击,而是由脚本执行的随机批量攻击。我真的希望这是为了我们自己的利益!
更新 2
所以,如果你这样做
git checkout origin/master
你会看到攻击者的提交
git checkout master
你会看到你所有的文件
git checkout origin/master
git reflog # take the SHA of the last commit of yours
git reset [SHA]
将修复你的起源/主人......但是
git status
现在会说
HEAD detached from origin/master
仍在寻找解决此问题的方法
更新 3
如果您在本地有文件,则运行
git push origin HEAD:master --force
会解决一切。见彼得的评论
因此,问题是假设您在本地没有 repo,哪些命令将使我的存储库恢复到以前的工作状态,至于被攻击者是如何进入的,我希望 GitLab 的答案(如果有的话)能帮助我们更多的。
这里正在进行讨论
该攻击针对 GitHub、BitBucket 和 GitLab 帐户。这是 GitHub 公共存储库的规模