新聞

GitHub強化靜態應用程式安全測試(SAST)工具CodeQL對GitHub Actions的安全分析,CodeQL 2.26.4現在可檢查可重複使用的工作流程是否引用可能變動的版本,也改善工作流程事件資料的判斷方式,避免事件未提供相關欄位時,欄位檢查仍被當成有效防護。

GitHub Actions可讓一套工作流程呼叫其他工作流程,開發團隊因此能共用建置、測試與部署設定。問題在於,若引用時直接指定main等分支或內容仍可修改的標籤,上游工作流程日後遭到變更,下次執行就可能取得不同程式碼,增加軟體供應鏈遭竄改的風險。

CodeQL原本已能檢查GitHub Actions引用的Action是否固定版本,2.26.4把檢查範圍擴大到可重複使用的工作流程。當設定引用分支或可變標籤,而不是固定到特定Git提交版本時,CodeQL便能提出警示。開發者可改用完整的Git提交SHA值指定版本,確保後續執行取得相同內容。

新版還修正工作流程安全條件的判斷,GitHub Actions會依觸發來源提供不同事件資料,像是拉取請求與議題事件包含的欄位並不相同。過去工作流程即使檢查一個該事件根本不會提供的使用者欄位,CodeQL仍可能把條件視為有效防護。

2.26.4會先確認觸發事件確實包含對應欄位,再判定安全條件成立,像是由議題事件啟動的工作流程,如果使用只有拉取請求事件才會提供的使用者資訊進行限制,CodeQL不再將其當成有效防護,因此部分程式碼掃描可能出現過去未顯示的安全警示。

除了GitHub Actions,CodeQL 2.26.4也加入Go 1.27支援,並提高Rust資料流警示位置的準確度。Java與Kotlin的分析則增加Spring R2DBC的SQL注入檢查,Python也擴充串列操作中的不受信任資料追蹤。GitHub.com的程式碼掃描服務會自動採用新版CodeQL,相關功能之後也會納入GitHub Enterprise Server。