GitHub 全部源代碼被泄露,TypeScript 的開發(fā)者質(zhì)疑托管服務(wù)的安全性!
點(diǎn)擊“開發(fā)者技術(shù)前線”,選擇“星標(biāo)?”
讓一部分開發(fā)者看到未來
來自量子位
你知道GitHub安全嗎?
GitHub 忽然 “開源” 了自己代碼的一部分,還將它放在了 GitHub 上。
事件起因是這樣的:
TypeScript 的開發(fā)者 Resynth 忽然 Po 了篇文章,表示代碼托管服務(wù) GitHub 的全部源代碼被泄露。

他表示,在向官方 GitHub DMCA 提交的可疑文件中,一個(gè)身份不明的人利用 GitHub 應(yīng)用程序中的一個(gè)漏洞,冒充 GitHub 的 CEO 納特?弗里德曼(Nat Friedman)上傳了機(jī)密源代碼。
事情一出,在 HN 上激起了網(wǎng)友的熱烈討論,也再次引發(fā)了關(guān)于 GitHub 安全問題的思考。
網(wǎng)友 lrvick 表示,包括他在內(nèi)的許多安全人員,早就對(duì) GitHub 上很多相關(guān)漏洞進(jìn)行了公開演示。但除非 “搞出個(gè)病毒”,微軟根本就不承認(rèn)這些漏洞的存在。
而且,他早就說過,GitHub 提交簽名的部分存在嚴(yán)重的設(shè)計(jì)缺陷,然而如今這件事發(fā)生,他們才引起重視。

所以,這位陌生用戶是怎么做到的?
如何偽造成 CEO 本人泄露代碼?
GitHub 的源代碼管理器 Git,并不能有效地防止用戶假冒。
Git 的提交方式更接近于電子郵件,這也就意味著,用戶可以隨意起用戶名和填寫郵箱,所以做點(diǎn)小手腳也沒關(guān)系。
—— 除非提交的信息上有 GitHub CEO 弗里德曼的 GPG 簽名,否則 Git 在提交信息時(shí),根本不會(huì)確認(rèn)這是不是 CEO 本人的提交。(這次有問題的代碼提交,就沒有 CEO 本人的簽名信息)
GPG(GNU Privacy Guard)是一個(gè)密鑰軟件,用于加密、簽名通信的內(nèi)容,也可作為管理非對(duì)稱密碼學(xué)的密鑰。
除非 GPG 簽名與郵箱地址相關(guān)聯(lián),它并不會(huì)對(duì)提交對(duì)象的真?zhèn)芜M(jìn)行確認(rèn)。
也就是說,當(dāng)你提出一個(gè)提交請(qǐng)求到 Git 本地倉(cāng)庫時(shí),你就會(huì)得到一個(gè)代表提交請(qǐng)求的哈希值,可以通過它直接跳轉(zhuǎn)到你的分支。

GitHub 類似于一個(gè) Web 應(yīng)用程序,負(fù)責(zé)提供瀏覽器到 Git 底層架構(gòu)的請(qǐng)求交互,它會(huì)將所有的分支保存到一個(gè)底層倉(cāng)庫里,哪怕它不以通常的形式出現(xiàn)在在 URL 架構(gòu)中。
于是,一位陌生的用戶提交的文件 “光明正大地” 進(jìn)入了 GitHub 的 DCMA 存儲(chǔ)庫,還偽造成了 CEO 弗里德曼的樣子。
為了做到這一點(diǎn),這位陌生用戶先是復(fù)制了一份 DCMA 存儲(chǔ)庫、搞個(gè)分支出來,便于提交要泄露的 GitHub 源代碼;
然后,陌生用戶偽造了弗里德曼的用戶名和郵箱,將它提交了。于是,在 DCMA 存儲(chǔ)庫里,名為弗里德曼的用戶,自己提交了一份 GitHub 源代碼。
CEO 回應(yīng)后,網(wǎng)友卻炸了
對(duì)此,GitHub CEO 弗里德曼做出了回應(yīng),表示 GitHub 前段時(shí)間不小心混淆了一部分源代碼給客戶,但這不會(huì)影響 GitHub 的安全。
他甚至還吟了首勃朗寧的詩:一切都很好,情況也很正常,云雀展翅飛翔,蝸牛在荊棘上爬動(dòng),世上一切順當(dāng)!

