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.

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.

First seen
Feb 19, 2026
Case kind
vulnerability
AI role
AGAINST AI
Claims
4

Reconstruction

Microsoft's demonstration used a hotel-finder agent. The model selected a search tool and supplied a city parameter. In the affected implementation, that parameter was interpolated into a Python lambda expression that was later executed with eval().

The framework had an AST validator, so exploitation was not simply a direct call to eval with arbitrary text. Microsoft showed a payload that remained valid under the implemented checks while traversing Python classes to reach an importer and eventually os.system. The result was host-level command execution.

This is a useful example of why a prompt-injection finding and a tool vulnerability must be reconstructed together. The model supplied the data, but the deterministic framework code created the execution sink.

Mechanism & 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

    GitHub publishes CVE-2026-26030 advisory

    report

    The advisory identifies the patched Semantic Kernel Python version.

  2. May 7, 2026

    Microsoft publishes technical exploit analysis

    followup

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

Claims & evidence

reported findingsupported

Microsoft 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.

reported findingsupported

Microsoft demonstrated an AST-validation bypass that traversed Python class metadata to load os and execute a shell command.

reported findingsupported

Microsoft traces the exploit to model-controlled string interpolation into a Python lambda expression that is executed with eval().

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 & 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.

What remains unknown

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

Cite this record

DiggingBeagle. “Semantic Kernel prompt injection reached host code execution.” First seen Feb 19, 2026. https://diggingbeagle.com/cases/semantic-kernel-prompt-injection-reached-host-code-execution/

Citation guidance

Why this archive exists

The source matters after the headline fades.

DiggingBeagle is a non profit research project documenting AI security incidents, agent failures, vulnerabilities and AI-assisted operations. A case keeps its claims beside the sources that support, contest or limit them. Later updates stay visible, so a reader can see when the account changed.

We publish case reconstructions, dated reporting and analysis across records. Each has a different evidentiary role. About the project and our methodology explain how the work is reviewed.