// 威脅簡報

Microsoft Semantic Kernel(Python)InMemoryVectorStore 篩選條件被當成程式執行

CVSS
9.9 CRITICAL
CISA KEV
未列入
弱點類型
CWE-94
主題
AI 安全

PlainCVE 團隊 · 發布 2026-09-23 · 更新 2026-09-24 · AI 輔助 · 媒體簡報 ↓

人工審稿 2026-09-23指令測試:未提供漏洞重現:未進行驗證紀錄 ↓

AI 模型替搜尋外掛填的篩選參數,會被 Semantic Kernel 拼成一段 Python 程式再執行;透過提示注入誘導模型,就可能在伺服器上執行任意程式。

誰會中使用 Python 版 semantic-kernel 1.39.4 以前、把 InMemoryVectorStore 當搜尋外掛交給模型呼叫(function calling),且使用預設篩選設定的應用。.NET 與 Java 版未被列為受影響。
後果攻擊者可能以應用程式的權限在主機上執行程式,讀取金鑰、竄改資料或以此為跳板。
現在該做什麼升級 semantic-kernel 到 1.39.4 以上。正式環境不要使用 InMemoryVectorStore。
查看依據(4)
  • 廠商 / 維護者Microsoft 的安全公告:正式環境不要使用 InMemoryVectorStoreAvoid using InMemoryVectorStore for production scenarios.github.com
  • 廠商 / 維護者Microsoft 研究文章:升級到 1.39.4 以上可降低風險Upgrading the Python semantic-kernel dependency to version 1.39.4 or higher mitigates the risk.microsoft.com
  • 廠商 / 維護者Microsoft 建議:發現可疑活動就視為主機可能遭入侵,檢查主機、輪替 AI 代理能存取的憑證與權杖,並調查主機能連到的資料與系統treat it as a potential host compromise. Review the affected host, rotate credentials and tokens accessible to the agent, and investigate what data or systems that host could reach.microsoft.com
  • 本站判斷無法排除遭利用時,也輪替這台主機上的其他金鑰,是本站的建議,不是 Microsoft 的建議
受影響版本1.39.4 以前的所有版本
查看依據(4)
  • 廠商 / 維護者Microsoft 的安全公告:問題出在 Python SDK 的 InMemoryVectorStore 篩選功能An RCE vulnerability has been identified in Microsoft Semantic Kernel Python SDK, specifically within the InMemoryVectorStore filter functionality.github.com
  • CVE 紀錄CVE 紀錄:1.39.4 以前的版本受影響has a remote code execution vulnerability in versions prior to 1.39.4cve.org
  • 廠商 / 維護者Microsoft 研究文章:受影響條件是把 InMemory 向量資料庫當搜尋外掛的後端,並使用預設設定It uses the In-Memory Vector Store and relies on its filter functionality (when acting as the backend for the Search Plugin using default configurations).microsoft.com
  • 廠商 / 維護者1.39.3 的原始碼已改成只允許特定語法節點與函式,但沒有限制屬性名稱,所以仍受影響github.com
修好的版本1.39.4 以上
查看依據(3)
  • 廠商 / 維護者Microsoft 的安全公告:python-1.39.4 已修補,請升級到這個版本以上The problem has been fixed in python-1.39.4. Users should upgrade this version or higher.github.com
  • 廠商 / 維護者1.39.4 的原始碼另外封鎖危險的內部屬性名稱,但仍用受限制的 eval 執行篩選字串Blocklist of dangerous attribute names that cannot be accessed in filter expressions.github.com
  • 廠商 / 維護者python-1.39.4 發布說明包含修補 PR #13505Python: refinement of filteringgithub.com
CVSS 向量
顯示完整向量CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
時間點
  • 漏洞出現 2025-06-25 · semantic-kernel 1.34.0 發布,加入文字篩選器 來源
  • 首次公開 2026-02-19
CISA KEV未列入(未列入 KEV 不代表沒有被利用)
查看依據(2)
  • 本站判斷本站 2026-09-24 的 CISA KEV 快照沒有這個 CVE;未列入不代表沒有被利用
  • 本站判斷研究時沒有找到已遭利用的公開紀錄

藍隊應對手冊

確認、修補 / 緩解、應變、強化。版本符合受影響條件不等於已被入侵;檢查沒有結果也不等於安全,每一項都有能證明與不能證明的範圍。標記的步驟對應下方攻擊流程裡可以擋下攻擊的那一步。

