Use case sources
Source reports and analysis supporting this case are listed below. AITBM interpretation and any indicative scoring are derived from this public evidence.
Linked library records
Independent products or attack paths are assessed separately. A combined report receives no aggregate score.
Original report record: Prompt-to-Shell: Dual RCE Paths in Microsoft Semantic Kernel.
Microsoft reproduced a prompt-to-host command path in Semantic Kernel Python when a SearchPlugin input reached an InMemoryVectorStore filter built with eval(). The blocklist and empty builtins did not stop the crafted filter. Affected applications must use the default filter configuration before 1.39.4.
ASSESSED SYSTEM
Representative hotel-finder style AI agent using Semantic Kernel Python before 1.39.4, with SearchPlugin backed by the default InMemoryVectorStore filter.
OUT OF SCOPE
Other vector backends, patched Python 1.39.4 and later, .NET SessionsPythonPlugin, production exploitation, and any alleged general model weakness.
Architecture: Tool-Calling LLM / Connected GenAI (decision tree Q3) — Q2 autonomy is not established for this single search call; Q3 applies because the model invokes SearchPlugin, which accesses the vector store and host code. Tier 3: Tier 3 representative developer or internal AI workflow scenario; the original source does not establish every operator tier.
Documented attack or failure path
- An attacker influenced the agent prompt or content used for a SearchPlugin call.
- The model produced a filter parameter that was interpolated into Python code and evaluated.
- The researcher bypassed the AST blocklist and executed a shell command on the host.
Observed controls and bounded outcomes
Positive credit is given only where the record directly demonstrates a control operating. Recommended or merely presumed controls receive no positive scoring credit.
- The maintainer fixed this path in the specified patched release; the fix is outside the scored pre-fix representative.
Layer 1 — Intrinsic Vulnerability Profile
Each sub-metric is placed on its five-level rubric by the evidence quoted beside it. Missing applicable evidence remains unknown. The displayed midpoint and interval are scenario values, not inferred control performance.
| Sub-metric | Score | Rubric basis | Evidence |
|---|---|---|---|
| Robustness (Ro) — scenario interval 0.00–1.00 (midpoint 0.50), Tier 3 MVT 0.40 indeterminate | |||
| Fairness (Fa) — scenario interval 0.00–1.00 (midpoint 0.50), Tier 3 MVT 0.45 indeterminate | |||
| Transparency (Tr) — scenario interval 0.00–1.00 (midpoint 0.50), Tier 3 MVT 0.45 indeterminate | |||
| Privacy (Pr) — scenario interval 0.00–1.00 (midpoint 0.50), Tier 3 MVT 0.50 indeterminate | |||
| Containment (Cn) — scenario interval 0.00–0.88 (midpoint 0.44), Tier 3 MVT 0.50 indeterminate | |||
| Cn-1Scope Enforcement | 0.00w 0.12 | The tool path accepted model-controlled content beyond the intended data lookup scope and executed host commands; this meets the 0.00 Cn-1 scope anchor. | Microsoft demonstrated an agent SearchPlugin call with model-controlled filter content reaching eval() and executing a host command despite the filter blocklist.source: primary report |
Unknown, not N/A: 25 applicable sub-metrics lack admissible public evidence. The lower, midpoint, and upper scenarios evaluate each at 0.00, 0.50, and 1.00 respectively; no weight is redistributed merely because evidence is missing.
Layer 2 — Operational Risk Posture
| Dimension | Score | Justification |
|---|---|---|
| AaAutonomy Amplification | 0.50w 0.20 | Representative activity level for the documented bounded AI path; deployment-specific autonomy was not measured. |
| AsAttack Surface Exposure | 0.75w 0.25 | Representative exposure of the documented entry path; this is a scenario assumption and not a census of all operators. |
| CpCascade Potential | 1.00w 0.30 | No verified System Dependency Graph or DGC is published, so framework worst-case Cp default applies.GDCP: worst-case default — no verified dependency graph published elevated |
| RfRemediation Feasibility | 0.25w 0.25 | A specific patch or configuration change is documented; repair feasibility is an inferred representative scenario, not measured recovery time. |
Nelevated = 1 (dimensions strictly above 0.75) → CRM = 1.00.
Layer 3 — Public-evidence confidence diagnostic
| Component | Score | Basis |
|---|---|---|
| Pc — Public provenance evidence | 0.25 | Minimal public provenance identifies the affected path but supplies no operator assessment pack, signed configuration inventory, or repeated metric battery. |
| Ec — Public evaluation coverage | 0.03 | coverage 0.04 (1 of 26 applicable sub-metrics) × independence 0.80 × fidelity 0.95. No Full, Standard, or Lite pathway is claimed for a retrospective article. |
| Tf — Public-evidence freshness | 0.40 | Evidence dated 2026-02-19; age 241 days on the workpaper reference date. Components: T_calendar 0.40 · C_monitor 0.70. Binding term: T_calendar. Evidence reference is 2026-10-18, 241 days after earliest substantive public evidence (2026-02-19). C_monitor uses the conservative Tier 3 public-evidence default because usable monitoring-coverage evidence is unavailable; it does not assert no deployment telemetry. No C_event cap is asserted from research or an advisory without a dated victim incident. No generic C_evidence cap is assigned from missing public inputs. Indicative ERS uses normalized ACI = 1.00 for comparison only. |
Public-evidence ACI = (Pc × Ec × Tf)1/3 = 0.14 — diagnostic status: Invalid as assessment-of-record evidence. It describes the evidence available to this case study, not the assurance of the underlying system, and is not inserted into the normalized-assurance scenario ERS.
Indicative ERS — normalized-assurance scenario
Published CVSS beside indicative ERS
Each published CVSS record is shown exactly as its scorer published it, one per vulnerability record, with the version, metric group and vector when stated, plus its source and access date. Records are never combined or inferred from a CVE's existence.
INDICATIVE ERS · NORMALIZED-ASSURANCE SCENARIO
3.8 midpoint, interval 1.1–6.5; Low-Moderate scenario band; ACI fixed at 1.00. The published CVSS records do not enter this calculation.
PUBLISHED CVSS · 1 record
CVE-2026-26030 CVSS 3.1 Base 9.9 Critical
| Published score | 9.9 |
|---|---|
| CVSS version | 3.1 |
| Metric group | Base |
| Severity | Critical |
| Vector | CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H |
| Scored by | Microsoft Semantic Kernel maintainer advisory |
| Source record | https://github.com/microsoft/semantic-kernel/security/advisories/GHSA-xjw9-4gw8-4rqx (accessed 2026-10-18) |
| Affected component | Semantic Kernel Python SearchPlugin InMemoryVectorStore filter before 1.39.4 |
| Scope note | The CVE identifies this exact SDK and tool path in the representative pre-fix agent. |
| Source note | The maintainer advisory publishes 9.9. The current raw CVE record lists 10.0 with the same vector; this entry reproduces the advisory without recalculating. |
CVSS describes an individual vulnerability as its scorer published it. Indicative ERS describes the assessed AI deployment under the normalized-assurance scenario, so the two values are not direct equivalents and neither replaces the other.
WHAT THIS CASE TEACHES
Microsoft reproduced a prompt-to-host command path in Semantic Kernel Python when a SearchPlugin input reached an InMemoryVectorStore filter built with eval(). The blocklist and empty builtins did not stop the crafted filter. Affected applications must use the default filter configuration before 1.39.4.
Sources: Semantic Kernel maintainer advisory — CVE-2026-26030 · Microsoft original researcher technical demonstration (2026-05-07)