GitHub 被駭!不明人士冒充 CEO 外流機密程式碼

作者 | 發布日期 2020 年 11 月 10 日 16:30 | 分類 Big Data , 資訊安全 , 開放資料 line share follow us in feedly line share
GitHub 被駭!不明人士冒充 CEO 外流機密程式碼


YouTube-dl 事件剛過去,GitHub 又登上 Hacker News 榜首。原因是程式碼全遭外流!

從開發者 Resynth 的部落格文了解,一個向 GitHub 官方 DMCA 資料庫提交的可疑 Commit,不明身分人員利用 GitHub 應用程式的 bug 假冒 GitHub CEO Nat Friedman 上傳機密程式碼。

▲ 洩露檔案已全部移除。

GitHub 想必大家都非常熟悉,是大型程式碼儲存庫,主要為企業和開發人員提供托管專案和服務程式碼。蘋果、亞馬遜、Google、Facebook 及其他許多大型科技公司都是主要用戶。同時 GitHub 被托管超過 1 億個程式庫,為 4 千萬開發人員提供資源支援。

因此洩露事件一出便迅速衝上 Hacker News 熱搜,不少開發者表示為 GitHub 平台的安全性擔憂。

Friedman 第一時間解釋,表示 GitHub 沒有被駭客入侵,洩露的是部分 GitHub Enterprise Server 程式碼。兩者雖然共用大量程式碼,但 GitHub 主要是由 Ruby 編寫,還是有很大差別。

事件起因是幾個月前,開發人員無意間將企業伺服器程式碼的未脫敏/混淆的 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,可在記憶體程式庫提交,而不是在 Fork。

因此,假冒者從 https://github.com/github/dmca 開始,將 tree/$hash 加到尾端,其中 $hash 是攻擊者自己的 fork 提交雜湊值,故假冒者得以假冒 Friedman 使用一個 URL 在 GitHub 提交自己的機密程式碼。

除了程式碼安全性擔憂,也再度引起開發者對 GitHub 開源態度的關注。長久以來,GitHub 一直因未公開程式碼飽受批評,恰好前幾日,GitHub 再因封殺下載影片神器 YouTube-dl 陷入輿論風波。

此次洩露事件很可能是不知名開發者對封殺 YouTube-dl 的報復。

或許與下架 YouTube-dl 有關

10 月美國唱片業協會(RIAA)提出要求,故 GitHub 禁止 7.5 萬顆星的熱門開源項目 YouTube-dl。

當時 RIAA 的理由是,YouTube-dl 違反 DMCA 反規避條款:

此程式碼的明確目的是:1. 規避 YouTube 等授權串流媒體服務使用的技術保護措施;2. 未經授權複製和傳播會員公司擁有的音樂影片和音訊。3. 除 YouTube 外,支援更多影音網站下載影片。

但 GitHub 下架 YouTube-dl 激怒了開發者,複製並上傳大量程式碼副本到 GitHub,對下架行為表示抗議。目前去 GitHub 搜尋 YouTube-dl,相關結果高達 4,108 項。

後來 GitHub 法律團隊不得不警告,如果繼續發表程式碼副本,可能會封號處理。

請注意,未遵循流程的情況下發表 YouTube-dl 程式碼副本違反 GitHub 平台 DMCA 政策和服務條款。如果您在明知違反服務條款的情況下,繼續向程式庫提交或發表相關內容,我們會移除,並可能中止帳號的存取權。

雖然造成洩露事件的不知名人士並未表態,但有人猜測稱可能是對 GitHub下架 YouTube-dl 的報復。

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 真的公開程式碼,很可能會損害整體安全性。

(本文由 雷鋒網 授權轉載;首圖來源:GitHub

延伸閱讀: