wfx-loot 是一場竊取憑證的攻擊行動。攻擊者利用遭盜用的 GitHub 帳戶探測程式庫;如果帳戶有寫入權限,就嘗試把竊密程式放進持續整合(CI)環境。Aikido 表示,涉及 4,837 個遭入侵帳戶,探測範圍達 61,764 個程式庫;其公布的統計指,至少 1,835 個程式庫曾執行程式並外傳憑證。
4
9
攻擊何時發生?
活動約於 2026 年 11 月 10 日 12:45 UTC 開始。有報道指,探測用的 Pull Request(PR)在 11 月 11 日 15:00 UTC 左右停止出現,觀察到的探測時段約為 26 小時 15 分鐘。
6
7 這是已觀察到的探測窗口,並不代表所有惡意程式活動,或之後使用被盜憑證的行為,都已在該時刻停止。
幾個常見數字,指的是攻擊不同階段:
- 4,837 個帳戶:報道指遭入侵的 GitHub 帳戶數目。
- 61,764 個程式庫:收到探測 PR 的程式庫數目,不等於已確認執行惡意程式的數目。
- 至少 1,835 個程式庫:Aikido 公布曾執行程式並外洩憑證的數目。
9
部分同期報道列出的數字較低,為 1,806 個。
6
10 現有報道未交代兩個統計的差異,宜視為不同時間或口徑下公布的數字,而不是合併計算。至於後來流傳的「超過 66,000 個目標、約 1,970 宗已確認公開個案」,現有材料不足以支持,不能當作已核實數字。
一個看似普通的 PR,先測出有沒有寫入權限
攻擊者開出的 PR 標題是 docs: dependency audit notes,分支名稱則是 wfx-docs。這些 PR 的作用是探測:遭盜用的帳戶能否修改目標程式庫。
3
4
9
若帳戶有足夠權限,攻擊者便會在 CI 環境植入竊取憑證的程式。這次行動依賴有效但遭盜用的憑證,並非利用 GitHub Actions 本身的漏洞。
4
9 OX Security 形容相關惡意程式是一個約有 1,500 行的 Shell script。
31
部分報道指,攻擊者會移除惡意改動和工作流程紀錄,增加追查難度。
1
6 不過,現有證據支持的是整體的「探測、植入、清理」模式,不能據此認定每宗感染都使用相同部署方式或提交訊息。
竊密程式想取得甚麼?
已報道的目標包括 CI 工作可存取的憑證,例如 GitHub Actions secrets 和雲端憑證;亦有報道指程式會嘗試取得 AI 服務 token。
3
9 OX Security 的分析列出 AWS、Azure 和 Google Cloud 憑證等目標。
31 另有報道指惡意程式可能搜尋 runner 程序記憶體中的機密,但現有材料未能說明這種做法成功的頻率。
17
29
有資料摘要提到,攻擊者可能透過修改 AWS 信任政策及加入 Azure 聯邦憑證來延續存取權。
5 這些屬於報道提及的行為,不代表每個受影響程式庫或雲端帳戶都遭修改。現有證據主要指向憑證竊取,未能證明攻擊者曾竊取原始碼或客戶資料庫。
9
15
這些數字和線索代表甚麼?
一份報道指,在透過協作者或組織存取權限提交的 10,431 個探測 PR 中,Aikido 查核時有 92% 仍未關閉。
10
19 這反映不少探測 PR 當時仍未獲處理,但不等於可以確定程式庫擁有人或保安團隊完全沒有察覺;這個百分比也只適用於該批 PR,並非全部探測 PR。
一份調查指引亦記錄到,19 個帳戶透過 Fly.io GitHub App 的 token 提交了 173 個探測 PR。
37 單憑這項觀察,不能推斷 Fly.io 基建遭入侵,也不能證明透過這些 token 接觸到的每個程式庫都執行了竊密程式。
懷疑受影響,可以先做甚麼?
調查時要分清楚 「曾被探測」、「曾植入程式」、「程式曾執行」和「憑證曾外洩」。這幾種情況並不相同。
- 搜尋探測線索: 檢查你有權寫入的程式庫,留意標題為
docs: dependency audit notes 的 PR,以及名為 wfx-docs 的分支。
9
- 核對 CI 和審計紀錄: 檢查工作流程執行紀錄、commit、分支活動和可用的雲端日誌。工作流程執行編號出現缺口,或可作為調查線索;但單有缺口不足以證明遭入侵,尤其有報道指執行紀錄可能被刪除。
1
24
- 撤銷可疑存取: 撤銷懷疑已外洩的 GitHub token,並檢查帳戶、協作者及 GitHub App 的存取權限。
- 全面輪替可能外洩的密鑰: 若確認竊密程式曾執行,應把該工作流程可存取的 secrets 和雲端角色都視為可能已外洩;不要只輪替仍在日誌中看得到的憑證。
3
9
- 檢查雲端持久存取: 調查是否有未經授權的 AWS 信任政策修改、Azure 應用程式變更或聯邦憑證新增,並留意其他不明存取權限變動。
5
- 先保留證據: 清理前保存仍存在的審計紀錄和日誌,並記錄哪些攻擊階段已獲證據支持。