觀點 · 資訊分享
AWS AgentCore SDK 的套件安裝功能有指令注入漏洞:1.18.1 以前要升級
AWS 7/23 發布安全公告 2026-065-AWS:Bedrock AgentCore Python SDK 的 install_packages() 沒處理好參數分隔字元,通過驗證的使用者可能在 Code Interpreter 沙盒裡執行任意指令。請升級到 1.18.1。
- 發布
- 2026-07-23
- 篇幅
- 約 4 分鐘 · 1,638 字
- 結構
- 7 節 + 3 題常見問題
- 標籤

一句話看懂:AWS 的 AI 代理開發套件 bedrock-agentcore,在「幫沙盒裝套件」的功能裡有指令注入漏洞:通過驗證的使用者只要塞進特製的套件名稱,就可能在沙盒裡執行任意指令;1.18.1 已修補。

先用白話講:什麼是指令注入?
想像你請餐廳外送,訂單上寫「炒飯一份」。如果系統直接把訂單內容貼給廚房,而有人把訂單寫成「炒飯一份,順便把收銀機打開」,廚房又照單全收,就出事了。這就是指令注入:本來只該當成「資料」的字串,被系統當成「指令」執行。
AWS 的 Bedrock AgentCore 提供 AI 代理使用的 Code Interpreter:代理需要跑 Python 時,會在一個受管的沙盒裡執行。SDK 裡有個 install_packages() 方法,用來替沙盒安裝 Python 套件。這次的問題就出在它。
發生什麼事
AWS 在 7 月 23 日(美國太平洋時間)發布安全公告 2026-065-AWS,類型標示為「重要(需要注意)」:
- 漏洞編號:CVE-2026-16796
- 問題:
install_packages()沒有妥善處理參數的分隔字元 - 後果:通過驗證的遠端使用者,可能藉由特製的套件名稱參數,在 Code Interpreter 沙盒內執行任意指令
- 受影響版本:bedrock-agentcore 1.18.1 以前
- 修補版本:1.18.1
- 評分:NVD 收錄 AWS 提供的 CVSS 4.0 為 8.4(高)
AWS 也特別提醒:如果你有複製或衍生的程式碼,記得同步套上修補。
這不是第一次
同一個方法在 6 月 17 日就有過類似的公告 2026-044-AWS(CVE-2026-12530):舊版用一份不完整的封鎖清單來過濾套件名稱,再組成 pip install 指令,結果特製的參數可以繞過檢查,最嚴重的是 --index-url(把套件來源導向第三方控制的伺服器)與 -r(可能讀出沙盒內的任意檔案)。影響 1.1.3 以上、低於 1.6.1 的版本,1.6.1 修補。
兩次問題的共通點是:把外部字串組成指令前,檢查得不夠嚴。
給開發者的技術細節
- 先確認版本:
pip show bedrock-agentcore
- 無法立即升級時,AWS 的做法是:不要把未信任或模型產生的輸入傳給
install_packages() - 必須接受動態套件名稱時,先用嚴格的 PyPI 命名規則驗證,包括把「extras」群組限制為以逗號分隔的識別字,再呼叫 SDK
- 6 月那次的建議更保守:只允許固定、寫死的核准套件清單
我的看法
這個漏洞很適合拿來提醒做 AI 代理應用的人:代理經常會「決定」要裝哪個套件,這個名稱其實是模型產生的字串,可能被提示注入或惡意內容影響。換句話說,來自模型的輸出,應該跟來自使用者的輸入一樣被當成不可信資料。
實務上最穩的做法,是用白名單:只允許事先審核過的套件名稱,而不是試圖用黑名單擋掉危險的寫法。6 月那次封鎖清單不完整,就是黑名單容易漏的例子。
名詞小辭典
- 指令注入(Command Injection):讓系統把輸入的資料當成指令執行的漏洞。
- 沙盒(Sandbox):限制程式能做什麼的隔離環境。
- 白名單/黑名單:只准許列出的項目,與只禁止列出的項目。
- CNA:有權限替自家產品發 CVE 編號的組織。