Skip to main content
Live Webinar with SANS (June 25)— Agentic CTI Automation for Fun & ProfitRegister Free
Mallory
CriticalPublic exploit

SpEL Injection RCE in Spring AI SimpleVectorStore

IdentifiersCVE-2026-22738CWE-917· Improper Neutralization of Special…

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.

Share:
For your environment

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.

ANALYST BRIEF

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.

Successful exploitation can result in unauthenticated remote code execution in the context of the vulnerable application. This can enable execution of operating system commands, full compromise of the application process, access to sensitive data reachable by the service, modification of application behavior or stored data, and potential follow-on actions such as lateral movement or service disruption. The published CVSS v3.1 vector AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H indicates high impact to confidentiality, integrity, and availability.

Mitigation

If you can’t patch tonight, do this now.

Do not pass user-supplied input as a filter expression key in SimpleVectorStore. Restrict, sanitize, or hardcode allowable filter keys, and avoid exposing this functionality to untrusted callers until patched versions are deployed. Where feasible, replace StandardEvaluationContext with a more restricted evaluation model such as SimpleEvaluationContext, disable or avoid SpEL evaluation for user-controlled input, and prefer safer query/filter mechanisms that do not interpret attacker-controlled expressions.

Remediation

Patch, then assume compromise.

Upgrade Spring AI to a fixed release: 1.0.5 or later on the 1.0.x branch, or 1.1.4 or later on the 1.1.x branch. In addition, remove any pattern where untrusted input is used as a filter expression key for SimpleVectorStore. Where expression evaluation is required, avoid constructing SpEL expressions through string concatenation with user-controlled data and prefer safer evaluation approaches consistent with the vendor guidance.
PUBLIC EXPLOITS

Exploits

1 valid exploit after Mallory filtered fakes, detection scripts, and README-only repos (1 hidden).

VALID 1 / 2 TOTALView more in app
CVE-2026-22738-POCMaturityPoCVerified exploit

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.

n0n4m3x41Disclosed Apr 2, 2026pythondockerfilenetworkweb
EXPOSURE SURFACE

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.

VendorProductType
BroadcomSpring Aiapplication
BroadcomSpring Ai Vector Storeapplication

Vendor-confirmed product mapping. Mallory continuously reconciles this list against your asset inventory.

What this page doesn’t show

The version that knows your environment.

This page is what’s public. Mallory adds the parts that aren’t: which of your assets are affected, which adversaries are exploiting it right now, which detections to deploy, and what to do tonight.
Exposure mapping

Query your assets running an affected version, and investigate the blast radius.

Threat actor evidence

Every observed campaign linking this CVE to a named adversary.

Associated malware

Malware families riding this exploit, with evidence and IOCs.

Detection signatures

YARA, Sigma, Snort, and vendor rules, auto-deployed to your SIEM.

Vendor-by-vendor mapping

Cross-references every affected SKU, including bundled OEM variants.

Social activity16

Community discussion across Reddit, Mastodon, and other social sources.