GitHub Actions 被曝存在嚴重安全漏洞,Google Project Zero 披露詳情

GitHub Actions 被曝存在嚴重安全漏洞,Google Project Zero 披露詳情

對開發者來講,在 GitHub 上建立了一個項目準備運行,並不表明這個項目已經真正完成了,還有不少部署測試工做須要手動操做。segmentfault

GitHub 的 Action 功能能夠簡化這一步,對項目的代碼進行自動化的測試,如今已經有不少人使用它來持續集成/連續部署(CI/CD),但最近 Actions 中被發現隱藏了一個安全漏洞。安全

Google Project Zero 的研究人員發現,GitHub Action 的一個設計缺陷可使黑客可以寫入開發者的存儲庫,甚至能夠顯示加密的機密文件。工具

GitHub Actions 中存在嚴重安全漏洞

Google Project Zero 研究員 Felix Wilhelm 發現,GitHub Actions 工做流命令功能充當 Action Runner 和執行的動做之間的通訊渠道。這意味着工做流命令經過解析全部已執行操做的 STDOUT 來工做,STDOUT 攜帶的那些命令之一是「set-env」。測試

Set-env 能夠將任意環境變量定義爲工做流的一部分,極易受到注入攻擊。當運行程序解析每一個 STDOUT 行以查找工做流命令時,每一個「在執行過程當中打印不受信任的內容的 Github Action 都將受到攻擊」。加密

Felix Wilhelm 研究了一些受歡迎的 Github 存儲庫,他發現幾乎全部具備某些複雜 GitHub Actions 的項目均可能受到攻擊,即便 Github 自身的行爲也容易受到此問題的影響。spa

Google Project Zero 早已向 GitHub 通報此漏洞

42701605152793_.pic_hd.jpg

據瞭解,Google Project Zero 在爲 GitHub 提供的 90 天修復期的基礎上還將這個時間延長了 14 天,在 GitHub 再次提出延長寬限期後,Google Project Zero 拒絕了這個請求,並披露了漏洞的詳細狀況。設計

Google Project Zero 是谷歌於 2014 年宣佈的互聯網安全項目,整個團隊由谷歌內部頂尖的安全工程師組成,發現、跟蹤和修復還沒有被公開的軟件安全漏洞。blog

Google Project Zero 所處理的安全漏洞一般都屬於「零日漏洞」,此類安全漏洞一般都還沒有被公開,用戶不能在第一時間對其進行修復。爲了阻止黑客利用零日漏洞發起攻擊,谷歌推出了 Project Zero 計劃。開發

據瞭解,Google Project Zero 發現漏洞後會首先與受影響的機構聯繫,給出 90 天的修復期,漏洞修復完成後纔會公開相關信息。今年 7 月,Project Zero 團隊已向 GitHub 發出了漏洞警告。部署

GitHub Action 中隱藏着更多麻煩

Felix Wilhelm 坦言,隱藏在GitHub Action工做流命令中可能會遇到更多麻煩,他認可他沒有考慮其餘工做區命令的安全影響。

Felix Wilhelm 認爲,「實現工做流命令的方式根本上是不安全的。廢除 v1命令語法並使用 allowlist 增強 set-env 可能不利於直接的 RCE [遠程代碼執行]向量。然而,即便可以覆蓋後面步驟使用的‘正常’環境變量,也可能足以利用最複雜的操做。」

固然,也有一勞永逸解決這個問題的方法。Felix Wilhelm 建議將工做流命令移動到某個不受約束的通道(例如一個新的文件描述符),以免解析 STDOUT。但這樣作也存在一個小問題,它會破壞許多現有的代碼操做。

GitHub 的開發人員正在從 Runner 中刪除兩個最易受攻擊的命令。將來 Runner 將發佈一個更新,該更新將會禁用 set-env 和 add-path 工做流命令。

同時,GitHub 建議開發者「應該升級到 @actions/core v1.2.6 或更高版本,並用新的 Environment File Syntax 替換工做流中的 set-env 或 add-path 命令的任何實例。」

若是繼續使用舊命令或舊工具包版本的工做流和操做,那麼 GitHub 會發出警告,若是繼續嘗試使用舊的不安全命令,工做流執行過程將會出錯。

就像安全問題常常發生的那樣,是時候開始修補和清理代碼了。開發人員的安全工做永遠不會完成…...

segmentfault 公衆號

相關文章
相關標籤/搜索