Endpoint Manager Mobile (EPMM)
CVE-2026-1281: Ivanti EPMM zero-day gives attackers code execution without a login
A bash injection in EPMM's app store URL handling lets unauthenticated attackers run commands on the appliance (CVSS 9.8). Exploited as a zero-day, then mass-exploited, with sleeper web shells and theft of the EPMM database.
Published Updated
Affected and fixed versions
| Product / branch | Fixed in |
|---|---|
| EPMM 12.5.0.x, 12.6.0.x, 12.7.0.x (12.7.0.0 and prior) | RPM 12.x.0.x, or upgrade to 12.7.0.1, 12.8.0.1 or later |
| EPMM 12.5.1.0, 12.6.1.0 and prior | RPM 12.x.1.x, or upgrade to 12.6.1.1 or later |
| Neurons for MDM (cloud), Endpoint Manager (EPM), Sentry | Not affected |
Always confirm against the vendor advisory, which lists every fixed hotfix.
What it is
Ivanti EPMM (formerly MobileIron Core) uses old bash scripts behind Apache RewriteMap rules to build URLs for its In-House Application Distribution feature. The script, /mi/bin/map-appstore-url, takes values from the request and later compares one of them in a bash arithmetic expression. By pointing that value at a second variable that holds a command substitution, an attacker gets bash to run the command. The request needs no login: a GET to /mifs/c/appstore/fob/... is enough.
The twin bug CVE-2026-1340 is the same flaw in a second script, /mi/bin/map-aft-store-url, behind the Android File Transfer feature (/mifs/c/aftstore/fob/...). Patch and hunt for both together.
Ivanti disclosed both as zero-days. watchTowr published a working request the next day, and exploitation went from targeted to automated within a week. EPMM holds your mobile device inventory, users, LDAP configuration and the policies pushed to every phone, so a compromised server affects more than itself.
Attackers used the access for:
- Dormant in-memory loaders (“sleeper” web shells) at
/mifs/403.jsp, consistent with an access broker preparing appliances for resale (Defused). - JSP web shells, reverse shells, the Nezha monitoring agent and other malware (Unit 42).
- Dumps of the
mifsdatabase (users, devices, LDAP server configuration, password history) and archives of/mi/files/system, downloaded and then deleted (Telekom Security).
In May, Ivanti disclosed CVE-2026-6973, an exploited flaw that needs EPMM admin credentials, and said customers who rotated credentials after a CVE-2026-1281 or CVE-2026-1340 compromise face significantly less risk from it.
Am I affected?
You’re affected if you run on-premises EPMM 12.7.0.0 or earlier (including the 12.5.1.0 and 12.6.1.0 lines) and you haven’t either:
- applied the January 2026 RPM for your branch after your last upgrade, or
- upgraded to 12.6.1.1, 12.7.0.1, 12.8.0.1 or later.
The RPM does not survive a version upgrade. If you applied it and then upgraded to another version without the fix, you are exposed again.
Not affected: Ivanti Neurons for MDM (cloud), Ivanti Endpoint Manager (EPM) and Ivanti Sentry.
NCSC-NL told all EPMM users to assume compromise and investigate. BSI, quoted by Telekom Security, said exploitation may have started as early as summer 2025, and that appliances should be treated as compromised even if they were patched on disclosure day.
What to do
1. Upgrade. Move to the newest EPMM release for your branch: 12.6.1.1, 12.7.0.1, 12.8.0.1 or later. These include the fix, so the January RPM is no longer needed. Ivanti has fixed more EPMM flaws since, so pick the newest build available, not just the minimum.
2. If you can’t upgrade tonight, apply the RPM for your branch. It needs no downtime.
RPM 12.x.0.xfor 12.5.0.x, 12.6.0.x and 12.7.0.xRPM 12.x.1.xfor 12.5.1.0 and 12.6.1.0
Reapply it after every version upgrade until you’re on a fixed release.
3. Check for compromise, even if you patched on day one. Run Ivanti’s exploitation detection script (built with NCSC-NL) and follow Ivanti’s analysis guidance. Review your SIEM or syslog copy of the logs, not only the logs on the appliance, since attackers deleted their own files. Defused advises restarting the application servers after patching to clear any in-memory loader, since it never touches disk.
4. If you find signs of compromise:
- Don’t clean the appliance in place. Ivanti says to restore from a known-good backup or build a new EPMM and migrate to it.
- Rotate every credential the appliance held: admin accounts, the LDAP bind account, and any service or API accounts. Ivanti tied this step to lower risk from the admin-level flaw CVE-2026-6973.
- Review admin accounts, SSO and LDAP settings, the apps and policies pushed to devices, and VPN or network configuration for changes.
- Check systems reachable through Ivanti Sentry for reconnaissance and lateral movement.
- Treat the user, device and LDAP data in the database as stolen.
Detection
Web and proxy logs (look back to at least January 2026):
- GET requests to
/mifs/c/appstore/fob/or/mifs/c/aftstore/fob/that containgPath[ortheValue, especially with longh=orst=parameters (Unit 42, watchTowr). Response codes are often 404 even when the command ran. - Requests that hang for about five seconds. Attackers used
sleep 5to test whether a target was vulnerable (Unit 42). - Any request to
/mifs/403.jsp, especially with the parameterk0f53cf964d387or a large Base64 value starting withyv66vg. Responses containing3cd3d,e60537orERROR://(Defused). - Requests to
401.jsp,1.jspor/favicon.pngunder the external web root, and downloads of/tmpor/tmpnofrom it (Telekom Security). - The user agent
Edg/143.0.0.1.
Network:
- DNS lookups or outbound connections from EPMM to OAST and request-catcher services:
oast.live,oast.fun,oast.site,oast.me,oast.pro,oastify.com,webhook.site,requestrepo.com,ceye.io,eyes.sh,interacth3.io,cdn365.topandngrok-free.app(Unit 42, Telekom Security). - Outbound connections on 443 to the reverse-shell addresses listed above, and downloads of the Nezha monitoring agent (Unit 42).
On the appliance (with Ivanti support):
- New or modified JSP files in
/mi/tomcat/webapps/mifs/, and.csswrite-test files under itscss/folder. /var/www/ext/html/favicon.pngthat isn’t an image, and odd one- or two-character files in/,/tmpand/var/tmp. BSI saw 7z-compressed malware there.- The setuid bit set on
/usr/bin/envor/bin/sh, a binary namedsysd, and evidence ofmysqldump --databases mifsortarof/mi/files/system.
Indicators of compromise
Many source IPs are VPN exits, rented servers or residential proxies. Use them to hunt in historical logs. Exploitation was mass-scale, so absence of these indicators does not mean an appliance is clean.
The .txt list has one IP per line and a fixed address, so a firewall can pull it as an External Dynamic List: https://patchtonight.com/iocs/CVE-2026-1281.txt
| Indicator | Type | Reported by |
|---|---|---|
| 193.24.123[.]42 | IP83% of exploitation sessions, Feb 1-9 | GreyNoise |
| 86.106.143[.]200 | IPReverse shell, port 443 | Unit 42, Telekom Security |
| 23.227.199[.]80 | IPReverse shell, port 443 | Unit 42, Telekom Security |
| 91.193.19[.]12 | IPReverse shell, port 443 | Unit 42, Telekom Security |
| 146.70.41[.]193 | IPReverse shell, port 443 | Unit 42, Telekom Security |
| 193.242.184[.]234 | IPReverse shell, port 443 | Unit 42, Telekom Security |
| 192.242.184[.]234 | IP | Unit 42, Telekom Security |
| 217.148.142[.]48 | IPReverse shell, port 443 | Telekom Security |
| 45.76.28[.]252 | IPServed update.sh on port 8083 | Telekom Security |
| 64.7.199[.]177 | IPPorts 10882, 18899 | Unit 42 |
| 83.138.53[.]139 | IP | Unit 42 |
| 84.72.235[.]18 | IPPort 443 | Unit 42 |
| 107.173.231[.]201 | IPPort 6666 | Unit 42 |
| 130.94.41[.]206 | IPPorts 8082, 10808 | Unit 42 |
| 138.226.247[.]241 | IP | Unit 42 |
| 144.172.106[.]4 | IP | Unit 42 |
| 152.32.173[.]138 | IPPayload downloads | Unit 42 |
| 158.247.199[.]185 | IPPort 80 | Unit 42 |
| 185.173.235[.]232 | IP | Unit 42 |
| 194.78.67[.]253 | IPPort 443 | Unit 42 |
| 198.13.158[.]58 | IPPort 8443 | Unit 42 |
| 204.251.198[.]205 | IPPort 443 | Unit 42 |
| 104.219.171[.]96 | IP403.jsp sleeper campaign | Defused |
| 115.167.65[.]16 | IP403.jsp sleeper campaign | Defused, Telekom Security |
| 146.103.53[.]35 | IP403.jsp sleeper campaign | Defused |
| 148.135.183[.]63 | IP403.jsp sleeper campaign | Defused |
| 151.247.221[.]59 | IP403.jsp sleeper campaign | Defused |
| 185.240.120[.]91 | IP403.jsp sleeper campaign | Defused, Telekom Security |
| 185.239.140[.]40 | IP403.jsp sleeper campaign | Defused |
| 77.78.79[.]243 | IP403.jsp sleeper campaign | Defused, Telekom Security |
| gobygo[.]net | DomainSubdomains used for callbacks | Unit 42 |
| introo[.]sh | DomainSubdomains used for callbacks | Unit 42 |
| 097b051c9c9138ada0d2a9fb4dfe463d358299d4bd0e81a1db2f69f32578747a | SHA-256base.Info in-memory loader (SHA-256) | Defused |
| 2e29ad27b64874bfcb0c926fa324465243844ca8d36ab2db9ab79cf4d787b513 | SHA-256Malware dropped as sysd (SHA-256) | Telekom Security |
| /mi/tomcat/webapps/mifs/403.jsp | File pathSleeper web shell | Defused, Unit 42, Telekom Security |
| /mi/tomcat/webapps/mifs/401.jsp | File pathWeb shell | Unit 42, Telekom Security |
| /mi/tomcat/webapps/mifs/1.jsp | File pathWeb shell | Unit 42 |
| /var/www/ext/html/favicon.png | File pathPersistent web shell | BSI, via Telekom Security |
| /var/www/ext/html/tmp | File pathStaged database dump | Telekom Security |
| /var/www/ext/html/tmpno | File pathStaged archive of /mi/files/system | Telekom Security |
| /mi/tomcat/webapps/mifs/css/poc.css | File pathWrite test; also test.css, cssaaa.css, login.css | Unit 42 |
| Edg/143.0.0.1 | User agentMalformed Edge user agent | Telekom Security |
Sources
- Ivanti security advisory (CVE-2026-1281 and CVE-2026-1340)
- CISA Known Exploited Vulnerabilities catalog
- Unit 42 threat brief
- watchTowr technical analysis
- Defused, 403.jsp sleeper shells
- GreyNoise, exploitation traffic
- Telekom Security, mass exploitation and incident findings
- Tenable, advisory summary and RPM mapping
- Canadian Centre for Cyber Security AV26-068
- Help Net Security, Ivanti disclosure and recovery guidance
- Help Net Security, sleeper web shells and NCSC-NL
- Help Net Security, May 2026 EPMM release
Page changelog
- Full analysis published.
KEV status, EPSS score and vendor data refreshed automatically, last on 13 Oct 2026.