Like leaving the master key to every phone in your company taped to the front door while a state spy watches
CVE-2025-4427 is an authentication bypass in Ivanti Endpoint Manager Mobile (EPMM, formerly MobileIron) versions 12.5.0.0 and prior, including branches 12.4.x, 12.3.x, and 11.12.x. The flaw exists because Spring Security's <intercept-url> rules are missing for the /mifs/rs/api/v2/ route prefix, meaning bean validation on endpoints like /rs/api/v2/featureusage executes before authentication is enforced. By itself the bypass exposes only limited read access — hence the vendor's CVSS 5.3. But it chains trivially with CVE-2025-4428**, a Java Expression Language injection in DeviceFeatureUsageReportQueryRequestValidator, turning one unauthenticated GET request into full remote code execution as the EPMM service account.
Ivanti's MEDIUM 5.3 score for this CVE is indefensible in practice. The authentication bypass is the gate to a weaponized RCE chain that has been actively exploited by a China-nexus espionage group since at least May 15, 2025. CISA added both CVEs to KEV on May 19, 2025 and released a dedicated malware analysis report on September 18, 2025. EPSS sits at 0.99927 — the 99.9th percentile. Public Metasploit modules, Nuclei templates, and Python PoCs exist. Compromised EPMM instances have yielded LDAP credentials, Office 365 tokens, device IMEIs, phone numbers, and location data for entire mobile fleets. Scoring this chain as anything less than CRITICAL ignores how MDM platforms sit at the center of enterprise mobile trust.
5 steps from start to impact.
Identify internet-facing EPMM instance
/mifs/ path and default EPMM login pages. GreyNoise documented a 9× scanning surge against Ivanti products in April 2025, weeks before disclosure. Censys observed approximately 174 exposed instances at the time of advisory publication.- EPMM instance reachable on TCP/443 from the internet
- Some orgs front EPMM with a reverse proxy or VPN, but EPMM is architecturally designed to be internet-facing so mobile devices can enroll
Bypass authentication via missing intercept-url (CVE-2025-4427)
/mifs/rs/api/v2/featureusage with a crafted format parameter. Because Spring Security's configuration uses use-expressions="false" and lacks <intercept-url> patterns for the /rs/api/v2/ prefix, the request reaches the Hibernate bean validator before** any authentication check fires. No credentials, tokens, or cookies are needed.- HTTP(S) access to EPMM port 443
- EPMM version ≤ 12.5.0.0 unpatched
- Literally zero friction — single GET request, no auth, no user interaction
web_invanti_epmm_cve_2025_4427_and_cve_2025_4428.yml in SigmaHQ. WAF rules matching /rs/api/v2/featureusage with format= containing ${ patterns. Emerging Threats IDS signatures available.Achieve RCE via EL injection (CVE-2025-4428)
format parameter value is embedded into a constraint violation message processed by Spring's AbstractMessageSource.getMessage(). The {0} placeholder triggers Java Expression Language evaluation on the attacker's input. A payload like ${""getClass().forName('java.lang.Runtime').getMethod('getRuntime').invoke(null).exec('id')} executes arbitrary OS commands as the EPMM service account. The entire chain is a single unauthenticated GET request.- Successful auth bypass from step 2
- Vulnerable EPMM version with unpatched DeviceFeatureUsageReportQueryRequestValidator
- None — public Metasploit module
exploit/multi/http/ivanti_epmm_rce_cve_2025_4427_4428automates the entire chain
Establish persistence and deploy C2
/mifs/401.jsp, /mifs/css/css.css, /mifs/session.jsp. The Auto-Color Linux backdoor with DNS tunneling capabilities is also deployed for redundant access. FRP (Fast Reverse Proxy) is installed for SOCKS5 tunneling.- RCE achieved in step 3
- Outbound network access from EPMM to attacker infrastructure
- Network egress filtering could block C2 callbacks, but EPMM needs outbound HTTPS by design
- EDR coverage on EPMM appliances is rare — these are typically Linux-based appliances without endpoint agents
.jsp files in /mifs/ webroot. Sliver beacon traffic patterns. DNS tunneling detection for Auto-Color. FRP binary hash detection.Harvest credentials and fleet data
/mi/files/system/.mifpp and uses mysqldump to extract the mifs database. Tables mifs_ldap_server_config, mifs_ldap_users, and mi_user contain enterprise LDAP bind credentials, user records, Office 365 OAuth tokens, device IMEIs, phone numbers, and GPS location data. Tomcat heap dumps via jcmd yield additional in-memory credentials. This data enables lateral movement into Active Directory and cloud identity systems.- Persistent access from step 4
- EPMM connected to enterprise LDAP/AD (standard deployment)
- Almost none — LDAP integration is the norm for EPMM, and credentials are stored locally on the appliance
mysqldump or jcmd process execution. LDAP bind from unexpected source IPs after credential theft.The supporting signals.
| In-the-Wild Exploitation | Confirmed active. China-nexus espionage group exploiting since May 15, 2025. Targets span healthcare, telecom, aviation, government, finance, and defense across Europe, North America, and Asia-Pacific (EclecticIQ). CISA published malware analysis report AR25-261a on 2025-09-18. |
|---|---|
| PoC / Exploit Availability | Weaponized. watchTowr Labs published PoC on 2025-05-15. Metasploit module exploit/multi/http/ivanti_epmm_rce_cve_2025_4427_4428 (EDB-52421). Nuclei template from ProjectDiscovery. Multiple Python exploit scripts on GitHub. |
| EPSS Score | 0.99927 (99.9th percentile) — maximum practical exploitation probability |
| KEV Status | Listed. Added 2025-05-19. CISA due date applies to federal agencies. Both CVE-2025-4427 and CVE-2025-4428 listed simultaneously. |
| CVSS Vector | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N (vendor, 5.3 for bypass alone). Chained with CVE-2025-4428 the effective vector is AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H = 9.8. The vendor scored each CVE in isolation, ignoring the trivial chain. |
| Affected Versions | EPMM ≤ 11.12.0.4, ≤ 12.3.0.1, ≤ 12.4.0.1, ≤ 12.5.0.0 — effectively all supported branches prior to May 2025 patches |
| Fixed Versions | 11.12.0.5, 12.3.0.2, 12.4.0.2, 12.5.0.1. Patch adds <intercept-url> rules and removes user input from EL-evaluated message parameters. |
| Scanning / Exposure | Censys observed ~174 internet-facing EPMM instances at advisory time. GreyNoise documented 9× scanning surge against Ivanti products in April 2025 preceding disclosure. EPMM is architecturally internet-facing for mobile device enrollment. |
| Disclosure Timeline | 2025-05-13 Ivanti advisory → 2025-05-15 watchTowr PoC → 2025-05-19 CISA KEV → 2025-09-18 CISA malware analysis report |
| Researcher / Reporter | watchTowr Labs (PoC and root-cause analysis). EclecticIQ (threat actor attribution). Wiz Threat Research (ITW exploitation telemetry). CISA (malware analysis AR25-261a). |
Why this verdict
- Trivial unauth RCE chain: CVE-2025-4427 + CVE-2025-4428 combine into a single unauthenticated GET request yielding full remote code execution. The vendor scored each CVE in isolation (5.3 + 7.2), but the chain's effective CVSS is 9.8. No credentials, no user interaction, no complexity.
- Nation-state exploitation with custom malware: A China-nexus espionage group has been actively exploiting this chain since May 2025, deploying KrustyLoader, Sliver, Auto-Color, and JSP webshells. CISA published a dedicated malware analysis report (AR25-261a) in September 2025. This is not theoretical.
- Internet-facing by design: EPMM must be reachable from the internet for mobile device enrollment. Unlike most enterprise software where "internet exposure" is a misconfiguration, EPMM's attack surface is architectural. Censys confirmed ~174 exposed instances; the real number is higher given enrollment proxy variants.
- EPSS ceiling and KEV-listed: EPSS of 0.99927 is effectively the maximum score. KEV-listed since May 19, 2025. Every quantitative exploitation signal is at maximum.
- Role multiplier: EPMM is a Mobile Device Management platform — 100% of its installs ARE the high-value role. Compromise yields LDAP bind credentials, Office 365 OAuth tokens, device IMEIs, phone numbers, and GPS locations for the entire managed mobile fleet. Observed threat actors dumped the full
mifsdatabase. The blast radius is fleet-scale (all managed mobile devices) and identity-scale (enterprise AD/LDAP credentials and cloud tokens). This is functionally equivalent to compromising an identity provider. The floor is CRITICAL. - Weaponized tooling eliminates skill barrier: Metasploit module, Nuclei template, ExploitDB entry, and multiple Python scripts mean any script kiddie can replicate what a nation-state APT did first. The window between "targeted espionage" and "mass exploitation" has closed.
Why not higher?
A 9.8 is effectively the ceiling for a network-exploitable unauth RCE. The only thing preventing a 10.0 is that EPMM's Scope is Unchanged in CVSS terms — the RCE lands on the EPMM appliance itself, and lateral movement to AD/cloud requires the secondary step of credential harvesting from the database, not direct cross-system execution.
Why not lower?
Every downward pressure point is absent here. There is no authentication barrier (that IS the bypass). There is no complexity barrier (single GET request). There is no user interaction requirement. The target is internet-facing by architecture, not misconfiguration. The product is canonically a high-value-role component managing enterprise mobile fleets and storing identity credentials. Active nation-state exploitation with custom malware confirms real-world impact. Scoring this below CRITICAL would require ignoring the chain, the exploitation evidence, and the deployment role — none of which a defender can responsibly do.
What to do — in priority order.
- Patch immediately to 12.5.0.1, 12.4.0.2, 12.3.0.2, or 11.12.0.5 — This is the only complete fix. Given CRITICAL verdict and active exploitation, the noisgate mitigation SLA demands action within 3 days. The noisgate remediation SLA is 90 days, but with KEV listing and active exploitation, treat patching as the immediate mitigation — do not wait.
- Restrict network access to EPMM management API — If you cannot patch within hours, place a WAF or reverse proxy rule blocking access to
/mifs/rs/api/v2/featureusageand/mifs/rs/api/v2/featureusage_historyfrom all sources except trusted management IPs. Mobile device enrollment uses different endpoints. Deploy within 3 days per noisgate mitigation SLA. - Deploy WAF rules blocking EL injection patterns — Block query parameters containing
${and Java reflection patterns (getClass,forName,getRuntime,exec) in theformatparameter. Emerging Threats IDS signatures are already available. This is defense-in-depth, not a substitute for patching. - Audit EPMM for indicators of compromise — Check for JSP files in
/mifs/webroot (especially401.jsp,css/css.css,session.jsp,baseURL.jsp). Search for unexpected processes spawned by Tomcat. Review MySQL query logs formysqldumpofmifs_ldap_server_configormifs_ldap_users. Check/tmp/for KrustyLoader artifacts. Compare against IOCs from CISA AR25-261a and EclecticIQ reporting. - Rotate LDAP bind credentials and O365 tokens — If your EPMM instance was unpatched and internet-facing at any point since May 13, 2025, assume the LDAP bind credentials stored in the
mifsdatabase are compromised. Rotate immediately. Revoke and reissue any Office 365 OAuth tokens managed through EPMM. - Monitor for lateral movement from EPMM network segment — EPMM appliances typically have LDAP/AD connectivity. Watch for authentication attempts using EPMM's LDAP bind account from unexpected sources. Enable enhanced AD audit logging for the service account.
- Endpoint Detection and Response (EDR) on EPMM: Most EPMM deployments are Linux-based appliances that do not run enterprise EDR agents. Even if an agent is present, the initial exploitation is a legitimate HTTP request processed by Tomcat — no malware touches disk until post-exploitation.
- Network segmentation alone: EPMM must be internet-facing for mobile devices to enroll and check in. You cannot simply firewall it off without breaking its core function. Segmentation helps limit post-compromise lateral movement but does not prevent initial exploitation.
- TLS inspection / certificate pinning: The exploit is a standard HTTPS GET request with malicious query parameters. TLS inspection sees legitimate-looking HTTP traffic. Certificate pinning is irrelevant since the attacker connects directly to EPMM, not through a MITM.
- Rate limiting: The exploit requires a single HTTP request. Rate limiting has no effect on a one-shot attack.
Crowdsourced verification payload.
Run this script on the EPMM appliance itself (or any host with curl and network access to the target). Execute as: bash check_cve_2025_4427.sh https://epmm.example.com. No special privileges required — it only sends an HTTP GET request and parses the response.
#!/usr/bin/env bash
# check_cve_2025_4427.sh — Detect CVE-2025-4427 authentication bypass in Ivanti EPMM
# Usage: bash check_cve_2025_4427.sh <EPMM_BASE_URL>
# Exit codes: 0=VULNERABLE, 1=PATCHED, 2=UNKNOWN
set -euo pipefail
if [[ $# -lt 1 ]]; then
echo "Usage: $0 <EPMM_BASE_URL>"
echo "Example: $0 https://epmm.example.com"
exit 2
fi
BASE_URL="${1%/}"
TEST_URL="${BASE_URL}/mifs/rs/api/v2/featureusage?format=noisgate_probe"
echo "[*] Testing CVE-2025-4427 auth bypass on: ${BASE_URL}"
echo "[*] Sending unauthenticated request to /mifs/rs/api/v2/featureusage"
HTTP_CODE=$(curl -sk -o /tmp/cve_2025_4427_resp.txt -w '%{http_code}' \
--connect-timeout 10 --max-time 15 \
"${TEST_URL}" 2>/dev/null || echo "000")
RESP_BODY=$(cat /tmp/cve_2025_4427_resp.txt 2>/dev/null || echo "")
rm -f /tmp/cve_2025_4427_resp.txt
echo "[*] HTTP response code: ${HTTP_CODE}"
if [[ "${HTTP_CODE}" == "000" ]]; then
echo "UNKNOWN — Could not connect to ${BASE_URL}"
exit 2
fi
# Patched instances return 401/403 for unauthenticated API access
# Vulnerable instances return 400 with validation error containing the format value
if [[ "${HTTP_CODE}" == "400" ]] && echo "${RESP_BODY}" | grep -qi "noisgate_probe"; then
echo "VULNERABLE — Server processed unauthenticated request and reflected format parameter."
echo "[!] CVE-2025-4427 authentication bypass confirmed. The format value was reflected"
echo " in validation error, confirming CVE-2025-4428 EL injection surface is reachable."
echo "[!] Patch immediately to 12.5.0.1 / 12.4.0.2 / 12.3.0.2 / 11.12.0.5"
exit 0
elif [[ "${HTTP_CODE}" == "401" ]] || [[ "${HTTP_CODE}" == "403" ]]; then
echo "PATCHED — Server returned ${HTTP_CODE} (authentication enforced)."
exit 1
elif [[ "${HTTP_CODE}" == "400" ]]; then
# 400 without reflection may indicate partial patch or different config
if echo "${RESP_BODY}" | grep -qi "format"; then
echo "VULNERABLE — Server returned 400 with format-related error without authentication."
exit 0
else
echo "UNKNOWN — Server returned 400 but response is ambiguous. Manual review needed."
echo "Response preview: ${RESP_BODY:0:200}"
exit 2
fi
elif [[ "${HTTP_CODE}" == "404" ]]; then
echo "UNKNOWN — Endpoint not found. Verify this is an EPMM instance."
exit 2
else
echo "UNKNOWN — Unexpected HTTP ${HTTP_CODE}. Manual review recommended."
echo "Response preview: ${RESP_BODY:0:200}"
exit 2
fi- Ivanti Security Advisory — EPMM May 2025
- watchTowr Labs — Expression Payloads Meet Mayhem (Root Cause + PoC)
- Wiz Threat Research — EPMM RCE Chain Exploited in the Wild
- EclecticIQ — China-Nexus Threat Actor Exploiting EPMM
- Rapid7 — Ivanti EPMM Exploit Chain Exploited in the Wild
- CISA Malware Analysis Report AR25-261a
- Censys Advisory — EPMM Chained Exploits KEV
- GreyNoise — Ivanti EPMM Zero-Days: Reconnaissance to Exploitation
What defenders are saying.
Crowdsourced verification outputs.
Results submitted by users who ran the verification payload against their environment.