近日,数百名使用 Git 托管服务如 GitHub、Bitbucket 和 GitLab 的开发者私有库遭到黑客清空,攻击者留下索要赎金的通知,要求在十天内向某钱包地址支付 0.1 个比特币(合人民币约 3838 元)的赎金,否则会将代码公开。
事件经过
5 月 2 日有网友在 Reddit 上发帖表示他的代码库被攻击并且被删除,黑客留下了一封勒索信。信中黑客表示,他们已经将源代码下载并存储到了自己的服务器上。受害者要在 10 天之内,往特定账户支付 0.1 比特币,否则他们将会公开代码,或以其他的方式使用它们。
Git 是流行的分布式版本控制系统,开发者通常会在本地留有备份,所以删除托管服务的代码库本身意义不大,但开发者未必会愿意公开私有库。
根据报道,Atlassian 的一位安全研究员表示,BitBucket 上已经看到很多用户的代码库受到黑客的攻击。根据内部数据和在线报告,他估计受害者至少有 1000 人。在 GitHub 上搜索黑客的地址可以返回 392 个项目,意味着 GitHub 上 392 个用户的代码库被攻击了。
一些被黑客攻击的受害者表示他们在 GitHub、GitLab 和 Bitbucket 帐户中使用了弱密码,并且忘记删除几个月没用过的旧应用程序的访问令牌 - 这两种情况在网络账户被盗取的案例中都很常见。
但是证据表明,黑客已经扫描了整个互联网上的 Git 配置文件,提取了凭据,然后使用这些登录信息访问了 Git 托管服务并对帐户进行勒索。
GitLab的安全负责人表示,
恢复方法
好消息是,在调查了受害者的情况后,StackExchange安全论坛的成员发现黑客实际上没有删除代码,只是修改类 HEAD 而已。这意味着这次攻击可能并不是有针对性的,而是由脚本执行的随机大量攻击,在某些情况下可以恢复代码提交。
具体恢复方法如下:
输入:
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]
复制代码
将修复你的 origin/master。但是,查看 git 状态的话,
复制代码此时显示
HEAD detached from origin/master
复制代码
这表明修复仍然不完全。
如果你的文件在本地,则运行
git push origin HEAD:master --force
复制代码
就可以修复好。
如果你在本地没有备份,仍然可以从远程库克隆,用 git reflog 或者 git fsck 可以找到最后一次提交并更改 HEAD。
小结
前一段国内时间也出现过企业代码被恶意公开的情况,比如大疆前员工将含有公司商业机密的代码上传到了 GitHub 的公共代码库中,造成源代码泄露,给大疆造成经济损失达 116.4 万元人民币。最终该员工获有期徒刑六个月,并处罚金 20 万人民币。
代码库被公开将给个人及企业带来很大损失,不管是个人还是企业都应该从软件或者物理的角度加强代码库的加密防御。安全问题不可小觑。