Detect CVE-2025-24893 XWiki Platform Eval Injection Exploitation in Elastic Security
Detects exploitation of CVE-2025-24893, an eval injection vulnerability (CWE-95) in XWiki Platform that allows remote code execution via server-side template injection. This CVE is listed in CISA's Known Exploited Vulnerabilities catalog, indicating active exploitation in the wild. Attackers can craft malicious wiki content or URLs containing Groovy/Velocity template expressions that are evaluated server-side, leading to arbitrary code execution under the XWiki process context.
MITRE ATT&CK
Elastic Detection Query
sequence by host.name with maxspan=5m
[network where
(
url.path like~ "*xwiki*" or url.path like~ "*/bin/view*" or url.path like~ "*/bin/edit*" or url.path like~ "*/bin/save*"
)
and
(
url.query like~ "*groovy*" or url.query like~ "*velocity*" or url.query like~ "*%7B%7B*" or
url.query like~ "*%24%7B*" or url.query like~ "*Runtime*" or url.query like~ "*exec(*" or
url.original like~ "*ProcessBuilder*" or url.original like~ "*{{*" or url.original like~ "*${*"
)
]
[process where
process.name in ("java", "sh", "bash", "cmd.exe", "powershell.exe", "python", "python3", "curl", "wget")
and process.parent.name in ("java", "catalina.sh", "wrapper", "jsvc")
] EQL sequence detection correlating XWiki HTTP requests containing eval injection payloads with subsequent child process spawning from the Java/Tomcat parent process, indicating successful RCE via CVE-2025-24893.
Data Sources
Required Tables
False Positives & Tuning
- XWiki installations with legitimate Groovy scripting enabled where admins regularly run server-side scripts causing child process spawning
- Java-based health check or monitoring processes that spawn child processes from within the Tomcat JVM context
- Automated backup or maintenance scripts triggered via XWiki that spawn shell processes as part of normal operation
- Development environments where developers test XWiki extensions that invoke external processes via Groovy scripts
Other platforms for CVE-2025-24893
Testing Methodology
Validate this detection against 4 adversary techniques from Atomic Red Team. Each test below lists the behaviour to exercise and the telemetry you should expect to see. Executable commands and cleanup steps are available with Pro.
- Test 1XWiki Velocity Template Expression Injection via URL Parameter
Expected signal: Web server access log entry for GET request to /xwiki/bin/view/Main/WebHome with URL-encoded Velocity expression `#set($rt=$x.class.forName("java.lang.Runtime"))` and `exec("id")` in query parameters; Syslog or Java log entry showing Velocity evaluation; possible child process `id` spawned from Java parent.
- Test 2XWiki Groovy Script Injection via Wiki Page Edit API
Expected signal: Web server access log showing PUT request to /xwiki/rest/wikis/xwiki/spaces/Main/pages/ with XML body containing `{{groovy}}` and `execute()` content. XWiki application log showing Groovy script evaluation event. Process event showing `id` command execution as child of Java process if the page is subsequently rendered.
- Test 3XWiki Post-Exploitation Reverse Shell via Groovy RCE
Expected signal: Process event showing `bash` child process spawned from Java parent with command line containing `/dev/tcp/` indicating reverse shell. Network connection event from Java/bash process to attacker IP on port 4444. XWiki application log showing Groovy script evaluation. Syslog entries showing bash process activity under the XWiki service account.
- Test 4XWiki Eval Injection Scanner Simulation
Expected signal: Multiple web server access log entries within a short time window for GET requests to /xwiki/bin/view/Main/WebHome with varying URL-encoded Groovy, Velocity, and FreeMarker injection payloads in query parameters from the same source IP.
Unlock Pro Content
Get the full detection package for CVE-2025-24893 including response playbook, investigation guide, and atomic red team tests.