AWS CodeBuild 中的記憶體傾印問題
佈告欄 ID:AWS-2025-016
範圍:AWS
內容類型:重要
發布日期:2025 年 7 月 25 日晚上 6:00 (太平洋夏令時間)
描述
AWS CodeBuild 是全受管的隨需持續整合服務,可編譯來源碼、執行測試,並產生可立即部署的軟體套件。
資安研究人員回報了一個 CodeBuild 問題,在缺乏足夠的存放庫控制和憑證範圍限制的情況下,此問題可能被利用來進行未經授權的程式碼修改。研究人員示範,攻擊者可提交一筆拉取請求 (PR),一旦此請求經由自動 CodeBuild 建置流程執行,攻擊者就能從 CodeBuild 建置環境中透過記憶體傾印的方式,竊取原始碼存放庫 (如 GitHub、BitBucket 或 GitLab) 的存取權杖。如果存取權杖具備寫入權限,攻擊者就能將惡意程式碼提交至存放庫中。CodeBuild 的所有區域都存在此問題。
在我們的調查過程中,發現有攻擊者利用此技術,竊取了 AWS Toolkit for Visual Studio Code 及適用於 .NET 的 AWS SDK 這兩個存放庫的原始碼存取權杖。我們已為此問題指派編號 CVE-2025-8217,更多資訊請參閱 AWS 安全佈告欄 AWS-2025-015。
CodeBuild 需要原始碼存放庫的憑證,以存取存放庫內容、建立用於自動化建置的 Webhook,並代表您執行建置。若 PR 提交者取得了 CodeBuild 的存放庫憑證,他們獲得的權限就可能超出其正常的存取層級。這些憑證所能賦予的權限取決於客戶的設定,可能包含提交程式碼至存放庫,或建立 Webhook 等較高權限。建立 Webhook 是 CodeBuild 與原始碼存放庫整合並設定自動化建置的必要步驟。
為判斷此問題是否曾遭不受信任的貢獻者利用,我們建議您檢閱 git 日誌 (如 GitHub 日摯),並尋找授予 CodeBuild 的憑證是否有任何異常活動。
若有更多資訊,我們將會更新此佈告欄。
解決方案
CodeBuild 已在使用非特權模式的容器建置中,加入了額外的記憶體傾印防護機制。然而,由於建置作業會執行貢獻者提交的程式碼,因此這些程式碼也能存取建置環境中的所有資源。因此,我們強烈建議客戶切勿對來自不受信任的存放庫貢獻者所提交的 PR 使用自動化建置。若公開存放庫希望繼續支援由不受信任的貢獻者觸發自動化建置,我們建議在 CodeBuild 中使用自我託管的 GitHub Actions 執行式功能,因為此功能不受此問題影響。
若要停用來自不受信任貢獻者的 PR 自動化建置,請採取下列任一方法:
- 在 CodeBuild 主控台中,取消勾選「每當程式碼變更推送到此存放庫時重新建置」以停用 Webhook 建置,或
- 設定 Webhook 事件篩選條件,不允許來自提取請求事件的自動化建置,或
- 設定 Webhook 執行者篩選條件,僅允許來自受信任使用者的提取請求建置
若客戶對不受信任貢獻者的 PR 使用自動建置功能,且提供給 CodeBuild 環境的憑證或存取權杖具有寫入權限,我們建議您輪換這些憑證。一般而言,我們建議您檢閱寫入權限,並在非絕對必要的情況下撤銷該權限。
參考資料
致謝
我們感謝中國科學院資訊工程研究所的研究人員,透過協同漏洞揭露程序,與我們合作處理此問題。
如有任何安全問題或疑慮,請寄電子郵件至 aws-security@amazon.com。