數百 GitHub 私有庫被黑客攻擊:不交贖金就公開原始碼
近日,數百名使用 Git 託管服務如 GitHub、Bitbucket 和 GitLab 的開發者私有庫遭到黑客清空,攻擊者留下索要贖金的通知,要求在十天內向某錢包地址支付 0.1 個比特幣(合人民幣約 3838 元)的贖金,否則會將程式碼公開。
事件經過
5 月 2 日有網友在 Reddit 上發帖表示他的程式碼庫被攻擊並且被刪除,黑客留下了一封勒索信。信中黑客表示,他們已經將原始碼下載並存儲到了自己的伺服器上。受害者要在 10 天之內,往特定賬戶支付 0.1 比特幣,否則他們將會公開程式碼,或以其他的方式使用它們。
要找回你丟失的程式碼並避免程式碼洩漏:將 0.1 比特幣 (BTC) 傳送至我們的比特幣地址 1ES14c7qLb5CYhLMUekctxLgc1FV2Ti9DA,並通過郵件與我們聯絡,提供您的 git 登入資訊和付款證明。地址為 admin[at]gitsbackup[dot]com。
如果你不確定我們是否有你的資料,請聯絡我們,我們會給你傳送證明。你的程式碼已經被下載並備份到我們的伺服器上。
如果我們在接下來的 10 天內沒有收到你的付款,我們將公開你的程式碼或以其他方式使用它們。
Git 是流行的分散式版本控制系統,開發者通常會在本地留有備份,所以刪除託管服務的程式碼庫本身意義不大,但開發者未必會願意公開私有庫。
根據報道 ,Atlassian 的一位安全研究員表示,BitBucket 上已經看到很多使用者的程式碼庫受到黑客的攻擊。根據內部資料和線上報告,他估計受害者至少有 1000 人。在 GitHub 上搜索黑客的地址可以返回 392 個專案,意味著 GitHub 上 392 個使用者的程式碼庫被攻擊了。
一些被黑客攻擊的受害者表示他們在 GitHub、GitLab 和 Bitbucket 帳戶中使用了弱密碼,並且忘記刪除幾個月沒用過的舊應用程式的訪問令牌 - 這兩種情況在網路賬戶被盜取的案例中都很常見。
但是證據表明,黑客已經掃描了整個網際網路上的 Git 配置檔案,提取了憑據,然後使用這些登入資訊訪問了 Git 託管服務並對帳戶進行勒索。
GitLab 的安全負責人 表示,
我們已確定受影響的使用者帳戶並且已經通知了他們。我們的調查結果表明,受損帳戶的密碼以明文形式儲存在相關程式碼庫中。我們強烈建議使用密碼管理工具以更安全的方式儲存密碼,並儘可能啟用雙因素身份驗證,這兩種方法都可以防止此類問題。
恢復方法
好訊息是,在調查了受害者的情況後, StackExchange 安全論壇 的成員發現黑客實際上沒有刪除程式碼,只是修改類 HEAD 而已。這意味著這次攻擊可能並不是有針對性的,而是由指令碼執行的隨機大量攻擊,在某些情況下可以恢復程式碼提交。
具體恢復方法如下:
輸入:
複製程式碼
git checkout origin/master
可以看到攻擊者的提交
複製程式碼
git checkoutmaster
可以看到你所有的檔案
複製程式碼
git checkout origin/master gitreflog# take the SHA of the last commit of yours git reset [SHA]
將修復你的 origin/master。但是,檢視 git 狀態的話,
複製程式碼
git status
此時顯示
複製程式碼
HEAD detached from origin/master
這表明修復仍然不完全。
如果你的檔案在本地,則執行
複製程式碼
git push origin HEAD:master--force
就可以修復好。
如果你在本地沒有備份,仍然可以從遠端庫克隆,用 git reflog 或者 git fsck 可以找到最後一次提交併更改 HEAD。
在推特上,開發者社群的一些重要人物目前正在敦促受害者在支付贖金之前聯絡 GitHub、GitLab 或 Bitbucket 的支援團隊,因為可能有其他方法可以恢復已刪除的程式碼庫。
小結
前一段國內時間也出現過企業程式碼被惡意公開的情況,比如大疆前員工將含有公司商業機密的程式碼上傳到了 GitHub 的公共程式碼庫中,造成原始碼洩露,給大疆造成經濟損失達 116.4 萬元人民幣。最終該員工獲有期徒刑六個月,並處罰金 20 萬人民幣。
程式碼庫被公開將給個人及企業帶來很大損失,不管是個人還是企業都應該從軟體或者物理的角度加強程式碼庫的加密防禦。安全問題不可小覷。