DETECT確認我受影響嗎?有沒有入侵跡象?
  1. 01確認 semantic-kernel 版本

    Python 版 semantic-kernel 1.39.4 以前受影響,1.39.4 以上已修補。.NET 與 Java 版未被官方公告列為受影響。

    唯讀查詢
    pip show semantic-kernel
  2. 02找出是否把 InMemoryVectorStore 交給模型呼叫

    搜尋程式碼裡有沒有 InMemoryVectorStore 或 InMemoryCollection。受影響的條件是把它當搜尋外掛交給模型呼叫(function calling),並使用預設篩選設定;其他向量資料庫連接器未被官方公告列為受影響。

  3. 03回頭檢查 AI 應用程序產生的可疑子程序

    Microsoft 建議檢視「部署受影響版本到升級之間」,AI 應用程序有沒有產生可疑的子程序。

MITIGATE修補 / 緩解先修補;還不能修補時先擋住
  1. 01升級到 1.39.4 以上

    1.39.4 在原有的語法節點與函式限制之外,再擋下 44 個危險的內部屬性名稱。函式庫本身仍用受限制的 eval 執行篩選字串。

    會變更環境
    pip install -U "semantic-kernel>=1.39.4"
  2. 02正式環境不要使用 InMemoryVectorStore

    這是官方公告給的緩解方式;InMemoryVectorStore 原本就是為開發測試設計的。

RESPOND應變發現入侵跡象時
  1. 01發現可疑活動時,視為主機可能遭入侵並檢查

    Microsoft 建議:視為主機「可能」遭入侵,檢查該主機,並調查這台主機能連到哪些資料與系統。

  2. 02輪替 AI 代理能存取的憑證與權杖

    Microsoft 建議的處置。攻擊者可能以應用程式的權限讀取金鑰。

  3. 03無法排除時,也輪替主機上的其他金鑰

    PlainCVE 建議(不是 Microsoft 的建議):如果無法排除遭利用的可能,保守起見也輪替這台主機上的其他金鑰。

HARDEN強化長期避免同類問題
  1. 01給模型呼叫的工具只開最小權限

    模型可能被提示注入操控,它能呼叫的工具權限越小,被操控時能造成的傷害越小。

  2. 02不可信內容與系統指示分開處理

    惡意指示可能來自使用者輸入,也可能藏在模型讀取的文件或網頁裡(間接提示注入)。

  3. 03不要讓模型輸出變成可執行的程式碼

    寫自己的應用程式時,篩選條件用結構化資料表示,不經過 eval。

  4. 04用低權限帳號、在容器裡執行 AI 應用

    即使程式在主機上被執行,也只能拿到有限的權限;同時監控 AI 應用程序產生的異常子程序。

完整修復步驟與說明
  1. 升級。 pip install -U "semantic-kernel>=1.39.4"
  2. 不要在正式環境使用 InMemoryVectorStore 這是官方公告給的緩解方式;它原本就是為開發測試設計的。
  3. 檢查是否曾被利用。 Microsoft 建議回頭檢視「部署受影響版本到升級之間」,AI 應用程序有沒有產生可疑的子程序。Microsoft 的建議是:如果發現可疑活動,視為主機可能遭入侵,檢查該主機、輪替 AI 代理能存取的憑證與權杖,並調查這台主機能連到哪些資料與系統。PlainCVE 另外建議:如果無法排除,保守起見也輪替這台主機上的其他金鑰。
  4. 通用原則。 給模型呼叫的工具只開最小權限;AI 應用用低權限帳號、在容器裡跑。

攻擊流程

從左到右是攻擊發生的順序。藍色盾牌代表這一步可以被擋下,越早擋下越好。點圖示可看細節。

