AIDEFEND in Action AIA-0094 實證研究 發布於 AIA: 2026年10月1日

Kiro 讀取惡意網頁後改寫 MCP 設定,並在開發者電腦執行命令

Intezer 與 Kodem 在受控安全測試中證實,攻擊者可將對人眼隱藏的注入指示嵌入網頁中。當 Kiro IDE 讀取該網頁時,agent 會被誘導使用檔案工具改寫 ~/.kiro/settings/mcp.json,且未遭遇有效的人工核准把關。Kiro 在設定重新載入後,直接以開發者的本機使用者權限啟動新增的 MCP 伺服器命令。該研究概念驗證藉由本機回呼(local callback)確認程式碼執行成功,並未宣稱有真實受害者遭入侵或機密遭竊。

Indirect Prompt InjectionConfiguration PoisoningLocal Agent TakeoverClient SecurityAI Coding Agent
8 項對應的 AIDEFEND 防禦手法
來源: When the AI Edits Its Own Trust Boundary: Remote Code Execution Vulnerability in AWS's Agentic IDE 
作者: Nicole Fishbein, Intezer Research, with Eran Segal, Kodem Security
原文發布: 2026年7月20日

威脅分析

  • 使用者僅核准讀取外部網頁。 Kiro 是一款可協助開發者檢索資訊與操作檔案的 AI 程式碼編輯器。研究人員在測試網頁的 HTML 中置入視覺上不可見的文字;核准網頁讀取並不代表使用者同意變更本機關鍵設定。
  • 遭竄改者為觸發命令執行的全域設定檔。 MCP(Model Context Protocol)是讓 AI agent 連接外部工具的協定。Kiro 依據網頁文字指示,將攻擊者指定的啟動命令寫入 ~/.kiro/settings/mcp.json;該全域檔案負責定義 Kiro 所載入的 MCP 伺服器清單。
  • 事後提示未能守住最後執行防線。 研究指出,即使介面隨後顯示設定變更提示,Kiro 仍可能在使用者回應前重新載入設定並啟動命令。本機端點接收到回呼訊號證實命令已成功執行;但該測試不代表已發生真實憑證外洩或非受控環境受害者入侵。

適用的 8 項 AIDEFEND 防禦手法

