Radware/官方:GitHub Issues/PR 供應鏈攻擊活動——八十三項惡意項目、六十一個公開倉;兩宗確認 Actions 命令執行

Key takeaway

Radware 官方於二零二六年十月二十九日發布研究,指九月一日一場針對公開 GitHub 倉庫的協調式活動,以 Issues、Pull Requests 與留言藏匿命令注入,試圖在 GitHub Actions CI/CD 環境執行指令並外洩環境變數;核實惡意項目八十三項、波及六十一個倉庫,兩宗日誌證實命令替換已實際執行。來源真實性已驗證。

Radware/官方:GitHub Issues/PR 供應鏈攻擊活動——八十三項惡意項目、六十一個公開倉;兩宗確認 Actions 命令執行

Radware 官方於二零二六年十月二十九日發布研究,指九月一日一場針對公開 GitHub 倉庫的協調式活動,以 Issues、Pull Requests 與留言藏匿命令注入,試圖在 GitHub Actions CI/CD 環境執行指令並外洩環境變數;核實惡意項目八十三項、波及六十一個倉庫,兩宗日誌證實命令替換已實際執行。來源真實性已驗證。

Radware/官方:GitHub Issues/PR 供應鏈攻擊活動——八十三項惡意項目、六十一個公開倉;兩宗確認 Actions 命令執行

資安公司 Radware 研究員 Zvika Babo 與 Gabi Nakibly 於二零二六年十月二十九日公開報告《Inside a GitHub Supply Chain Attack Campaign》,指二零二六年九月一日出現一場高度集中的協調攻擊:攻擊者透過公開倉庫的 Issue、Pull Request 或留言投放惡意命令,利用未安全處理外部內容的 GitHub Actions 工作流程,嘗試在 CI/CD 環境執行指令,並把環境變數送往攻擊者控制的伺服器。The Register 同日以獨家訪問補強同一研究。本文已對照 Radware 官方原文與 The Register 報道核對關鍵數字與案例,來源真實性已驗證。

事件與早前已報道的盜用 GitHub 權杖大規模植入工作流(Gheist)、或以惡意 AGENTS.md 劫持編碼代理等手法不同:這次核心是「任何有 GitHub 帳戶的人」理論上都能開 Issue/PR,即可觸發脆弱自動化,無須先取得倉庫寫入權。對香港與亞洲企業而言,只要依賴開源依賴、自建 Actions 或託管 CI,都屬於直接風險面。

一、核心事件:八十三項惡意內容、六十一倉、兩波集中投放

技術細節

Radware 擴展調查(核實截至二零二六年十月十三日)列出以下規模:

  • 經核實含惡意載荷的 GitHub 項目:八十三項
  • 涉及不同公開倉庫:六十一個
  • 形態:Issues 五十九、Pull Requests 二十四
  • 載荷位置:標題 三十一、正文 十七、留言 三十五
  • 具名帳戶:七十四個(另有兩項作者顯示為 ghost)
  • 收集識別碼:八十三個(各對應獨立路徑)

時間線集中在二零二六年九月一日兩波:

  1. 第一波:協調世界時十一時二十六分五十一秒至十二時十分,約四十三分鐘內出現 七十七案
  2. 第二波:同日十八時十七分十九秒至十八時十九分二十九秒,約兩分鐘內再出現 六案

所有已核實載荷指向同一收集基礎設施:http://54.205.16.142:8443/c/(埠八四四三,但使用 HTTP 而非 HTTPS),以路徑中的唯一識別碼區分目標。

受影響倉庫涵蓋 AI 框架、資安工具、開發基建與主流開源項目。以二零二六年十月十六日收集、經四捨五入的 GitHub star 計,較受注目者包括 agno-agi/agno(約四點二七萬)、ToolJet/ToolJet(約四點一一萬)、google/langextract(約三點八九萬)、aquasecurity/trivy(約三點八四萬)、CopilotKit/CopilotKit(約三點八萬)、podman(約三點三萬),以及 QwenLM/qwen-code、mlflow、discord.js、cilium、brave/brave-browser、dotnet/maui、Homebrew/homebrew-cask、github/docs、apache/doris、PX4/PX4-Autopilot 等。

Radware 強調:確認惡意命令曾在 Actions 環境執行,並未證實攻擊者已取得倉庫寫入權、已改原始碼,或已造成下游套件被投毒;供應鏈全面失陷屬「潛在升級路徑」而非已核實後果。The Register 引述指團隊已向維護者披露,多數倉庫已關閉相關項目或完成修補,惟未能確認全部已修復。

二、技術原理深度解析

攻擊鏈可概括為六步:

  1. 投放:在 Issue/PR/留言放入含惡意命令的內容(部分藏於 HTML 註解,頁面渲染時不易察覺)。
  2. 觸發:倉庫若對 issues/pull_request 等事件配置 Actions,事件可在約一秒內自動啟動工作流程。
  3. 不安全插值:工作流程把攻擊者可控字串直接插入 run: 區塊的 shell 原始碼。
  4. 命令執行:Bash 解讀 $() 命令替換並執行內部指令。
  5. 蒐集:執行 env,再經 base64 與去換行處理。
  6. 外洩嘗試:以 curl 將編碼後資料 POST 至攻擊者伺服器。

