GitHub Actions 的 pull_request_target 事件,執行時可用基礎儲存庫的權限與密鑰。若工作流程執行來自 fork 的不受信任程式碼,就可能洩露密鑰。GitHub 從 12 月 2 日起預設封鎖此事件,除非管理員明確允許。
這項封鎖是透過工作流程執行保護規則來實施。GitHub 先安排兩次試運行,分別在 2026 年 11 月 9 日與 11 月 16 日,各進行兩小時的評估模式,只會顯示哪些工作流程會被擋下,不會真的擋。到了 12 月 2 日才會正式永久封鎖,之後被擋下的執行會在頁面上留下錯誤註解,告知管理員原因。
這項改變只影響 GitHub Free、Team 與 Enterprise Cloud 的公開儲存庫,私有儲存庫不受影響。不少開源專案的 CI/CD 流程會用 pull_request_target 處理外部貢獻者的 pull request,一旦被封鎖卻沒注意到,自動化流程可能就會悄悄停擺。
這則消息比較偏開源專案維運與資安面,但背後的道理很值得學程式的人記住:接受別人送進來的程式碼時,不能無條件給它完整的權限,這跟現實生活中「不隨便把鑰匙交給陌生人」是一樣的概念,也是寫自動化流程時要養成的安全習慣。
開發工具資安開源