跳到主要內容

CircleCI 安全事件

·5 分鐘閱讀
conda-forge/core
conda-forge 核心團隊

在 2023 年 1 月初,CircleCI 通知我們他們發生了一起重大的安全漏洞事件,第三方未經授權存取了儲存在該服務中的所有環境機密。對於 conda-forge 而言,這些機密是 API 權杖,用於將建置的套件上傳到我們在 anaconda.org 上的暫存區,以及我們為每個 feedstock 生成的唯一權杖。feedstock 權杖在我們的成品暫存流程中用作一部分,以確保只有給定 feedstock 的維護者才能上傳由該 feedstock 建置的套件。在 1 月下旬,CircleCI 通知我們,他們的安全漏洞事件始於 2022 年 12 月 19 日,大部分機密在幾天後以純文字形式從他們的伺服器中洩露。擁有這些機密的惡意第三方可能會在 conda-forge 上傳輸送鏈攻擊中植入任何套件的受損版本。

我們已製作一份 所有可能受損成品的清單

如果您在非常敏感的環境中使用 conda-forge (我們不建議這樣做!),請從您的系統中移除這些成品。

截至目前,我們尚不知悉 conda-forge 中有任何受損的成品。

主要 conda-forge 頻道的 API 權杖從未洩露,據我們所知仍然安全。

我們的回應

我們採取了以下步驟來回應此事件。

  • 我們立即開始輪換我們所有 feedstock 權杖和暫存區上傳權杖,作為預防措施。這次權杖輪換遇到了一些錯誤,但已於 2023 年 1 月 13 日完成。
  • 我們製作了一份在 2022 年 12 月 19 日至 2023 年 1 月 13 日期間上傳的所有套件的清單。此資料可以 JSON 檔案 格式下載。
  • 我們檢查了在此期間建置的所有成品,以尋找 CicleCI 列出的惡意檔案。我們在我們的成品中沒有找到任何這些檔案。
  • 如下詳述,我們已開始重新調整我們的 feedstock 權杖系統,使其更加穩健,並在應對此類事件時提供更大的彈性。
  • 我們已開始系統性地使舊權杖失效、停用舊機器人,並最小化我們目前權杖的權限,以進一步增強 conda-forge 的安全性。

輪換我們所有的權杖是作為預防措施。不幸的是,在這次權杖輪換期間,我們的一個機器人遇到了一個錯誤,導致我們失去了絕大部分 feedstock 的權杖。這種情況導致了長達約五天的長時間停機,並在 2023 年 1 月 13 日全面權杖輪換完成時得到解決。

我們學到了什麼?

我們從我們的 feedstock 權杖系統和 CI 服務整合的一般維護中學到了一些東西。我們可能應該早就知道這些,但我們現在才意識到。

  • 我們在多個 CI 服務中使用了相同的 feedstock 權杖。這限制了我們立即使與單一 CI 服務相關聯的權杖失效的能力,並且如果任何單一服務發生事件,就會暴露所有服務。
  • 我們的權杖系統僅允許每個 feedstock 有一個有效的權杖。這種限制意味著我們無法從部分失敗的權杖重置/輪換中恢復,並且在重置/輪換過程中容易受到可能導致套件上傳失敗的競爭條件影響。
  • 我們需要更積極地清理已棄用/移除的 CI 服務。在 conda-forge 中使用 CircleCI 已被棄用很長一段時間。如果我們花時間並有遠見在 CircleCI 被棄用時從中移除我們所有的機密,我們本可以完全避免這次安全事件。

我們已開始重新調整我們的 feedstock 權杖系統,以解決上述已識別的問題,並讓我們在應對安全事件時擁有更大的彈性。我們也已開始停用多個舊 CI 服務的流程。這些變更需要時間來實施。您可以關注我們各個公開問題追蹤器上的進度。

結語與您可以做什麼?

我們,conda-forge 核心開發團隊,要感謝大家在我們回應上述各種安全事件和錯誤時的耐心和支持。毋庸置疑,conda-forge 基礎架構的公開性質帶有風險。另一方面,由於是公開的,任何人都可以查看和驗證我們的成品建置。conda-forge 的安全性在於降低風險,我們將繼續盡力做到最好。

再次提醒,我們不建議您在具有敏感資訊的環境中使用 conda-forgeconda-forge 的軟體是由我們的使用者建置的,核心開發團隊無法驗證或保證此軟體不是惡意的或未被竄改。

我們對抗 conda-forge 中安全事件的最佳防禦就是您!我們的 feedstock 維護者最能注意到事件和問題。如果您發現任何問題,請負責任地向我們報告,電子郵件地址為 [email protected]