Travis CI 漏洞致數千個開源專案機密洩露

夢共裡醉發表於2021-11-08
近日,研究人員 Felix Lange 爆出 Travis CI 存在嚴重安全漏洞,所有公共開源儲存庫的安全環境變數(簽名祕鑰、訪問憑據和所有公共開源專案的 API tokens 等)都包含到 pull request 構建中,如果這些環境變數被竊取,那麼這一漏洞將導致數千個開源專案的核心被洩露。

Travis CI 是一個開源的持續整合構建專案,別具一格地採用了  yaml 格式,累計為超過 90 萬個開源專案和 60 萬使用者提供服務。因為它能與 GitHub 和 Bitbucket 無縫整合,所以目前大多數的 GitHub 專案都已移入到 Travis CI 的構建佇列中。
Travis CI 漏洞致數千個開源專案機密洩露Travis CI 漏洞致數千個開源專案機密洩露

如下圖所言,當使用者在執行構建時,Travis CI 會將  GitHub 儲存庫克隆到一個全新的虛擬環境中,並執行一系列的任務來構建和測試程式碼。如果其中一個或多個任務失敗,則意味著構建中斷,如果任務全部成功,則意味著構建通過,Travis CI 可以將使用者的程式碼部署到  web 伺服器或應用程式主機上。
Travis CI 漏洞致數千個開源專案機密洩露Travis CI 漏洞致數千個開源專案機密洩露
在此之前,Travis CI 的文件始終提示使用者:" 加密的環境變數無法從分叉中提取請求,因為存在將此類資訊暴露給未知程式碼的安全風險 "。然而這個漏洞( CVE-2021-41077)卻出現在了 Travis CI 的啟用過程中,並且嚴重影響了 9 月 3 日至 10 日之間建立的某些特定構建。
在 Travis CI 的啟用過程中,開發者應該新增一個 " .travis.yml" 檔案到開源專案儲存庫中,這個檔案會告訴 Travis CI 應該做什麼,不應該做什麼,甚至可能包含機密內容,另一個把核心加密的東西是 " Travis' web UI"。理想狀況下, Travis 應該阻止公眾訪問任何祕密環境變數,以太坊加密貨幣專案負責人 P é ter Szil á gyi 稱," 安全的環境變數是在  Travis ’ s web UI 上配置的(由 Travis 獨家擁有),然後這些變數會被新增到構建執行的環境中,但僅適用於受信任的程式碼,即已合併的程式碼。外部程式碼 (  PRs ) 不該插入  env 變數,因為維護者無法控制外部人員提交的程式碼,但是 Travis 卻將金鑰注入了不受信任的構建中 "。

在這個漏洞出現 8 天后,Lange 將問題同步給了 Travis 的公司,並建議所有依賴 Travis CI 的專案更換他們的核心 " secret" 。

Travis CI 的 Montana Mendy 則在安全公告中說道," 根據最新報告,從另一個庫分叉出來的公共儲存庫可以提交  pull request(如在  GitHubBitBucketAssembla 中),在構建的過程中列印一些文件,即使在未授權情況下依然可以訪問原始公共儲存庫,在這種情況下,專案的核心在 Travis CI 資料庫中仍然處於加密狀態。"

9 月 10 日,Travis CI 默默地修補了這個漏洞。

9 月 13 日,Travis CI 釋出了一篇簡短的安全公告,如下圖所示。
Travis CI 漏洞致數千個開源專案機密洩露Travis CI 漏洞致數千個開源專案機密洩露

在這封公告中,沒有對此次漏洞的分析,沒有安全報告,也沒有警告使用者他們的機密內容可能已經被盜。這種 " 草率敷衍 " 的態度引起了社群的不滿,Szil á gyi 與社群的幾位成員一起抨擊了該公告,網路開發商 Jake Jarvis 稱這是一封 " 令人尷尬的‘安全公告’。"
但是 Travis CI 認為 " 我們已經完成了一系列的安全補丁來解決這件事情,更新機密內容是所有使用者都應該執行的操作 "。

Travis CI 之所以引起社群公憤,在於它並沒有公開透明地將此次的漏洞詳情公之於眾,並將部分責任理所應當地推卸給了專案的開發者,而那封 " 敷衍意味 " 極強的安全公告則更是讓本就岌岌可危的關係雪上加霜。但也有人認為,Travis 雖然處理事情的方式欠佳,但好在完成了一系列的安全補丁,將損失降到了最低,所以也並不算有重大過錯。

最後,你支援哪一方的觀點,歡迎在下方投票。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31524109/viewspace-2840999/,如需轉載,請註明出處,否則將追究法律責任。

相關文章