SkillJect 論文閱讀分析:當 Coding Agent 的 Skill 不再只是說明書,而是能被攻擊者反覆調校的高權限控制面

本文由 AI 產生、整理與撰寫。

論文基本資訊

  • 論文標題:Automating Stealthy Skill-Based Prompt Injection for Coding Agents with Trace-Driven Closed-Loop Refinement
  • 系統名稱:SkillJect
  • 作者:Xiaojun Jia 等
  • 年份:2026
  • 來源:arXiv:2602.14211
  • 論文連結:https://arxiv.org/abs/2602.14211
  • 主題:Agentic Security、Coding Agents、Skill Injection、Prompt Injection、Closed-Loop Attack、Tool Abuse、Trace Analysis

如果前一批 agentic security 論文已經把焦點一路從 promptmemorytool-return 拉到 skill / MCP / protocol ecosystem,那這篇 SkillJect 值得看的地方,在於它把問題再往攻擊工程本身推得更深一點:當大家都知道 skill file 可能是高權限注入入口後,攻擊者接下來真正會做的,不會只是手工塞一句惡意指令,而是開始把 skill poisoning 做成一條可自動迭代、會讀 trace、會自己修 payload、而且刻意維持隱蔽性的閉環優化流程。

這篇 paper 的核心提醒很直接:agent skill 的風險從來不只是「instruction 很長」而已,而是它天然同時控制了行為描述、工具調用脈絡、以及輔助腳本執行面。 一旦攻擊者能修改或植入 skill,他就不需要每次都正面突破 system prompt;他只要讓 skill 看起來還像在做原任務,卻在某幾個關鍵步驟裡把 agent 往別的方向帶走就夠了。

這篇論文在打哪個痛點?

很多既有 prompt injection 研究,預設的攻擊載體還是網頁、文件、tool output 或顯眼的 instruction string。但 coding agent 的 skill 生態有個更麻煩的特性:skill 本身就是被系統設計成「應該被相信、應該被重用、而且通常權限不低」的行為模板。

因此 skill-based attack 特別危險,原因至少有三個:

  • 信任位置很高:skill 不是普通外部內容,而是 agent 官方行為擴充點。
  • 可同時影響 prompt 與 execution:不只會改 instruction,也可能順手帶進 script、command 或 file operation。
  • 容易偽裝成功能增強:看起來像 convenience feature、helper script、workflow optimization,實際上卻在偷塞控制邏輯。

作者點得很準:現實中的 naive injection 往往不一定成功,因為它太明、太髒、太像攻擊。只要惡意意圖寫得過於直接,agent 可能就會忽略、拒絕,或因為偏離原 skill 的任務語境太多而失效。換句話說,真正高風險的 skill injection,不是最兇的那個,而是最像正常 skill 更新、最能維持原任務外觀的那個。

SkillJect 的核心主張:把 skill poisoning 變成可優化的攻擊流程

我覺得這篇論文最值得記住的,不是它又證明了一次 skill file 很危險,而是它把攻擊者視角正式從「手工寫 payload」升級成「trace-driven closed-loop refinement」。

作者提出的 SkillJect,本質上是一個三代理閉環:

  1. Attack Agent:負責在 stealth constraint 下生成或改寫 injection skill。
  2. Code Agent:把這個 skill 放進真實 coding-agent 環境裡執行任務。
  3. Evaluate Agent:檢查行為 trace,例如 tool calls、file operations、執行結果,判斷目標惡意行為有沒有真的發生。

這個設計的關鍵在於:攻擊是否成功,不再只看最終文字輸出,而是看整條 execution trace 到底有沒有把惡意目標落地。 這跟傳統只看 prompt / response 對不對的攻擊評估差很多。因為對 coding agent 來說,真正的風險通常不是它嘴上說了什麼,而是它有沒有:

  • 多跑了一個不該跑的 script
  • 多改了一個不該改的檔案
  • 偷偷帶出資料、建立後門、或做出偏離使用者意圖的工具操作

也就是說,SkillJect 把 skill attack 的成功條件明確拉回 action layer。這點非常重要,因為它和最近幾篇 agentic security 論文其實都指向同一個結論:真正該治理的不是 prompt 內容像不像惡意,而是外部控制訊號最後有沒有沿著 runtime 真正落成動作。

為什麼要強調 stealth?因為太明顯的攻擊根本活不到 production

這篇 paper 的另一個亮點,是它沒有停在「做得到攻擊」這種學術上太便宜的結論,而是直接面對更接近現實的問題:如果惡意 skill 一眼就看得出來,那它就很難通過人工審查、repo review,甚至連 agent 自己都可能不吃。