關鍵不在「GitHub 自動執行所有 Issue 標題」,而在特定工作流程把外部文字變成可執行程式碼。即使 Issue/PR 從未合併、甚至數分鐘內被關閉,只要自動化已跑過,風險窗口已打開。

報告詳述兩宗執行證據:

  • PX4/PX4-Autopilot PR #28488:標題看似文件錯字修正,實則嵌入 $();工作流程把標題直接傳入 Bash 呼叫的 Python 檢查腳本。日誌出現 Bash「command substitution: ignored null byte」警告,隨後 Python 收到已被替換、開頭為 GIF89a 的二進位輸出,並因編碼錯誤中斷——顯示命令替換確已執行。
  • Snouzy/workout-cool Issue #251:Discord 通知工作流程以 ISSUE_TITLE="${{ github.event.issue.title }}" 直接插值;日誌同樣在賦值行出現命令替換警告,後續 Discord API 回報 JSON 無效。

帳戶層面亦見協調跡象:七十四個具名帳戶、同一日窄時間窗、同一基礎設施;部分帳戶先前有正當開發紀錄。Orange-OpenSource/hurl Issue #5254 中,帳戶持有人留言否認曾開該 Issue(「Am I hacked?」),翌日表示已改密碼並撤銷部分金鑰——強化「部分帳戶可能遭盜用」假設,惟 Radware 未聲稱已證明所有帳戶皆被入侵。

披露過程中,有維護者表示既有限制令 Actions 未執行,卻發現具敏感憑證的 AI 留言審閱代理也可能處理攻擊者內容,顯示代理式自動化同樣擴大攻擊面。

四、日常應用場景

1. 開發者與技術團隊

審計所有由 issues、pull_request、issue_comment 觸發、且把標題/正文/留言插入 run: 的工作流程。官方建議改以環境變數傳遞外部內容,再用 printf 等以「資料」而非「程式碼」方式讀取;避免 eval。對歷史日誌搜尋可疑 $()、異常對外連線與該收集伺服器指標。

2. 企業與隱私敏感行業

金融、醫療、政府供應商若以私有或公開 Actions 建置發布管線,應立即套用最小權限:通知類工作流程不應同時持有發布、雲端金鑰或倉庫寫入權。將「外部事件觸發」與「高權限部署工作」隔離。一旦出現執行證據,應盤點當下可用的環境變數與 secrets,輪換憑證,並檢查 GitHub 與雲端稽核紀錄。

3. 一般用戶

一般使用者未必直接寫 Actions,但仍依賴開源套件與瀏覽器/工具鏈。關注維護者安全通告、延遲升級至未審視的最新標籤,並對「突然出現的文件錯字 PR/怪 Issue」保持警覺,勿在個人 CI 複用高權限權杖。

4. 香港與亞洲市場視角

香港金融科技、初創與外包團隊大量使用 GitHub Actions 與開源元件;亞洲熱門項目(如 Qwen 相關倉、多家區域產品倉)亦出現在目標清單。本地企業應把「Issue/PR 內容=不可信輸入」納入安全基線,並與雲端身分、密鑰管理一併檢視。若團隊同時導入 AI 程式代理審 PR/留言,更須限制其憑證範圍,避免重演披露案例中的代理攻擊面。

五、專業評價與潛在考量

優勢(研究價值)

  • 把「看起來無害的協作動作」量化為可核對戰役:八十三/六十一、兩波時間窗、共享基礎設施。
  • 不只列載荷,還以工作流程原始碼與執行日誌證明命令替換真實發生。
  • 緩解建議具體可落地(環境變數傳遞、最小權限、事件與高權限作業分離)。

需要留意的地方

  • 研究未證實寫入權失竊或下游投毒;報道時不宜誇大為「六十一倉已被投毒」。
  • 戰役發生於九月一日,十月二十九日才公開完整報告;部分倉庫或已修復,但仍需自查歷史執行與憑證。
  • HTML 隱藏、多帳戶與可能的帳戶盜用,令偵測與歸因仍困難;防禦重心應放在工作流程堅韌度,而非指望「阻止攻擊者嘗試」。

結語

這場以 GitHub Issues/PR/留言為入口的 CI/CD 命令注入活動,把軟體供應鏈風險從「依賴套件」前推到「協作自動化邊界」。對香港企業而言,修補單一 CVE 不足夠——必須假設外部文字不可信,收緊 Actions 權限,並檢視 AI 代理是否過權讀取倉庫事件。若貴司需要把零信任存取、雲端管線與網路邊界一併加固,可參考 YSK Limited 的雲端遷移與網絡安全服務(https://ysk.hk/services/cloud-security)。


參考來源

  1. Radware(Zvika Babo & Gabi Nakibly),「Inside a GitHub Supply Chain Attack Campaign: Command Injection, Attempts to Exfiltrate CI/CD Data, and Evidence of Execution」,2026-10-29:https://www.radware.com/blog/inside-a-github-supply-chain-attack-campaign/
  2. The Register(Jessica Lyons),「Attackers turn GitHub issues into supply chain campaign against 61 public repos in less than an hour」,2026-10-29:https://www.theregister.com/2026/10/29/attackers-turn-github-issues-into-supply-chain-campaign-against-61-public-repos-in-less-than-an-hour/5306153
  3. 公開工件示例:PX4/PX4-Autopilot PR #28488;Snouzy/workout-cool Issue #251;Orange-OpenSource/hurl Issue #5254(帳戶持有人否認開單留言)

Related services & products