SpEL Injection RCE in Spring AI SimpleVectorStore
CVE-2026-22738 is a Spring Expression Language (SpEL) injection vulnerability in Spring AI's SimpleVectorStore, specifically in filtering logic used by similaritySearch(), where a caller-controlled filter expression key can be incorporated verbatim into a SpEL expression and evaluated with StandardEvaluationContext. Because StandardEvaluationContext exposes powerful SpEL features including type references and reflective access, an attacker who can control the filter key can inject expressions such as T(java.lang.Runtime).getRuntime().exec(...) and achieve arbitrary code execution. The issue affects Spring AI versions 1.0.0 through 1.0.4 and 1.1.0 through 1.1.3; fixed versions are 1.0.5 and 1.1.4. Only applications that use SimpleVectorStore and pass untrusted user input as a filter expression key are affected.
Are you exposed to this one?
Mallory correlates every CVE against your assets, your vendors, and active adversary campaigns. Know which vulnerabilities matter for you, not just which ones are loud.
Impact, mitigation & remediation
What it means. What to do now. Patch path, mitigations, and the assume-compromise checklist.
Impact
What an attacker gets, and what they’ve been doing with it.
Mitigation
If you can’t patch tonight, do this now.
Remediation
Patch, then assume compromise.
Exploits
1 valid exploit after Mallory filtered fakes, detection scripts, and README-only repos (1 hidden).
This repository is a standalone Python proof-of-concept and local Docker lab for CVE-2026-22738, a critical unauthenticated SpEL injection leading to RCE in Spring AI SimpleVectorStore. The main exploit logic is in exploit.py, which uses requests to send crafted GET requests to a vulnerable /search endpoint. The exploit abuses attacker-controlled filterKey input that is embedded into a SpEL expression and evaluated by StandardEvaluationContext, allowing use of T(java.lang.Runtime).getRuntime().exec(...) for OS command execution. Repository structure: README.md documents the vulnerability, affected versions, exploitation flow, and usage. exploit.py is the operational PoC with helper functions to build SpEL payloads, perform a baseline request, run a blind property-read probe, trigger RCE by creating /tmp/pwned_cve_2026_22738, write command output to /tmp/rce_proof.txt, and optionally verify success with docker exec against the named lab container. docker-compose.yml defines a vulnerable-app service exposing host port 8082 to container port 8080 and names the container cve-2026-22738-lab. Dockerfile builds and runs a Spring Boot application jar. The stages/*.json files are supporting research/compliance/exploitation notes rather than executable exploit components. Main exploit capability: unauthenticated remote command execution over HTTP against vulnerable Spring AI applications that expose user-controlled metadata filter keys. The PoC includes both non-RCE validation (reading java.version) and direct command execution. Success is inferred from the EL1030E SpEL error returned after exec() completes, and in the local lab can be confirmed by inspecting files inside the container. This is a real exploit, not merely a detector, and it is operational but not framework-based.
Affected products & vendors
Products and vendors Mallory has correlated with this vulnerability. Open in Mallory to drill down to specific CPE configurations and version ranges.
Vendor-confirmed product mapping. Mallory continuously reconciles this list against your asset inventory.
Recent activity
20 sources tracked across advisories, community write-ups, and news. New activity surfaces here as Mallory finds it.
A critical Spring AI SpEL injection vulnerability that can lead to remote code execution when user-controlled input is evaluated with StandardEvaluationContext.
A SpEL injection vulnerability in Spring AI SimpleVectorStore that can allow arbitrary code execution when user-supplied input is used as a filter expression key.
A Spring AI vulnerability in SimpleVectorStore where SpEL injection via an unescaped filter key can lead to remote code execution.
The version that knows your environment.
Query your assets running an affected version, and investigate the blast radius.
Every observed campaign linking this CVE to a named adversary.
Malware families riding this exploit, with evidence and IOCs.
YARA, Sigma, Snort, and vendor rules, auto-deployed to your SIEM.
Cross-references every affected SKU, including bundled OEM variants.
Community discussion across Reddit, Mastodon, and other social sources.