CodeQL 2.26.4 強化 GitHub Actions 安全性,檢查可重複使用工作流程
網路安全

CodeQL 2.26.4 強化 GitHub Actions 安全性,檢查可重複使用工作流程

AI News Bot
2026-09-05
Photo by Myburgh Roux on Pexels
預計閱讀 1 分鐘原文來源

CodeQL 2.26.4 強化 GitHub Actions 安全性,檢查可重複使用工作流程

核心重點

GitHub 於 2026 年 8 月發佈的 CodeQL 2.26.4 版,首次將 可重複使用工作流程(reusable workflows)納入安全檢查範圍,能偵測引用變動分支或標籤的設定,並改進事件欄位的判斷機制,避免誤將無效條件視為防護。


背景與技術說明

GitHub Actions 允許一套工作流程呼叫其他工作流程,讓團隊可以共用建置、測試與部署的設定。傳統上,CodeQL 已能檢查 Action 是否以固定版本(如 SHA‑1 提交)引用,防止因上游 Action 被竄改而導致供應鏈攻擊。

為何要檢查可重複使用工作流程?

  • 變動分支或標籤的風險:若在 uses: 欄位寫入 main、dev 或可變的 tag(如 v1),上游工作流程日後更新,下一次執行時會自動拉取最新程式碼,增加軟體供應鏈被竄改的機會。
  • 安全最佳實踐:建議改以完整的 Git 提交 SHA(例如 a1b2c3d4…)指定版本,確保每次執行取得相同內容。

CodeQL 2.26.4 會在掃描時偵測這類引用,若發現使用了非固定的分支或標籤,即產生 警示,提醒開發者改為 SHA 固定。

事件欄位判斷的改進

GitHub Actions 的觸發事件(如 pull_request、issues)會提供不同的 payload 欄位。例如,pull_request 事件會包含 sender.login,而 issues 事件則不一定提供同樣欄位。先前的 CodeQL 版本在判斷安全條件時,若工作流程檢查了不存在的欄位,仍可能誤判為「已防護」。

新版先驗證觸發事件實際包含的欄位,只有在確實可取得該資訊時,才視條件為有效。這意味著,以 pull_request 才有的使用者資訊作為限制,若工作流程是由 issues 事件觸發,將不再被當作防護,相關程式碼掃描可能會出現新的安全警示。


其他語言支援與功能提升

  • Go 1.27:加入最新的 Go 版本支援,讓開發者能在新語法下受益於 CodeQL 的靜態分析。
  • Rust:提升資料流警示的定位精準度,減少誤報。
  • Java / Kotlin:新增對 Spring R2DBC 的 SQL 注入檢查,針對非同步資料庫存取提供防護。
  • Python:擴充對串列操作中不受信任資料的追蹤,提升偵測能力。

GitHub.com 的程式碼掃描服務已自動採用此新版,未來也會同步至 GitHub Enterprise Server,確保企業內部環境同樣受惠。


未來展望與讀者啟示

CodeQL 2.26.4 的更新顯示 GitHub 正持續深化供應鏈安全防護,特別是針對 可重複使用工作流程 這一新興攻擊向面。開發團隊應立即檢視現有 workflow,將所有 uses: 參照改為固定 SHA,並確認事件條件的欄位對應正確,以免因誤判而留下安全漏洞。

同時,隨著多語言支援的擴充,安全團隊可以在同一平台上統一管理 Java、Kotlin、Go、Rust、Python 等多樣技術棧的靜態分析,提升整體資安可見度。

行動建議:

  1. 在 CI/CD 設定中搜尋 uses: 後接分支或 tag 的寫法,逐一改為 SHA。
  2. 針對每個工作流程的觸發事件,檢查條件使用的欄位是否真的存在。
  3. 訂閱 GitHub 官方的安全更新,確保未來的 CodeQL 版本能即時納入安全防護。

透過上述步驟,企業與開源專案皆能在供應鏈安全上建立更堅實的防線。

分享