部落格 發布於 AIA: 2026年4月18日

ClawHub 假 Google 技能 `google-qx4`:惡意安裝指示如何騙使用者自己把惡意程式裝進電腦

Snyk 揭露,ClawHub 上出現假冒 Google 整合的惡意技能 <code>google-qx4</code> 和 <code>NET_NiNjA</code>。它們沒有把惡意程式直接放在 repo 裡,而是在 <code>SKILL.md</code> 裡捏造一個叫做 <code>openclaw-core</code> 的前置需求,誘導使用者去 GitHub 或 Rentry 下載站外安裝檔,甚至直接把命令貼進終端機執行。這個案例說明,skill 安全不能只看程式碼;連寫在說明文件裡的安裝步驟、外部下載連結,以及 agent 代為轉述的操作建議,都要一起當成 AI 供應鏈風險來檢查。

Agentic AIAI Supply ChainMalwareRegistry Security
6 項對應的 AIDEFEND 防禦手法

威脅分析

  • 真正有殺傷力的,不是 repo 裡那幾個檔案,而是 SKILL.md 裡那段假的安裝說明。 對 agent 來說,SKILL.md 不是普通文件,而是它拿來理解技能用途和操作方式的指示來源。攻擊者就是利用這一點,把惡意步驟包裝成看起來合理的前置需求。
  • 攻擊成功的關鍵,是把最後的執行動作交給使用者自己完成。 技能宣稱必須另外安裝一個根本不存在的 openclaw-core。一旦使用者照著 agent 的建議去貼命令、跑安裝檔,惡意程式就會在 agent sandbox 之外落地。
  • 整條投遞鏈刻意拆成多段,方便躲避掃描與下架。 Snyk 看到 Windows 使用者被導去 GitHub 上受密碼保護的 ZIP;macOS 和 Linux 使用者則被導去 Rentry 貼文頁。再往下,這些頁面會解碼出下一段下載並執行的指令,把載荷從攻擊者控制的網域拉下來。
  • 這起事件更像是 agent 放大的社交工程,不只是單純的提示詞注入攻擊(prompt injection)。 攻擊者利用 agent 一貫看起來合理、樂於幫忙的口氣,讓本來很可疑的手動安裝步驟,看起來像正常設定流程。真正被說服的,不是模型,而是坐在電腦前的使用者。
  • 技能倉庫治理能降低風險,但不能只做一次。 ClawHub 雖然加上帳號年齡和檢舉門檻等控制,Snyk 仍指出,相似 clone 常常幾個小時內又會重新上架。所以防禦不能只靠單次下架,還要能持續重掃和快速停用。

適用的 6 項 AIDEFEND 防禦手法

AID-H-031.001
Skill Metadata & Manifest Honesty Validation
極高
這起事件靠的是一個看起來很正常的 Google 整合故事,再加上一個假的 openclaw-core 前置需求。技能中繼資料與宣告內容的誠實性驗證,正是用來抓品牌冒用、前置需求造假,以及其他刻意操弄使用者信任的包裝。
AID-H-031.002
Instruction-Layer Semantic Security Analysis
極高
最關鍵的惡意內容寫在說明文字裡,不在程式碼裡。所以准入掃描不能只看 repo 檔案,還要讀懂 SKILL.md 的語意,抓出那些要求 agent 或使用者去下載站外安裝檔、貼 shell 指令,或執行和宣稱功能無關設定步驟的內容。
AID-M-001.003
Agentic Skill Asset Inventory & Lifecycle Governance
把每個裝進環境的 ClawHub 技能都當成受管資產,記錄版本、發布者、核准狀態,以及發現問題時怎麼停用。這樣一來,像 google-qx4 這類惡意技能或換名 clone 一出現,團隊才有辦法跨多台開發機快速盤點、下架、撤權。
AID-H-019.007
Skill-Level Permission Manifest Validation & Runtime Enforcement
技能在安裝前就該把外部二進位檔、下載網域、shell 需求,以及是否需要人工安裝,寫進結構化 manifest(安裝宣告檔)。一個號稱只是 Google 整合的技能,如果突然要求下載未宣告的安裝檔或貼終端機指令,就該直接擋下,或先隔離送審。
AID-H-031.005
Admission Policy Orchestration & Continuous Re-Scan Governance
Snyk 的觀察顯示,被標記過的技能很快就會換名字、換帳號重新出現。無論是技能倉庫維運方,還是企業內部的私有鏡像站,都需要持續重掃、政策驅動的自動隱藏,以及事件觸發的停用流程,不能把審查當成一次性關卡。
AID-H-031.003
Manifest-vs-Observed Behavioral Consistency Testing
候選技能在核准前,應該先放進隔離環境實跑一次。如果一個號稱只是 Google 生產力工具整合的技能,一開始就把人導去站外下載、手動安裝,或終端機操作,那它實際行為就和宣稱用途對不上,不該放行。

身為資安防禦者,我們應該這麼做

  • 先在端點、工作筆記和內部文件裡搜尋 google-qx4NET_NiNjA,以及任何要求手動安裝 openclaw-core 的 ClawHub Google 技能。如果有人用過,先隔離該機器,再檢查持久化痕跡。
  • 全面盤點已安裝技能和新上架技能,找出所有在 SKILL.md 或 README 裡要求使用者下載站外二進位檔、貼終端機指令,或抓密碼保護壓縮檔的內容。
  • 要求每個技能用結構化 manifest 宣告外部網域、二進位檔、shell 需求和安裝流程。只要前置需求落在 manifest 之外,就直接擋下或隔離送審。
  • 在 publish 或 install 前,把技能說明文字一起送進語意掃描和隔離測試。Markdown 指示不是「只是文件」;對 agent 來說,它就是會影響後續行為的操作說明。
  • 建立快速下架和 clone 應對流程:最短帳號年齡、社群檢舉、持續重掃,以及一旦確認惡意技能家族就能企業範圍停用的機制。

1 個額外的防禦考量

agent 要求人工執行安裝步驟時的最後一道防線

除了上面這些防禦技術,部署本機 agent 生態的團隊,還應該再補一層專門處理「agent 要求人手動執行安裝步驟」的介面安全機制。這次之所以會成功,就是因為那段貼命令、抓壓縮檔的要求,看起來像正常安裝流程,而且還是由原本就被信任的 agent 代為轉述。
建議做法: 只要技能的前置需求涉及手動貼終端機指令、下載站外壓縮檔,或安裝未核准的二進位檔,就先進隔離流程。介面上要直接顯示發布者、網域、檔案來源與雜湊等資訊,要求額外核准,並預設擋下來自未核准目的地的可複製命令。

結論

這起事件很值得拿來修正大家對 AI 供應鏈風險的直覺。真正有問題的,往往不是 repo 裡的可執行檔,而是寫在說明文件裡、又被 agent 用自然口吻轉述出去的操作指示。AIDEFEND  在技能准入分析、宣告檔落實和持續治理這幾塊都對得上;還要補的一層,則是把「agent 建議你怎麼裝」和「你真的把命令貼進終端機」之間,插進一道更明顯也更難被略過的安全檢查。