Microsoft Semantic Kernel(Python)InMemoryVectorStore 篩選條件被當成程式執行: 1. 把指示藏進模型會讀到的文字 → 2. 模型呼叫搜尋外掛,自己決定篩選參數 → 3. 參數被拼進一段 Python lambda 字串 → 4. 繞過檢查的程式在主機上執行CVE-2026-26030 · Microsoft Semantic Kernel(Python)InMemoryVectorStore 篩選條件被當成程式執行攻擊者你的系統把指示藏進模型會讀到的文字 — 可能是使用者直接輸入,也可能是模型讀取的文件或網頁(間接提示注入)。 1把指示藏進模型會讀到的文字模型呼叫搜尋外掛,自己決定篩選參數 — 參數內容受到上一步的文字影響,已經不是開發者預期的單純關鍵字。 2模型呼叫搜尋外掛,自己決定篩選參數參數被拼進一段 Python lambda 字串 — 舊版用字串組出篩選函式,先檢查語法樹再執行。早期版本用黑名單擋危險名稱;1.39.2 起改成只允許特定語法節點與函式呼叫,但沒有限制可以存取哪些屬性。 3參數被拼進一段Python lambda 字串繞過檢查的程式在主機上執行 — Python 的動態特性讓這類檢查很難擋完,攻擊者可經由內部物件屬性取得危險功能。 4繞過檢查的程式在主機上執行攻擊路徑可在此擋下PlainCVE · plaincve.date/vulns/cve-2026-26030-semantic-kernel-filter-rce · CC BY 4.0
圖片可自由用於報導與教學,採 CC BY 4.0,圖上已附出處。
  1. 攻擊者

    把指示藏進模型會讀到的文字

    可能是使用者直接輸入,也可能是模型讀取的文件或網頁(間接提示注入)。

    防禦: 對模型可呼叫的工具做權限最小化;不可信內容與系統指示分開處理。

  2. 你的系統

    模型呼叫搜尋外掛,自己決定篩選參數

    參數內容受到上一步的文字影響,已經不是開發者預期的單純關鍵字。

  3. 你的系統

    參數被拼進一段 Python lambda 字串

    舊版用字串組出篩選函式,先檢查語法樹再執行。早期版本用黑名單擋危險名稱;1.39.2 起改成只允許特定語法節點與函式呼叫,但沒有限制可以存取哪些屬性。

    防禦: 升級到 1.39.4+:在原有的語法節點與函式限制之外,再擋下危險的內部屬性名稱。

  4. 你的系統

    繞過檢查的程式在主機上執行

    Python 的動態特性讓這類檢查很難擋完,攻擊者可經由內部物件屬性取得危險功能。

    防禦: 監控 AI 應用程序產生的異常子程序;以低權限帳號與容器隔離執行。

影響範圍

條件是否受影響
Python semantic-kernel 1.39.4 以前 + 使用 InMemoryVectorStore 搜尋外掛 + 模型可呼叫(function calling)+ 預設篩選設定受影響
Python semantic-kernel 1.39.4 以上已修補
使用其他向量資料庫連接器(不是 InMemory)官方公告未列為受影響
.NET / Java 版 Semantic Kernel官方公告未列為受影響

pip show semantic-kernel 看版本,再搜尋程式碼裡有沒有 InMemoryVectorStoreInMemoryCollection

原理

Semantic Kernel 讓開發者把「搜尋資料」這類功能包成外掛,交給 AI 模型自己決定何時呼叫、帶什麼參數。問題出在 InMemory 向量資料庫處理「篩選條件」的方式。

舊版把篩選條件組成一段 Python 程式字串(一個 lambda 函式),再交給 Python 執行。當模型替外掛填參數時,模型產生的文字就會被拼進這段程式裡。

有問題的思路(概念示意,不是原始程式碼):

展開程式碼範例(python)
# 模型決定的參數,被直接拼進程式字串
expr = f"lambda record: record.category == '{model_argument}'"
filter_fn = eval(expr)   # 字串變成真的程式

開發者並非沒有防範:舊版會先把字串解析成語法樹,只允許 lambda、擋掉 evalexecopen 等危險名稱。但 Microsoft 的研究文章指出,黑名單在 Python 這種高度動態的語言裡「本質上很脆弱」:透過物件的內部屬性一層層找,不必寫出任何被擋的名字也能拿到危險功能。1.39.2 起的版本已改成允許清單(只允許特定語法節點與函式呼叫),但沒有限制屬性名稱,所以 1.39.4 以前的版本都仍受影響。

這就是 CWE-94(程式碼產生控制不當):本來只該是「資料」的篩選值,變成了「程式」。而把資料送進來的是 AI 模型,模型又可能被提示注入操控,於是整條鏈變成「一段文字 → 伺服器執行程式」。

另一種設計(寫自己的應用程式時可參考的概念示意,不是 1.39.4 的實際修補):

展開程式碼範例(python)
# 篩選條件用結構化資料表示,不經過 eval
filter_spec = {"field": "category", "op": "eq", "value": model_argument}
results = [r for r in records if getattr(r, filter_spec["field"]) == filter_spec["value"]]

要注意:semantic-kernel 函式庫本身在 1.39.4 仍然用受限制的 eval 執行篩選字串,並沒有改成上面這種做法。1.39.4 的修補是在原有的語法樹檢查(只允許特定節點類型與函式呼叫)之上,再擋下 44 個危險的內部屬性名稱。對自己的程式來說,更根本的原則是:不要讓模型輸出變成可執行的程式碼。