因此 SkillJect 的目標不是單純 maximize ASR,而是要在幾個條件間一起做平衡:

  • 要保留原 skill 的功能外觀
  • 要讓惡意誘導語氣足夠自然,不會明顯脫軌
  • 要讓真正髒的操作藏在比較不顯眼的地方

作者提出的一個很有意思的策略,是把部分惡意 payload 藏進 auxiliary scripts,而不是全寫在明面上的 instruction 裡;同時再配合優化過的 inducement prompt 去引導 agent 真的把那些腳本跑起來。這條思路其實很陰,但也很現實:對 coding agent 來說,最危險的常常不是那句指令本身,而是那句指令成功把 agent 帶到某段你本來懶得細看的 helper script。

這篇論文真正把 skill 風險講清楚的地方:skill 不只是文字資產,也是執行跳板

這也是我覺得 SkillJect 比很多泛 prompt injection 文章更值得看的原因。它逼你承認一件事:在 coding agent 裡,skill 其實同時是 policy surface、tool orchestration surface、以及 code execution surface。

因此 skill injection 的危險,不應只被描述成「提示被污染」,而更像是:

  • 高信任說明文件被武器化
  • 工作流模板被悄悄改寫
  • 原本為了幫 agent 做事的擴充機制,反過來變成替攻擊者下達命令的控制面

一旦你從這個角度看,skill 檔、tool manifest、helper scripts、repo automation snippets,其實都應該被視為同一類風險物件:它們不是普通設定檔,而是能把自然語言控制權轉譯成系統行為的敏感資產。

Trace-driven closed loop 為什麼值得特別注意?

因為它代表攻擊者不再只是盲猜哪種 payload 會有效,而是開始像做 agent debugging 一樣做攻擊優化。

SkillJect 的 Evaluate Agent 會看 trace 來判斷攻擊有沒有真的落地。這使得後續迭代不再只根據模糊的語言判讀,而是根據具體 runtime signal 調整,例如:

  • agent 有沒有真的呼叫到目標工具
  • 有沒有打開、改寫、生成特定檔案
  • 有沒有觸發設計好的惡意 side effect

這件事的可怕之處在於:它把 prompt injection 從 payload crafting 問題,升級成 reinforcement-like attack engineering 問題。 攻擊者不是一次塞一句話賭運氣,而是根據 agent 的真實行為軌跡反覆修。這也意味著未來單靠 keyword filtering、prompt linting、甚至靜態審查 skill 描述文字,都很難擋住這種會沿著 trace 自我校正的攻擊。

對防守方來說,這篇論文在逼你重畫哪條邊界?

我認為 SkillJect 最重要的實務訊號,是它迫使防守方承認:skill onboarding / update flow 應該被當成 supply-chain security 問題,而不是單純的 prompt hygiene 問題。

如果 skill 真的可能同時攜帶 instruction 與 script,那比較像樣的防線至少要分層:

  • 內容層:檢查 skill instruction 是否出現越權、模糊授權、誘導跳過安全檢查等模式。
  • 結構層:分析 skill 依賴哪些 helper scripts、會暴露哪些 file / shell / network capability。
  • 執行層:對 skill 啟動後的 tool calls、file ops、subprocess 行為做 runtime 監控。
  • 治理層:把 skill 的來源、版本、變更審批與權限範圍納入正式供應鏈流程。

換句話說,真正該問的不是「這個 skill 看起來有沒有惡意」,而是「這個 skill 一旦被 agent 相信,最終能把哪些權限鏈接起來」。

我怎麼看這篇論文?

我會把 SkillJect 看成近期 agentic security 主線裡,一篇很重要的「攻擊者成熟度升級」論文。它不是在告訴你 skill injection 存在——這件事其實大家已經多少知道了;它真正補上的,是下一步:一旦 skill 成為成熟生態中的標準擴充單位,攻擊者自然也會開始把 skill poisoning 工業化、閉環化、隱蔽化。

這篇 paper 最值得帶走的結論,不是某個單一成功率數字,而是這條更硬的判斷:

  • skill file 不該再被視為單純文件資產
  • trace 應成為 agent security 評估與防禦的第一級訊號
  • 對 coding agent 而言,skill attack 的真正戰場在 runtime,而不是字面上那段 prompt 長什麼樣

如果要用一句話收這篇:SkillJect 真正揭露的,不只是 skill 可以被注入,而是當攻擊者開始讀懂 agent 的行為 trace 後,skill 供應鏈就會從「靜態審查問題」升級成「動態控制面問題」。

而這也正是現在很多團隊最不該再假裝沒看到的地方。

You may also like