Case · DiggingBeagle record

Semantic Kernel prompt injection reached host code execution

CVE-2026-26030 allowed a model-controlled Search Plugin parameter to reach an unsafe eval-based filter path and execute code on the Semantic Kernel host under affected conditions.

Scope

Semantic Kernel Python versions before 1.39.4 when an agent exposes the Search Plugin backed by the vulnerable In-Memory Vector Store filter functionality and an attacker can influence the agent input.

Assessment profile

Assessment method
Setting
research demonstration
Exploitation
demonstrated
Evidence
Grade B
Remediation
patch available
AI role
AGAINST AI
Basis and provenance

The recorded Microsoft AST bypass demonstration and maintainer version advisory establish the configured Search Plugin/eval path and patch availability; no broad in-the-wild exploitation is established. Assessment is a desk review of the retained canonical Claims and cited Source metadata at their recorded cutoff, not a new external verification. Impact remains ungraded.

Assessed Sep 24, 2026 using diggingbeagle.assessment/1.

At a glance

Mechanism and trust boundary

  1. 01

    Inject instructions into agent input

    The attacker influences the model's natural-language input.

    Boundary: untrusted content / model

  2. 02

    Model fills a tool parameter

    The model calls the Search Plugin with an attacker-influenced city value.

    Boundary: model output / tool schema

  3. 03

    Framework builds dynamic filter code

    The vulnerable filter interpolates the value into a Python lambda expression.

    Boundary: tool parameter / code generation

  4. 04

    Validator bypass reaches eval sink

    The crafted value survives validation and reaches dynamic execution.

    Boundary: validator / Python eval

  5. 05

    Host process executes command

    The agent host runs attacker-controlled code.

    Boundary: agent framework / operating system

Timeline

  1. Feb 19, 2026
    Event type unspecified

    GitHub publishes CVE-2026-26030 advisory

    The advisory identifies the patched Semantic Kernel Python version.

  2. May 7, 2026
    Event type unspecified

    Microsoft publishes technical exploit analysis

    Microsoft documents the prompt-to-RCE chain and defensive guidance.

Claims & evidence

CLM-RCEMicrosoft reports that CVE-2026-26030 can turn prompt injection into host remote code execution when the agent uses the affected Search Plugin and In-Memory Vector Store filter path.supported

Basis: reported finding

Link to claim
CLM-BYPASSMicrosoft demonstrated an AST-validation bypass that traversed Python class metadata to load os and execute a shell command.supported

Basis: reported finding

Link to claim
CLM-AFFECTEDThe GitHub advisory lists Semantic Kernel Python versions before 1.39.4 as affected and 1.39.4 as patched.supported
CLM-EVAL-SINKMicrosoft traces the exploit to model-controlled string interpolation into a Python lambda expression that is executed with eval().supported

Basis: reported finding

Link to claim

Evidence visuals

diagram

Semantic Kernel prompt-to-RCE path

  1. Injected input

    Attacker influences agent input

  2. Model tool call

    Search Plugin receives attacker-influenced city value

  3. Filter builder

    Value interpolated into Python lambda

  4. AST validator

    Crafted expression survives implemented checks

  5. Python eval

    Dynamic expression is executed

  6. Agent host

    Shell command runs on host

  • Injected input Model tool call: prompt influence
  • Model tool call Filter builder: tool parameter
  • Filter builder AST validator: generated code
  • AST validator Python eval: bypass
  • Python eval Agent host: code execution
Project-authored reconstruction of CVE-2026-26030 from Microsoft's technical disclosure. · Source: Semantic Kernel prompt injection reached host code execution

Implications

Treat model-controlled tool parameters as attacker-controlled input. Patch the framework, remove unsafe dynamic evaluation paths, and investigate the vulnerable deployment window for host-level indicators rather than assuming a model refusal would have prevented exploitation.

Controls and mitigations

  • Upgrade semantic-kernel Python to 1.39.4 or later.
  • Treat every model-controlled tool argument as untrusted input.
  • Avoid dynamic eval-based filters for attacker-influenced values.
  • Hunt the vulnerable deployment window for suspicious child processes, outbound connections and persistence.
  • Rotate credentials reachable from any host where exploitation is suspected.

Unknowns and contradictions

  • The cited sources do not establish widespread exploitation in the wild.
  • Exposure depends on the specific Search Plugin and In-Memory Vector Store configuration.

Sources and citation

Material revision history

  1. Sep 16, 2026 · Published version · first publication · revision 1
  2. Sep 25, 2026 · Published version · material revision · revision 39Public fields changed: assessment_profile
  3. Oct 8, 2026 · Published version · material revision · revision 99Public fields changed: claims