時間軸

日期事件
2026-02-03修補 PR #13505 開啟
2026-02-10PR 合併,釋出 python-1.39.4
2026-02-19GitHub 安全公告與 CVE 公開
2026-03-10列入 Microsoft 3 月安全更新指南
2026-05-07Microsoft 發表 AI Agent 框架 RCE 研究文章

延伸閱讀

  • 同一篇 Microsoft 研究也揭露了 CVE-2026-25592:可被 AI 呼叫的檔案下載功能,能讓沙箱寫檔到主機。
  • 相關弱點類型:CWE-94 程式碼產生控制不當、提示注入(OWASP LLM Top 10 的 LLM01)。
  • 評分差異:GitHub / NVD 為 CVSS 9.9 Critical;MSRC 標示為 Important、CWE-749。本頁採用 CNA(GitHub)與 NVD 的評分。

驗證紀錄 已人工審稿、核對來源;尚未在我們的環境重現

人工審稿2026-09-23

驗證紀錄只寫環境與結果,不公開重現步驟或可攻擊他人系統的程式。詳見 政策.

來源

  1. 其他semantic-kernel 1.34.0 released with text filters · pypi.org · 查閱 2026-09-24
  2. 安全公告GHSA-xjw9-4gw8-4rqx — InMemoryVectorStore filter functionality vulnerable to remote code execution · Microsoft(GitHub), 2026-02-19 · 查閱 2026-09-23
  3. CVE / NVD / OSVCVE-2026-26030 Record · CVE Program, 2026-02-19 · 查閱 2026-09-23
  4. CVE / NVD / OSVNVD - CVE-2026-26030 · NIST · 查閱 2026-09-23
  5. 廠商說明MSRC Security Update Guide — CVE-2026-26030 · Microsoft, 2026-03-10 · 查閱 2026-09-23
    MSRC 將 CWE 列為 CWE-749,嚴重度標示為 Important;GitHub / NVD 為 CWE-94、9.9 Critical。
  6. 修補 commit / 版本Python: refinement of filtering(PR #13505) · Microsoft(GitHub), 2026-02-10 · 查閱 2026-09-23
  7. 修補 commit / 版本python-1.39.4 release · Microsoft(GitHub), 2026-02-10 · 查閱 2026-09-23
  8. 其他in_memory.py at python-1.39.3 (filter allowlist before the fix) · Microsoft(GitHub) · 查閱 2026-09-24
  9. 修補 commit / 版本in_memory.py at python-1.39.4 (fixed version, still uses restricted eval) · Microsoft(GitHub) · 查閱 2026-09-24
  10. 研究文章When prompts become shells: RCE vulnerabilities in AI agent frameworks · Microsoft Security Blog, 2026-05-07 · 查閱 2026-09-23

媒體簡報

一句話

微軟開源的 AI 應用開發框架 Semantic Kernel 的 Python 版本有一個漏洞:AI 模型替搜尋功能填寫的參數會被當成程式碼執行。攻擊者只要設法讓模型讀到特製的文字,就可能控制伺服器。微軟已在 2026 年 2 月釋出修補版 1.39.4,目前沒有已遭利用的公開紀錄。

可引用的一句話

當 AI 模型的輸出直接變成程式碼,提示注入就不再只是讓聊天機器人說錯話,而是讓伺服器執行別人的指令。

圖片

下載分享圖(PNG) · 攻擊流程圖(可下載)

引用時請標示「PlainCVE」並附上本頁連結。 完整引用格式見下方「如何引用本頁」。有事實錯誤請回報.

如何引用本頁

本文採 CC BY 4.0,轉載請保留署名與連結。

PlainCVE 團隊(2026)。《Microsoft Semantic Kernel(Python)InMemoryVectorStore 篩選條件被當成程式執行》。PlainCVE。https://plaincve.date/vulns/cve-2026-26030-semantic-kernel-filter-rce(查閱日期:YYYY-MM-DD)
BibTeX
@misc{cve202626030semantickernelfilterrce2026,
  title  = {Microsoft Semantic Kernel(Python)InMemoryVectorStore 篩選條件被當成程式執行},
  author = {PlainCVE 團隊},
  year   = {2026},
  howpublished = {PlainCVE},
  url    = {https://plaincve.date/vulns/cve-2026-26030-semantic-kernel-filter-rce},
  note   = {更新於 2026-09-24}
}