Ivanti EPMM Code Injection Exploitation (CVE-2026-1340)
Detects exploitation attempts targeting CVE-2026-1340, a code injection vulnerability (CWE-94) in Ivanti Endpoint Manager Mobile (EPMM). This vulnerability is listed in CISA's Known Exploited Vulnerabilities catalog and allows remote attackers to inject and execute arbitrary code via the EPMM management interface. Successful exploitation may lead to full device management compromise, lateral movement, and data exfiltration from enrolled mobile devices.
Vulnerability Intelligence
KEV — Known ExploitedAffected Software
- Vendor
- Ivanti
- Product
- Endpoint Manager Mobile (EPMM)
Weakness (CWE)
Timeline
- Disclosed
- April 8, 2026
References & Proof of Concept
- https://hub.ivanti.com/s/article/Security-Advisory-Ivanti-Endpoint-Manager-Mobile-EPMM-CVE-2026-1281-CVE-2026-1340?language=en_US
- https://support.mobileiron.com/mi/vsp/AB1786671/ivanti-security-update-1761642-1.1.0S-5.noarch.rpm
- https://support.mobileiron.com/mi/vsp/AB1786671/ivanti-security-update-1761642-1.1.0L-5.noarch.rpm
- https://nvd.nist.gov/vuln/detail/CVE-2026-1340
CVSS
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
What is CVE-2026-1340 Ivanti EPMM Code Injection Exploitation (CVE-2026-1340)?
Ivanti EPMM Code Injection Exploitation (CVE-2026-1340) (CVE-2026-1340) maps to the Initial Access and Execution and Lateral Movement tactics — the adversary is trying to get into your network in MITRE ATT&CK.
This page provides production-ready detection logic for Ivanti EPMM Code Injection Exploitation (CVE-2026-1340), covering the data sources and telemetry it touches: CommonSecurityLog, W3CIISLog, AzureDiagnostics. The queries below are rated critical severity at medium confidence, and ship for 7 SIEM platforms — KQL, SPL, Elastic, QRadar, Sumo, YARA-L, LogScale.
MITRE ATT&CK
let SuspiciousEPMMPaths = dynamic(["/mifs/", "/mi/", "/api/v1/", "/api/v2/"]);
let InjectionPatterns = dynamic(["eval(", "exec(", "Runtime.exec", "ProcessBuilder", "ScriptEngine", "javax.script", "groovy", "ognl", "${{", "#{{"]);
union isfuzzy=true
(
CommonSecurityLog
| where DeviceVendor has_any ("Ivanti", "MobileIron")
| where RequestURL has_any (SuspiciousEPMMPaths)
| where Message has_any (InjectionPatterns) or RequestURL has_any (InjectionPatterns)
| project TimeGenerated, SourceIP, DestinationIP, RequestURL, RequestMethod, Message, DeviceVendor, DeviceProduct, EventOutcome
),
(
W3CIISLog
| where csUriStem has_any (SuspiciousEPMMPaths)
| where csUriQuery has_any (InjectionPatterns) or csUriStem has_any (InjectionPatterns)
| project TimeGenerated, cIP, csUriStem, csUriQuery, scStatus, csMethod
),
(
AzureDiagnostics
| where Category == "ApplicationGatewayFirewallLog"
| where requestUri_s has_any (SuspiciousEPMMPaths)
| where Message has_any (InjectionPatterns) or details_message_s has_any (InjectionPatterns)
| project TimeGenerated, clientIp_s, requestUri_s, action_s, Message
)
| extend AccountCustomEntity = SourceIP, IPCustomEntity = SourceIP
| summarize EventCount = count(), FirstSeen = min(TimeGenerated), LastSeen = max(TimeGenerated) by SourceIP, RequestURL, RequestMethod
| where EventCount >= 1
| order by LastSeen desc Detects HTTP requests to Ivanti EPMM endpoints containing code injection patterns in request URLs, parameters, or log messages. Covers CommonSecurityLog (network security appliances), W3C IIS logs, and Azure WAF logs.
Data Sources
Required Tables
False Positives
- Legitimate administrative scripts or automation tools interacting with EPMM API that use dynamic expressions in query parameters
- Security scanners or vulnerability assessment tools performing authorized scans of the EPMM management interface
- EPMM internal health check or monitoring agents that generate similar URL patterns
- Penetration testing or red team exercises with prior authorization
Sigma rule & cross-platform mapping
The detection logic for Ivanti EPMM Code Injection Exploitation (CVE-2026-1340) (CVE-2026-1340) above is provided in a vendor-neutral
form so you can deploy it on any SIEM. The same logic is shipped here as native
KQL (Microsoft Sentinel / Defender), SPL (Splunk), Elastic (Elastic Security (EQL)), QRadar (IBM QRadar (AQL)), Sumo (Sumo Logic CSE), YARA-L (Google Chronicle / SecOps), LogScale (CrowdStrike LogScale (CQL)) queries. In Sigma terms, this detection targets the
following logsource:
logsource:
product: azure Browse the community-maintained Sigma rules for this technique:
Platform-specific guides for CVE-2026-1340
References (4)
- https://hub.ivanti.com/s/article/Security-Advisory-Ivanti-Endpoint-Manager-Mobile-EPMM-CVE-2026-1281-CVE-2026-1340?language=en_US
- https://support.mobileiron.com/mi/vsp/AB1786671/ivanti-security-update-1761642-1.1.0S-5.noarch.rpm
- https://support.mobileiron.com/mi/vsp/AB1786671/ivanti-security-update-1761642-1.1.0L-5.noarch.rpm
- https://nvd.nist.gov/vuln/detail/CVE-2026-1340
Testing Methodology
Validate this detection against 3 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 1EPMM API Endpoint Code Injection Pattern Probe
Expected signal: Web server access logs will show POST requests to /mifs/j_spring_security_check and GET requests to /api/v1/configuration/users with URL-encoded injection patterns. Network security appliances should log the requests with high-severity signatures. Host-based EDR should not show process anomalies for a non-successful probe.
- Test 2Simulate Java Process Spawning Shell After EPMM Exploitation
Expected signal: Process creation events showing java spawning /bin/sh as a child process. EDR telemetry should capture the full process tree: [parent] -> java -> sh -> id/hostname/whoami. Command line arguments visible in process creation logs.
- Test 3EPMM Reconnaissance — Unauthenticated API Enumeration
Expected signal: Web access logs showing sequential requests from a single IP to multiple EPMM administrative paths within a short time window. Firewall or IDS/IPS logs may flag the scanning pattern. HTTP response codes (200, 302, 401, 403) visible in logs.
Response Playbook
Triage
- Immediately identify the source IP(s) making requests to EPMM endpoints with injection patterns — determine if the IP is internal, external, a known scanner, or a threat actor infrastructure by cross-referencing threat intelligence feeds and internal asset inventory.
- Review EPMM application logs and web server access logs for the time window around the alert to determine if the injection attempt succeeded (HTTP 200/201 response with unexpected body content, new processes spawned by the EPMM Java process, file writes to unusual paths).
- Check EPMM server process tree and running processes for any child processes spawned by the Tomcat/Java process that would indicate successful code execution (e.g., sh, bash, curl, wget, python, nc spawned as children of java/catalina).
- Enumerate currently enrolled mobile devices managed by EPMM and assess whether device policy configurations or certificates may have been tampered with as a result of compromise.
- Determine the current patch level of the affected EPMM instance and compare against available security updates referenced in the vendor advisory.
Containment
- If exploitation is confirmed or strongly suspected, immediately isolate the EPMM server from the network by blocking inbound and outbound traffic at the perimeter firewall, preserving the system for forensic analysis while preventing further lateral movement or data exfiltration.
- Revoke all active administrative sessions and API tokens for the EPMM management console, reset service account credentials, and invalidate any certificates that may have been exposed or generated by the attacker during the compromise window.
- Apply the vendor-supplied security update immediately on a patched replacement system and restore from a known-good backup if the production system is compromised, following the patching guidance in the Ivanti security advisory.
Evidence Collection
- Collect full EPMM application logs, Tomcat access logs, system logs (/var/log/syslog, /var/log/auth.log), and Java process output logs from the period surrounding the detection alert, ensuring chain-of-custody documentation.
- Capture a memory dump and full disk image of the EPMM server before any remediation actions if forensic investigation is required, preserving volatile artifacts such as running processes, network connections, and in-memory payloads that may not survive a reboot.
- Extract network packet captures from the period of the attack if available via TAP or SPAN port, focusing on traffic to/from the EPMM management port to reconstruct the full exploit payload and any C2 communications.
Escalation Criteria
- ! Escalate immediately to incident response if evidence of successful code execution is found (unexpected child processes, new files written by the EPMM Java process, outbound connections to untrusted IPs initiated by the EPMM server, or unauthorized changes to device management policies).
- ! Escalate to executive leadership and legal/compliance teams if enrolled mobile devices belonging to executives, privileged users, or devices with access to sensitive data may have had their management profiles or certificates compromised, as this may trigger regulatory notification obligations.
Investigation Guide
Forensic Artifacts
- >
EPMM Tomcat access logs: /opt/mi/tomcat/logs/localhost_access_log.*.txt — contains HTTP request records including method, URI, response code, and source IP - >
EPMM application logs: /opt/mi/tomcat/logs/catalina.out — contains Java application output including exception stack traces and script execution events - >
OS process accounting logs showing child processes spawned by the EPMM Java process (PID lineage) - >
File system modifications in EPMM web root (/opt/mi/tomcat/webapps/) indicating web shell deployment - >
Outbound network connections from the EPMM server host to external IPs not associated with Ivanti update infrastructure
Tuning Guidance
Begin with medium confidence and tune based on the specific EPMM version deployed and observed baseline API patterns in your environment. Whitelist known scanner IP ranges (Qualys, Tenable, Rapid7) and internal security testing systems. If EPMM uses custom API plugins that accept script-like input as a feature, add path-based exclusions for those specific endpoints. Monitor HTTP response codes carefully — filter out 400, 403, and 404 responses to focus on potentially successful injection attempts. For high-fidelity detection, correlate HTTP-layer alerts with host-based process tree anomalies (Java spawning shells) to elevate confidence to high. Review EPMM audit logs periodically to establish a baseline of normal administrative API call patterns and adjust thresholds accordingly.
Hunting Queries
Threat hunting query to identify high-volume or broad-scope requestors to EPMM endpoints that overlap with known threat intelligence indicators, useful for identifying reconnaissance or sustained exploitation campaigns over a 30-day window.
CommonSecurityLog
| where DeviceVendor has_any ("Ivanti", "MobileIron")
| where TimeGenerated > ago(30d)
| summarize RequestCount = count(), UniqueURIs = dcount(RequestURL), StatusCodes = make_set(EventOutcome) by SourceIP
| where RequestCount > 50 or UniqueURIs > 20
| join kind=inner (
ThreatIntelligenceIndicator
| where TimeGenerated > ago(30d)
| where Active == true
| summarize by NetworkIP
) on $left.SourceIP == $right.NetworkIP
| project SourceIP, RequestCount, UniqueURIs, StatusCodes index=* sourcetype IN ("ivanti:epmm", "mobileiron") earliest=-30d
| stats count AS total_requests, dc(uri) AS unique_uris, values(status) AS status_codes BY src_ip
| where total_requests > 50 OR unique_uris > 20
| lookup threat_intel_lookup ip AS src_ip OUTPUT threat_category, threat_confidence
| where isnotnull(threat_category)
| sort - total_requests Hunt for process spawning anomalies where the EPMM Java/Tomcat process creates shell or scripting interpreter child processes, which would indicate successful code injection and remote code execution.
SecurityEvent
| where EventID in (4688, 4689)
| where ParentProcessName has_any ("java.exe", "catalina.bat", "tomcat")
| where NewProcessName has_any ("cmd.exe", "powershell.exe", "sh", "bash", "curl", "wget", "python", "nc", "ncat", "python3")
| project TimeGenerated, Computer, ParentProcessName, NewProcessName, CommandLine, SubjectUserName
| order by TimeGenerated desc index=windows OR index=linux sourcetype IN ("WinEventLog:Security", "linux_secure") earliest=-7d
(EventCode=4688 ParentProcessName="*java*" OR ParentProcessName="*catalina*")
(NewProcessName="*cmd.exe*" OR NewProcessName="*powershell*" OR NewProcessName="*bash*" OR NewProcessName="*sh*" OR NewProcessName="*curl*" OR NewProcessName="*wget*" OR NewProcessName="*python*")
| table _time, host, ParentProcessName, NewProcessName, CommandLine, user Atomic Red Team Tests
Simulates an attacker probing the Ivanti EPMM management API with code injection payloads to test for CVE-2026-1340. This sends HTTP requests with OGNL/Groovy expression injection patterns to EPMM API endpoints.
Command
TARGET_EPMM='https://epmm-lab.internal:443'
curl -sk -X POST "${TARGET_EPMM}/mifs/j_spring_security_check" \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'j_username=admin%40example.com&j_password=%25%7B%27test%27.class.forName%28%27java.lang.Runtime%27%29.getMethod%28%27exec%27%2C%27%27.class%29.invoke%28%27%27.class.forName%28%27java.lang.Runtime%27%29.getMethod%28%27getRuntime%27%29.invoke%28null%29%2C%27id%27%29%7D' \
-D - | head -50
curl -sk "${TARGET_EPMM}/api/v1/configuration/users?query=%24%7Bnew%20java.util.Scanner%28Runtime.getRuntime%28%29.exec%28%22id%22%29.getInputStream%28%29%29.useDelimiter%28%22%5C%5CA%22%29.next%28%29%7D" \
-H 'Authorization: Bearer REPLACE_WITH_VALID_TOKEN' \
-D - | head -50 Cleanup
No cleanup required — this is a read-only probe. Review EPMM logs and WAF logs for the generated requests and remove any test entries from EPMM audit logs if applicable. Expected Telemetry
Web server access logs will show POST requests to /mifs/j_spring_security_check and GET requests to /api/v1/configuration/users with URL-encoded injection patterns. Network security appliances should log the requests with high-severity signatures. Host-based EDR should not show process anomalies for a non-successful probe.
Expected Detection
The KQL, SPL, and other SIEM queries should trigger on the URL-encoded OGNL/Groovy injection patterns present in the request URI and POST body. Alert confidence should be medium; elevate if HTTP 200 response is returned.
Simulates the post-exploitation behavior of CVE-2026-1340 by creating a Java process that spawns a shell subprocess, mimicking what would occur if code injection succeeded on the EPMM server. Run on a lab host only.
Command
cat > /tmp/epmm_sim.java << 'EOF'
public class epmm_sim {
public static void main(String[] args) throws Exception {
System.out.println("[EPMM-SIM] Simulating post-exploitation shell spawn");
ProcessBuilder pb = new ProcessBuilder("/bin/sh", "-c", "id && hostname && whoami");
pb.redirectErrorStream(true);
Process p = pb.start();
byte[] output = p.getInputStream().readAllBytes();
System.out.println(new String(output));
p.waitFor();
}
}
EOF
javac /tmp/epmm_sim.java -d /tmp/ && java -cp /tmp epmm_sim Cleanup
rm -f /tmp/epmm_sim.java /tmp/epmm_sim.class Expected Telemetry
Process creation events showing java spawning /bin/sh as a child process. EDR telemetry should capture the full process tree: [parent] -> java -> sh -> id/hostname/whoami. Command line arguments visible in process creation logs.
Expected Detection
Host-based detection rules monitoring for Java/Tomcat spawning shell interpreters should fire. The hunting queries for process tree anomalies (SecurityEvent EventID 4688 equivalent on Linux via auditd) should capture this behavior.
Simulates attacker reconnaissance of an Ivanti EPMM instance prior to exploitation, probing for version disclosure, unauthenticated endpoints, and API surface exposure consistent with pre-exploitation activity for CVE-2026-1340.
Command
TARGET_EPMM='https://epmm-lab.internal:443'
echo '[*] Probing EPMM version disclosure...'
curl -sk "${TARGET_EPMM}/mifs/j_spring_security_check" -o /dev/null -w 'HTTP %{http_code}\n'
curl -sk "${TARGET_EPMM}/api/v1/ping" -o /dev/null -w 'HTTP %{http_code}\n'
curl -sk "${TARGET_EPMM}/mifs/aad/v2/token" -o /dev/null -w 'HTTP %{http_code}\n'
echo '[*] Probing known EPMM admin paths...'
for path in '/mifs/' '/mi/' '/api/v1/config' '/api/v2/system/version' '/mifs/admin'; do
curl -sk -o /dev/null -w "%{url_effective} -> HTTP %{http_code}\n" "${TARGET_EPMM}${path}"
done
echo '[*] Recon complete' Cleanup
No cleanup required. Review EPMM and WAF logs to confirm telemetry was generated for all probed endpoints. Expected Telemetry
Web access logs showing sequential requests from a single IP to multiple EPMM administrative paths within a short time window. Firewall or IDS/IPS logs may flag the scanning pattern. HTTP response codes (200, 302, 401, 403) visible in logs.
Expected Detection
Anomaly-based detections for high request volume from a single IP to EPMM paths should fire. Threat intelligence correlation may flag the source IP if it is known scanning infrastructure. The reconnaissance pattern (many unique URIs from one IP in short window) should be captured by the hunting query.