AID-I-004.006
Agent Identity & Persistent State File Write Protection
極高
以 agent 使用者無法自行解除的作業系統或受管虛擬機邊界,保護全域 MCP 設定與必要的上層路徑,防止重新命名、替換與符號連結繞過。拒絕直接寫入,只允許獨立受控的寫入程序套用已核准的確切內容,並讀回變更前後狀態。若 agent 能替換受保護的路徑,單一檔案 ACL 或由 agent 擁有的目錄都不足夠。宣告預防效果前,須測試寫入、刪除、重新命名、路徑替換、符號連結與其他設定路徑。
AID-E-003.003
Confirmed Malicious Code & Persistence Eviction
高
先行保全遭竄改的 ~/.kiro/settings/mcp.json 及所指向的執行檔以供鑑識,隨後自所有受影響之使用者設定檔中移除該條目,並確認設定檔重新載入時不再啟動該伺服器。已在背景執行的 MCP 子程序為獨立處理標的:必須透過端點偵測與應變(EDR)機制進行終止,並核對執行檔雜湊與該程序的啟動時間,確認終止的是受影響的執行個體;單純修改設定檔無法停止已運行的子程序。
AID-H-021.002
Runtime Integrity Enforcement (Signed Configurations)
中
受控客戶端每次動態重新載入前,須在本機驗證確切設定的簽章、核准部署與固定信任根,再以不可分割的操作套用同一份內容。未簽章或過期的變更須在啟動新增 MCP 命令前遭拒絕。原版 Kiro 未提供此閘道,因此這是供應商或受控客戶端的實作要求;一般通知或端點定期掃描不能視為等效的執行前阻擋。
AID-H-018.003
High-Impact Independent Validation & Approval Gate
中
受控客戶端寫入全域 MCP 設定前,須取得獨立核准,綁定確切設定內容與即將執行的命令。核准讀取網頁或寫入後的提示,均不能授權這項操作。原版 Kiro 未提供 G001 的簽章獨立閘道;監督式權限只是輔助控制,目前讀者能掌握的邊界仍是作業系統強制保護的路徑。完整閘道須由供應商或受控客戶端實作。
AID-M-001.003
Agentic Skill & Instruction Asset Inventory
中
盤點每個受管 MCP 設定,以及設定所指定的載入器能存取的完整指令或外掛套件目錄;記錄確切執行檔、版本與各成員雜湊,再與權威的核准及負責人紀錄核對。只有命令字串或 mcp.json 雜湊,不能構成完整套件盤點。缺少端點收集程序或無法讀取路徑時,該範圍仍未完成驗證。這項控制提供異常與需清除的確切清單,本身不會核准或阻擋執行。
AID-H-021.001
Client-Side Configuration Enforcement
中
於受管端點持續監控 ~/.kiro/settings/mcp.json 之變更,並將新增命令與執行檔雜湊值與核准清單進行比對。一般的寫入後警示僅具偵測效果:Kiro 可能在隔離動作生效前即已重新載入並啟動惡意組態。唯有當端點防護產品能在 Kiro 載入前同步阻斷檔案寫入或程序建立時,方能視為預防性控制;否則仍須進行獨立調查並終止已執行的子程序。
AID-I-001.002
MicroVM & Low-Level Sandboxing
中
將客戶端與它啟動的所有 MCP 程序放在已驗證的受管虛擬機或支援的作業系統沙箱內,限制專案寫入、不提供開發者家目錄憑證,並由獨立邊界執行對外連線政策,以限縮注入命令啟動後的權限。研究使用的是本機回呼;外部目的地允許清單本身不會阻擋同一沙箱內的 loopback。執行環境隔離、本機與遠端路徑須分別驗證,不能以已棄用的 macOS sandbox-exec 測試代替正式防護。
AID-E-002
AI Runtime Process, Lease & Pod Eviction
中
確認 MCP 命令遭惡意注入後,獨立盤點受影響的客戶端與伺服器程序,以 PID、啟動時間、執行檔雜湊及權威程序狀態辨識並終止各執行個體;確認已停止後,才從審查過的設定重新啟動。移除 mcp.json 中的持續執行設定,不會終止已在執行的子程序。這項控制負責終止執行程序,AID-E-003.003 則負責清除啟動來源。

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

  • 升級所有受控 Kiro 軟體安裝,並清查各開發者設定檔之全域 MCP 設定,標記未經開發者本人確認核准的伺服器條目與啟動命令。
  • 利用無害的外部測試網頁進行拒絕測試:讓網頁要求 agent 改寫 ~/.kiro/settings/mcp.json;防護機制必須在使用者核准網頁擷取的情況下,仍能阻斷寫入或拒絕啟動該設定。
  • 將全域 MCP 設定檔置於開發者帳號自身無法解除的作業系統層級寫入保護下,並在所有受管端點上盤點非預期條目。在 Kiro 能於重新載入設定時驗證簽章前,模型可呼叫的檔案工具絕不可具備該路徑寫入權限,亦不可預設自動核准。

1 個額外的防禦考量

公開資料的範圍

Intezer 的研究驗證了全域 MCP 設定路徑與本機回呼。AWS 發布的 CVE-2026-10591 公告則以 .vscode/tasks.json 為例說明執行敏感路徑之檔案寫入限制;單憑兩份公開資訊,無法將公告所列的受影響版本範圍直接等同於此項全域 MCP 攻擊鏈的適用版本。
建議做法: 立即升級 Kiro IDE、清查全域 MCP 設定中未經授權的指令,並實測驗證 agent 無法透過檔案寫入工具竄改或啟動外部命令。

結論

AIDEFEND  指出作業系統層級的全域 MCP 設定檔寫入防護,以及企業端點對新增命令的盤點是目前可採取的防護措施。若能在動態重新載入設定前導入獨立的設定檔簽章驗證,將能有效防堵後續命令執行;然而原版 Kiro 尚未提供該項獨立閘道,需由軟體供應商或受控客戶端進行客製實作。

最後更新: