YouTube-dl事件剛剛過去不久,GitHub又登上了Hacker News榜首,
原因是其源代碼被全部泄露!
從開發者Resynth 發表的一篇部落格中了解到,在一個向 GitHub 官方 DMCA 倉庫提交的可疑 Commit 中,一名不明身份人員利用 GitHub 應用程式中的bug 假冒GitHub CEO 奈特·弗里德曼 (Nat Friedman)上傳了機密源代碼,
泄露檔案已被全部洗掉
GitHub想必大家都非常熟悉,它是一個大型代碼存盤庫,主要為企業和開發人員提供托管專案和服務代碼,蘋果、亞馬遜、Google、Facebook以及其他許多大型科技公司都是其主要客戶,
目前,GitHub已托管超過1億個存盤庫,為4000萬開發人員提供資源支持。
因此,此泄露事件一出便迅速沖上了Hacker News熱搜,不少開發者表示為GitHub平臺的安全性感到擔憂,
對此,GitHub CEO Friedman本人則第一時間在熱帖下做出了解釋。他表示:
GitHub沒有被黑客入侵,被泄露的是部分GitHub Enterprise Server源代碼。二者雖然共享大量代碼,但GitHub主要是由Rube撰寫,還是有很大差異的,
另外,這一事件的起因是幾個月前,開發人員無意間將企業服務器源代碼的未脫敏/混淆的 tarball 交付給了一些客戶造成的,我們正在全力修復平臺Bug,防止未經授權的不明人士通過偽造身份隨意盜用、修改他人專案,
最后,Friedman為了安撫用戶甚至還吟了首勃朗寧的詩:一切都很好,情況也很正常,云雀展翅飛翔,蝸牛在荊棘上爬動,世上一切順當!
不過,開發者們對此回應并不買賬。從他們的吐槽來看,Github代碼管理系統早已存在多項Bug,比如提交代碼時,Git不會對用戶身份進行核驗。這一點會給源代碼帶來極大的安全風險,但GitHub平臺對此從未重視過,
另外,有人表示正是利用這一缺陷,不明人士才得以冒充Friedman身份發布了機密代碼,
源代碼管理器Git存在Bug
Git,是Github用來托管源代碼的分布式版本管理系統,簡單來說,就是源代碼管理器,
它的設計存在一種明顯的缺陷,即沒有為防止其他用戶盜用提供太多的保護,
具體來說,Git 上傳代碼檔案的過程,類似于發送電子郵件,用戶可以在user.name和user.email欄位中輸入任何資訊,這一過程中,如果兩個欄位之間不采用GPG密鑰關聯,系統就不會核查它的指定來源,那么資訊造假會變得非常容易。
上述不明人士順利提交成功,顯然是Friedman沒為相關欄位建立GPG(General Planning Group)密鑰。
那么,在繞過這層限制后,不明人士又是如何提交至存盤庫,同時又不損害實際存在賬戶的?
據了解,將提交內容上傳到Git存盤庫會得到一個散列,可用于查找樹。GitHub是Web應用程式的一部分,提供了對瀏覽器中底層Git結構的訪問權限,因此,它可以將Git存盤庫的所有分支存盤在一個單獨的底層存盤庫中,盡管通常不會在URL結構中顯示這種方式,
為了假冒別人的賬戶,不明人士首先需要克隆一個DMCA儲存庫,在擴展到存盤庫之后,再提交泄漏源代碼,并偽造成Friedman的姓名和電子郵件地址,這個過程Fork存盤庫可能會出現錯誤,換句話說,URL可能依然指向假冒者真正的用戶名和賬戶,
但在底層Git上,父級和Fork都是同一個存盤庫的一部分,這將允許假冒者創建一個URL,該URL可以在主存盤庫中提交,而不是在Fork中。
因此,假冒者從https://github.com/github/dmca開始,將tree/$hash追加到末尾,其中$hash是攻擊者自己的fork提交的散列值。
結果假冒者得以代替Friedman使用了一個URL在GitHub上提交了自己的機密代碼。
值得一提的是,除了代碼安全性的擔憂之外,這件事也再度引起了開發者們對GitHub開源態度的關注,
長久以來,GitHub 一直因為未公開源代碼而飽受詬病,而恰好前幾日,GitHub再度因封殺視訊神器YouTube-dl而陷入輿論風波。
據了解,此次泄露事件的發生,很可能是這位不知名開發者對封殺YouTube-dl一事的報復,
或許與下架YouTube-dl有關
上個月,在美國唱片業協會(RIAA)的要求下, GitHub 封禁了7.5萬Star的熱門開源專案 YouTube-dl。
當時RIAA其給出的理由是,YouTube-dl其違反了DMCA的反規避條款:
此源代碼的明確目的是:1)規避 YouTube 等授權流媒體服務所使用的技術保護措施;2)未經授權復制和分發會員公司擁有的音樂視訊和音頻,3)除YouTube外,該源代碼在 GitHub上支持更多網站下載視訊,
但GitHub將YouTube-dl下架,卻激怒了開發者們,他們在GitHub上復制并上傳了大量代碼副本,以此對該下架行為表示抗議。目前在GitHub上搜索YouTube-dl,相關結果高達4108個。
后來,GitHub公司法律團隊不得不發出最新警告,稱如果繼續發布代碼副本,可能會對其進行封號處理,
請注意,在未遵循流程的情況下重新發布YouTube-dl代碼副本是違反GitHub平臺DMCA政策和服務條款的,如果您在明知違反服務條款的情況下,繼續向該存盤庫提交或發布相關內容,我們會將其洗掉,并可能中止對您帳戶的訪問權限,
雖然造成此次泄露事件的不知名人士并未對此事公開表態,但有人猜測稱可能是他對GitHub下架該專案的報復。
另外,在Friedman回應泄露事件的帖子下可以看到,不少網友對GitHub因DMCA協議而下架YouTube-dl表示不滿。
還有一位用戶表示,GitHub之所以這樣做,很可能是因為微軟是RIAA的成員,他說,DMCA 所要求的下架不是讓代碼著作權所有者本身下架,GitHub作為一家倡導開源的獨立公司,它不需要遵守RIAA的非法請求。
可以看出,網友們的不滿顯示是因為封禁一事與GitHub最初的開源初衷背道而馳,
GitHub開源精神惹爭議
2018年,微軟以75億美元的價格收購GitHub。新任 CEO Nat Friedman 曾表示:GitHub 將始終堅持開發者優先并獨立運營。
Resynth在部落格中也表示:微軟一再強調致力于開源,這一點我們從很多商業廣告中經常可以看到,它的目的是讓微軟出于開源發展的最前沿,
但現在來看,微軟似乎并沒有做到承諾的那樣,而且YouTube-dl也只是最近發生的一例而已,事實上,GitHub因將其源代碼保密的問題已經在業內廣受批評。
另外,Resynth也提醒稱,這次事件也不得不讓人們擔心 GitHub 源代碼的安全性。因為閉源應用程式執行的是“隱蔽式安全 (Security By Obscurity)”,即源代碼是隱藏的,目的是降低安全風險。
如果 GitHub 真的公開源代碼,很可能會損害其整體的安全性。