愛伊米

GitHub:我開源我自己;CEO:不存在的

蕭簫 發自 凹非寺

GitHub忽然“開源”了自己程式碼的一部分,還將它放在了GitHub上。

事件起因是這樣的:

TypeScript的開發者Resynth忽然Po了篇文章,表示程式碼託管服務GitHub的全部原始碼被洩露。

GitHub:我開源我自己;CEO:不存在的

他表示,在向官方GitHub DMCA提交的可疑檔案中,一個身份不明的人利用GitHub應用程式中的一個漏洞,冒充GitHub的CEO納特·弗裡德曼(Nat Friedman)上傳了機密原始碼。

事情一出,在HN上激起了網友的熱烈討論,也再次引發了關於GitHub安全問題的思考。

網友lrvick表示,包括他在內的許多安全人員,早就對GitHub上很多相關漏洞進行了公開演示。但除非“搞出個病毒”,微軟根本就不承認這些漏洞的存在。

而且,他早就說過,GitHub提交簽名的部分存在嚴重的設計缺陷,然而如今這件事發生,他們才引起重視。

所以,這位陌生使用者是怎麼做到的?

如何偽造成CEO本人洩露程式碼?

GitHub的原始碼管理器Git,並不能有效地防止使用者假冒。

Git的提交方式更接近於電子郵件,這也就意味著,使用者可以隨意起使用者名稱和填寫郵箱,所以做點小手腳也沒關係。

——除非提交的資訊上有GitHub CEO弗裡德曼的GPG簽名,否則Git在提交資訊時,根本不會確認這是不是CEO本人的提交。(這次有問題的程式碼提交,就沒有CEO本人的簽名信息)

GPG(GNU Privacy Guard)是一個金鑰軟體,用於加密、簽名通訊的內容,也可作為管理非對稱密碼學的金鑰。

除非GPG簽名與郵箱地址相關聯,它並不會對提交物件的真偽進行確認。

也就是說,當你提出一個提交請求到Git本地倉庫時,你就會得到一個代表提交請求的雜湊值,可以透過它直接跳轉到你的分支。

GitHub:我開源我自己;CEO:不存在的

GitHub類似於一個Web應用程式,負責提供瀏覽器到Git底層架構的請求互動,它會將所有的分支儲存到一個底層倉庫裡,哪怕它不以通常的形式出現在在URL架構中。

於是,一位陌生的使用者提交的檔案“光明正大地”進入了GitHub的DCMA儲存庫,還偽造成了CEO弗裡德曼的樣子。

GitHub:我開源我自己;CEO:不存在的

為了做到這一點,這位陌生使用者先是複製了一份DCMA儲存庫、搞個分支出來,便於提交

要洩露的GitHub原始碼

然後,陌生使用者偽造了弗裡德曼的使用者名稱和郵箱,將它提交了。於是,在DCMA儲存庫裡,名為弗裡德曼的使用者,自己提交了一份GitHub原始碼。

CEO迴應後,網友卻炸了

對此,GitHub CEO弗裡德曼做出了迴應,表示GitHub前段時間不小心混淆了一部分原始碼給客戶,但這不會影響GitHub的安全。

他甚至還吟了首勃朗寧的詩:一切都很好,情況也很正常,雲雀展翅飛翔,蝸牛在荊棘上爬動,世上一切順當!

但顯然,網友們並不在意這段原始碼是不是CEO本人洩露的,相反,這件事情再一次激起了他們針對“GitHub開源”這件事本身的怒火。

網友exabrial:您(指CEO)認為這是正常情況?你們是不是想透過偽造/無效的DCMA,刪掉其他的什麼專案?

CEO弗裡德曼:這邊建議您閱讀DCMA工作原理呢。

網友dannyw:如果GitHub真的提倡開源,它就不會是現在這樣。據我所知,微軟是RIAA的成員哦。

網友dannyw之所以提到RIAA(美國唱片業協會),是因為GitHub前段時間應RIAA的要求,直接刪除了GitHub上開源的油管影片下載器

Youtube-dl

GitHub:我開源我自己;CEO:不存在的

一石激起千層浪,原本GitHub最初刪掉的相關專案就18個,現在一搜,竟然冒出了4000多個。

有開發者稱,這次的“偽造事件”估計與Youtube-dl專案被刪有關,也可能是偽造者對微軟並不開放GitHub原始碼的控訴。

關於GitHub開源,還得從微軟收購GitHub後的一系列舉動說起。

微軟和它的“開源”

自2018年微軟收購GitHub後,一直聲稱自己“致力於開源”。

Resynth表示:“我們已經從大量商業廣告裡看到了(微軟對開源的熱愛),微軟打的這些廣告,的確讓它處在開源開發的最前沿。”

但與微軟提倡的“開源”理念相對,它直接封禁了好幾次社群開源的程式碼。

鬧到最近,就是這次偽造事件導火索的“Youtube-dl被封禁事件”。

GitHub:我開源我自己;CEO:不存在的

有開發者表示,想要讓GitHub開放自己的原始碼,如今在微軟這看來,是絕對不可能的。

Resynth也表示,由於有閉源軟體的存在、以及Git的擴張,讓GitHub看起來更像是一個試圖“包含開源專案”的平臺,

而非開源本身

例如,今年6月,GitHub曾經出現過宕機兩小時的情況,這期間,成千上萬個開源專案無法被訪問和使用。

GitHub:我開源我自己;CEO:不存在的

對於這次GitHub洩露原始碼的事件,你怎麼看?

已經走丟的GitHub原始碼網址:

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