wfx-loot 是一波竊取憑證的攻擊活動。攻擊者利用遭入侵的 GitHub 帳號探測儲存庫;若帳號具有寫入權限,就可能植入用來竊取持續整合(CI)環境機密的程式。Aikido 統計有 4,837 個遭入侵帳號在 61,764 個儲存庫開啟探測用的合併請求;該公司公布的統計指出,至少 1,835 個儲存庫執行了惡意程式並發生憑證外傳。
4
9
攻擊何時發生?持續多久?
活動約於 2026 年 11 月 10 日 12:45 UTC 開始。一份報告將探測用合併請求的活動時間列至 11 月 11 日 15:00 UTC,約 26 小時 15 分鐘。
6
7 這是已觀察到的探測時段,不代表所有惡意程式活動或遭竊憑證的後續使用都已在當時停止。
幾個常見數字分別代表攻擊的不同階段:
- 4,837 個帳號:遭報告指出已被入侵的帳號數。
- 61,764 個儲存庫:收到探測用合併請求的儲存庫數,不代表已知每個儲存庫都執行了惡意程式。
- 至少 1,835 個儲存庫:Aikido 公布的惡意程式執行與憑證外傳統計。
9
部分同期報導引用較低的 1,806 個數字。
6
10 現有報導未說明兩者差異,因此應視為不同時間或口徑的統計,不宜合併。提供的報導也無法證實後續所稱「超過 66,000 個目標中約 1,970 起已確認公開案例」的說法。
攻擊者如何測試帳號權限
攻擊者從名為 wfx-docs 的分支,送出標題為 docs: dependency audit notes 的合併請求。這些請求是權限探測:用來確認遭竊帳號能否修改目標儲存庫。
3
4
9
若帳號有足夠權限,攻擊者便會在 CI 環境中植入竊取機密的程式。這波攻擊利用的是有效但遭竊的憑證,而不是 GitHub Actions 本身的漏洞。
4
9 OX Security 將惡意程式描述為一支約 1,500 行的單一 Shell 指令碼。
31
部分報導指出,攻擊者會移除惡意變更與工作流程執行紀錄,增加事後調查難度。
1
6 現有證據支持「探測權限、植入程式、清除痕跡」的大致攻擊模式,但不足以證明每種報導提及的部署方式或提交訊息都出現在每一次感染中。
惡意程式鎖定哪些機密?
已報導的目標包括 CI 工作可取得的憑證,例如 GitHub Actions 機密與雲端憑證;報導也提到攻擊者試圖取得 AI 服務權杖。
3
9 OX Security 列出的目標包含 AWS、Azure 與 Google Cloud 憑證。
31 另有報導指出,惡意程式可能搜尋 Runner 程序記憶體中的機密,但現有資料無法說明這種方法成功的頻率。
17
29
一份整理資料提到,攻擊者試圖透過修改 AWS 信任政策及新增 Azure 聯合憑證,延伸存取權限。
5 這些應視為已報導的攻擊手法,而非所有受影響儲存庫或雲端帳號都遭修改的證明。現有證據聚焦於憑證竊取,並未證明攻擊者竊取了原始碼或客戶資料庫。
9
15
如何解讀目前的調查線索
一份報導指出,在透過協作者或組織存取權限送出的 10,431 個探測合併請求中,Aikido 查核時有 92% 仍維持開啟。
10
19 這表示當時不少探測請求可能尚未被處理,但不能據此斷定儲存庫管理者或資安團隊完全沒有察覺;這個百分比也不適用於所有探測請求。
一份調查手冊另記錄,19 個帳號透過 Fly.io GitHub App 使用權杖送出 173 個探測合併請求。這項觀察本身並不代表 Fly.io 基礎設施遭入侵,也不能證明所有透過這些權杖觸及的儲存庫都執行了惡意程式。
37
防禦團隊可以先檢查什麼?
若組織可能受到影響,調查時要區分「遭探測」、「已植入程式」、「程式已執行」與「憑證已外傳」;這些是不同程度的發現,不能混為一談。
- 搜尋探測線索: 檢查有寫入權限的儲存庫,尋找標題為
docs: dependency audit notes 的合併請求,以及名為 wfx-docs 的分支。
9
- 檢視 CI 與稽核紀錄: 查核工作流程執行紀錄、提交紀錄、分支活動與可取得的雲端日誌。報導提到執行紀錄和日誌可能遭刪除,因此工作流程執行編號出現缺口可作為調查線索;但單憑缺號不足以證明已遭入侵。
1
24
- 撤銷可能受影響的存取權: 撤銷疑似遭竊的 GitHub 權杖,並檢查帳號、協作者與 GitHub App 的存取權限。
- 全面輪替可能外洩的機密: 若確認惡意程式曾執行,應將該工作流程可存取的機密與雲端角色都視為可能外洩,而不只輪替仍出現在日誌中的憑證。
3
9
- 檢查雲端持續存取設定: 調查 AWS 信任政策及 Azure 應用程式或聯合憑證是否出現未授權變更,也要留意其他未授權金鑰或存取設定。
5
- 先保全證據: 清理前保存仍可取得的稽核紀錄與日誌,並記錄哪些攻擊階段已有證據支持。