但顯然,網(wǎng)友們并不在意這段源碼是不是 CEO 本人泄露的,相反,這件事情再一次激起了他們針對(duì) “GitHub 開源” 這件事本身的怒火。
網(wǎng)友 exabrial:您(指 CEO)認(rèn)為這是正常情況?你們是不是想通過偽造 / 無效的 DCMA,刪掉其他的什么項(xiàng)目?
CEO 弗里德曼:這邊建議您閱讀 DCMA 工作原理呢。
網(wǎng)友 dannyw:如果 GitHub 真的提倡開源,它就不會(huì)是現(xiàn)在這樣。據(jù)我所知,微軟是 RIAA 的成員哦。
網(wǎng)友 dannyw 之所以提到 RIAA(美國(guó)唱片業(yè)協(xié)會(huì)),是因?yàn)?GitHub 前段時(shí)間應(yīng) RIAA 的要求,直接刪除了 GitHub 上開源的油管視頻下載器?Youtube-dl。
一石激起千層浪,原本 GitHub 最初刪掉的相關(guān)項(xiàng)目就 18 個(gè),現(xiàn)在一搜,竟然冒出了 4000 多個(gè)。

有開發(fā)者稱,這次的 “偽造事件” 估計(jì)與 Youtube-dl 項(xiàng)目被刪有關(guān),也可能是偽造者對(duì)微軟并不開放 GitHub 源代碼的控訴。
關(guān)于 GitHub 開源,還得從微軟收購(gòu) GitHub 后的一系列舉動(dòng)說起。
微軟和它的 “開源”
自 2018 年微軟收購(gòu) GitHub 后,一直聲稱自己 “致力于開源”。
Resynth 表示:“我們已經(jīng)從大量商業(yè)廣告里看到了(微軟對(duì)開源的熱愛),微軟打的這些廣告,的確讓它處在開源開發(fā)的最前沿。”
但與微軟提倡的 “開源” 理念相對(duì),它直接封禁了好幾次社區(qū)開源的代碼。
鬧到最近,就是這次偽造事件導(dǎo)火索的 “Youtube-dl 被封禁事件”。
有開發(fā)者表示,想要讓 GitHub 開放自己的源碼,如今在微軟這看來,是絕對(duì)不可能的。
Resynth 也表示,由于有閉源軟件的存在、以及 Git 的擴(kuò)張,讓 GitHub 看起來更像是一個(gè)試圖 “包含開源項(xiàng)目” 的平臺(tái),而非開源本身。
例如,今年 6 月,GitHub 曾經(jīng)出現(xiàn)過宕機(jī)兩小時(shí)的情況,這期間,成千上萬個(gè)開源項(xiàng)目無法被訪問和使用。
對(duì)于這次 GitHub 泄露源碼的事件,你怎么看?
傳送門
已經(jīng)走丟的 GitHub 源碼網(wǎng)址:
https://web.archive.org/web/2/https://github.com/github/dmca/tree/565ece486c7c1652754d7b6d2b5ed9cb4097f9d5
參考鏈接
https://arstechnica.com/information-technology/2020/11/githubs-source-code-was-leaked-on-github-last-night-sort-of/
https://www.zdnet.com/article/github-denies-getting-hacked/
https://resynth1943.net/articles/github-source-code-leak/
https://news.ycombinator.com/item?id=24994746
https://www.theverge.com/2020/6/29/21306674/github-down-errors-outage-june-2020
前線推出學(xué)習(xí)交流群,加群一定要備注: 研究/工作方向+地點(diǎn)+學(xué)校/公司+昵稱(如前端+上海+上交+可可) 根據(jù)格式備注,可更快被通過且邀請(qǐng)進(jìn)群,領(lǐng)取一份專屬學(xué)習(xí)禮包
掃碼加我微信進(jìn)群,內(nèi)推和技術(shù)交流,大佬們零距離
END 后臺(tái)回復(fù)“面試”?“資料”?領(lǐng)取一份干貨,數(shù)百技術(shù)面試手冊(cè)等你 開發(fā)者技術(shù)前線 ,匯集技術(shù)前線快訊和關(guān)注行業(yè)趨勢(shì),大廠干貨,是開發(fā)者經(jīng)歷和成長(zhǎng)的優(yōu)秀指南。 歷史推薦 支付寶架構(gòu)到底有多牛? 再見!Postman 10個(gè)非常實(shí)用的 VS Code 插件 2020 年九大頂級(jí) Java 框架 2020 必學(xué)的10大頂級(jí) Python 庫 為什么我決定要放棄 okhttp、httpClient? 好文點(diǎn)個(gè)在看吧!


