← Back to Feed CACHED · 2026-05-17 09:42:19 · cache_key CVE-2025-29912
CVE-2026-1340 · CWE-94 · Disclosed 2026-01-29

A code injection in Ivanti Endpoint Manager Mobile allowing attackers to achieve unauthenticated remote…

ASSESSED — NOISGATE V0.5
Vendor
Reassessed
Verdict:
01 · The Real Story

This is your mobile fleet control tower taking shell commands from the public internet

CVE-2026-1340 is a pre-auth code injection in Ivanti Endpoint Manager Mobile (EPMM), the on-prem MDM/UEM server formerly known as MobileIron Core. Public reporting and vendor-linked analysis tie exploitation to the appstore and aftstore HTTP paths under /mifs/c/.../fob/, where crafted GET requests can be turned into OS command execution. Affected builds called out across vendor-linked and primary research are 12.5.0.0 and prior, 12.5.1.0 and prior, 12.6.0.0 and prior, 12.6.1.0 and prior, and 12.7.0.0 and prior; Ivanti initially shipped version-specific RPM hotfixes, with a permanent product fix later associated with 12.8.0.0.

The vendor's 9.8/CRITICAL rating matches reality. The only real friction is population size: this is limited to on-prem EPMM, not Ivanti's cloud MDM, so not every enterprise owns the problem. But once an org does own it, the path is brutally short: unauthenticated, network-reachable, no user interaction, edge-facing management plane, active exploitation, KEV listing, public exploit research, and downstream control over managed devices and enterprise access paths.

"Pre-auth RCE on an Internet-facing MDM plane with KEV and public exploitation stays firmly critical."
02 · The Attack Path

5 steps from start to impact.

STEP 01

Find an exposed EPMM edge

The attacker locates an Internet-reachable Ivanti EPMM appliance, usually the same edge system mobile devices need to contact remotely. Because EPMM commonly sits on 443 and fronts device enrollment, app delivery, and policy services, it is a practical scan target rather than a lab-only curiosity.
Conditions required:
  • Target runs on-prem Ivanti EPMM
  • The EPMM web interface or MIFS endpoints are reachable from the Internet or attacker-controlled network
Where this breaks in practice:
  • Cloud Ivanti Neurons for MDM is not affected
  • Some enterprises already restrict EPMM to VPN, partner IPs, or reverse proxies
Detection/coverage: Exposure scanners and internet ASM tools can usually identify EPMM by service fingerprints; population is limited versus mass-market VPNs, but external exposure is still straightforward to find.
STEP 02

Trigger pre-auth code injection with crafted HTTP GET

Using the vulnerable appstore or aftstore fob endpoints, the attacker sends a specially crafted GET request that injects Bash-controlled input and reaches command execution without credentials. Public technical writeups from watchTowr and follow-on detections from Unit 42 describe this as direct command execution through malformed URI parameters.
Conditions required:
  • Unauthenticated network path to /mifs/c/appstore/fob/ or /mifs/c/aftstore/fob/
  • Target has not applied the Ivanti RPM hotfix or a later fixed release
Where this breaks in practice:
  • A reverse proxy, WAF, or path ACL can break the exploit if it blocks these endpoints or shell metacharacter patterns
  • Authenticated internal vuln scans may miss the exact exploitability state if they only version-check and do not validate hotfix presence
Detection/coverage: Vendor and Unit 42 guidance point defenders at HTTP(S) logs containing /mifs/c/(app|aft)store/fob plus suspicious parameter patterns; Rapid7 noted authenticated checks were added for asset scanners.
STEP 03

Validate code execution

Operators commonly verify the bug before dropping tooling. watchTowr observed simple timing payloads like sleep 5 and external callback checks, which is exactly how opportunistic actors separate dead targets from exploitable ones at scale.
Conditions required:
  • Successful command execution as the web/application context
  • Outbound network allowed for callback validation, or timing side channel visible to attacker
Where this breaks in practice:
  • Egress controls can block callback infrastructure
  • Verbose HTTP and process telemetry can reveal test payloads early
Detection/coverage: Look for odd delays, callback beacons, or single-request probes to the vulnerable paths followed by immediate follow-up requests from the same source.
STEP 04

Drop persistence and privilege probes

Post-exploitation observed by watchTowr and Unit 42 moved quickly into JSP web shell placement, reverse shells, recon, and privilege validation. watchTowr specifically documented writes such as 401.jsp and 403.jsp, staging files, and attempts to set SUID on /bin/sh.
Conditions required:
  • Write access into web-accessible or temporary locations
  • Shell execution stable enough to stage multi-step payloads
Where this breaks in practice:
  • Application allowlisting on the appliance is rare, but filesystem integrity monitoring or EDR on the host can still catch JSP and shell artifacts
  • Some actors will fail when appliances have constrained file permissions or outbound filtering
Detection/coverage: Hunt for unexpected WAR/JAR/JSP artifacts, temp files, reverse-shell children of web services, and outbound connections originating from the appliance.
STEP 05

Turn EPMM into a tenant-wide control point

Once inside the MDM plane, the attacker can pivot from server compromise to business impact: access user and device data, alter authentication policies, create admin accounts, push applications, and reshape device-network trust. On an enterprise MDM, that is not just 'one server popped'—it is a management foothold with leverage over a large mobile estate.
Conditions required:
  • Compromise of the EPMM host
  • EPMM retains its normal trust relationships to identity, device, and enterprise services
Where this breaks in practice:
  • Blast radius is bounded to organizations that actually run on-prem EPMM
  • Lateral movement beyond the appliance still depends on surrounding segmentation and credential hygiene
Detection/coverage: Audit the EPMM console and backing services for unauthorized admin creation, policy changes, app pushes, certificate changes, and unusual API or directory-service activity.
03 · Intelligence Metadata

The supporting signals.

In-the-wild statusConfirmed active exploitation. Ivanti said on 2026-01-29 that a 'very limited number' of customers had already been exploited, and later research from watchTowr and Unit 42 showed exploitation moving from validation to persistence.
KEV statusCISA KEV listed on 2026-04-08 with a federal due date of 2026-04-11, per CISA's public KEV data mirror.
Proof-of-concept / weaponizationPublic exploit research exists. Rapid7 explicitly noted a public working PoC from watchTowr Labs, and watchTowr published technical exploitation details for the appstore/aftstore paths.
EPSS0.70832 (*user-supplied intel*). That is an extremely high exploitation-likelihood signal and directionally aligns with the KEV listing and observed post-disclosure exploitation.
CVSS meaningCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H means exactly what defenders fear: remote, low-complexity, no-auth, no-click RCE with full CIA impact.
Affected versions12.5.0.0 and prior, 12.5.1.0 and prior, 12.6.0.0 and prior, 12.6.1.0 and prior, 12.7.0.0 and prior across the on-prem EPMM product line.
Fixed versionsInitial remediation was via version-specific RPM hotfixes (12.x.0.x and 12.x.1.x tracks). Multiple primary sources also point to 12.8.0.0 as the later permanent product fix.
Exposure dataThird-party exposure reporting put the reachable population at roughly 1,400-1,600 Internet-exposed EPMM instances globally after disclosure. That is not Exchange-scale, but it is plenty for targeted and opportunistic exploitation.
Observed attacker behaviorwatchTowr saw timing-based validation, callback confirmation, staging files, hex-decoded payload assembly, JSP web shells, and SUID probing. Unit 42 reported reverse shells, web shells, recon, and malware download.
Disclosure / record qualityPublished in the CVE Program on 2026-01-29 by the Ivanti CNA. At the time of this reassessment, NVD lag/coverage gaps meant defenders had to lean on CNA, vendor, and research sources instead of waiting for NVD enrichment.
04 · The Call

noisgate verdict.

Final Verdict
= UNCHANGED to CRITICAL (9.8/10)

The decisive amplifier is simple: this is a pre-auth remote code execution path on an Internet-facing mobile-device management plane with KEV status and observed exploitation. The only real downward pressure is product prevalence—on-prem EPMM is narrower than mass-market edge software—but that does not change the fact that exposed instances are one-request compromise candidates with tenant-wide control implications.

HIGH Exploit status and severity bucket
HIGH Affected-version and fix-path understanding
MEDIUM Global exposure population estimate

Why this verdict

  • Held at vendor baseline because the vendor's 9.8 already reflects the real attack chain: unauthenticated, network-reachable RCE with no click path and no role prerequisite.
  • No prerequisite drag because the attacker does *not* need prior foothold, internal network placement, stolen credentials, or admin/API access; those missing prereqs normally drive scores down, and they are absent here.
  • Population trims only the ceiling: on-prem EPMM is a narrower installed base than mainstream VPN, email, or browser targets, which is why this stays at 9.8 instead of being described as a universal enterprise emergency. But KEV, public exploit research, and observed web-shell/reverse-shell deployment erase any case for downgrading below CRITICAL.

Why not higher?

There is no practical bucket above CRITICAL, and even within criticality the exposure population is not universal. This is limited to organizations running on-prem EPMM, and Ivanti's cloud MDM offering is not in scope, so the reachable victim set is materially smaller than a browser or Windows bug.

Why not lower?

Downgrading would ignore the actual friction audit. There is no authentication barrier, no internal-network prerequisite, no user interaction, and no special role requirement, and exploitation evidence is not hypothetical—Ivanti disclosed victim impact, CISA KEV later confirmed exploitation, and public researchers observed rapid post-disclosure abuse.

05 · Compensating Control

What to do — in priority order.

  1. Pull EPMM behind restricted access now — If the appliance is still Internet-reachable, treat that as the primary amplifier and remove public reachability with VPN-only access, source-IP allowlisting, or upstream ACLs. Because this CVE is KEV-listed and exploitation is real, deploy this immediately, within hours, not by the normal 3-day CRITICAL mitigation clock.
  2. Block exploit paths at the edge — Create emergency WAF/NGFW rules for /mifs/c/appstore/fob/ and /mifs/c/aftstore/fob/, especially requests carrying shell metacharacters or anomalous fob parameter structure. This is a containment move, not a substitute for patching, and it should also be in place immediately, within hours.
  3. Hunt HTTP and appliance logs — Search EPMM HTTP logs for the vendor and Unit 42 path patterns, then pivot into process, filesystem, and outbound connection telemetry from the appliance. Because active exploitation often moved straight to persistence, complete this triage immediately, within hours on every exposed or recently exposed node.
  4. Inspect for persistence artifacts — Check for JSP web shells, unexpected WAR/JAR files, temp staging files, reverse-shell children, and outbound callbacks from the EPMM host. This is not optional hygiene—if the box was exposed pre-patch, perform this review immediately, within hours.
  5. Rotate trust after confirmed compromise — If you find evidence of compromise, rotate local EPMM accounts, LDAP/KDC or other service credentials tied to the appliance, and replace the public certificate used by EPMM. Ivanti's own recovery guidance treats compromise as a rebuild-and-retrust event, so complete this on affected systems immediately, within hours.
What doesn't work
  • MFA on the admin portal does not stop a pre-auth exploit path that lands before login.
  • Relying on 'it's an internal management system' does not help if the appliance was deployed for Internet-facing device check-in, which is common for EPMM.
  • Version-only vulnerability dashboards can mislead here because Ivanti initially shipped RPM hotfixes that must be tracked separately from the base product version.
  • Waiting for normal monthly maintenance windows is how edge appliance bugs turn into incident-response projects; the exploit chain is too short and the attacker position requirement is too low.
06 · Verification

Crowdsourced verification payload.

Run this on the EPMM appliance itself over SSH, ideally as root or with sudo, because it needs local RPM inventory. Save as check_cve_2026_1340.sh and run sudo bash ./check_cve_2026_1340.sh; it will print VULNERABLE, PATCHED, or UNKNOWN and exit non-zero for uncertain states.

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/usr/bin/env bash
# check_cve_2026_1340.sh
# Conservative local check for Ivanti EPMM CVE-2026-1340.
# Exit codes:
#   0 = PATCHED
#   1 = VULNERABLE
#   2 = UNKNOWN / cannot determine

set -u

cve="CVE-2026-1340"

if ! command -v rpm >/dev/null 2>&1; then
  echo "UNKNOWN: rpm not found; not an expected EPMM appliance or insufficient environment for ${cve} check"
  exit 2
fi

RPM_LIST="$(rpm -qa 2>/dev/null || true)"
if [ -z "$RPM_LIST" ]; then
  echo "UNKNOWN: unable to read RPM database for ${cve}"
  exit 2
fi

# Helper: compare dotted versions using sort -V.
ver_ge() {
  # returns 0 if $1 >= $2
  [ "$(printf '%s\n%s\n' "$1" "$2" | sort -V | tail -n1)" = "$1" ]
}

# 1) Definitive hotfix detection from Ivanti/CISA-linked package names.
if echo "$RPM_LIST" | grep -Eiq 'ivanti-security-update-1761642-(1\.[01]\.0[SL]|1\.[01]\.0[SL]-|1\.[01]\.0[S|L])|security-update-1761642'; then
  echo "PATCHED: detected Ivanti security update RPM for ${cve} (1761642 series)"
  exit 0
fi

# 2) Try to infer installed EPMM base version from package inventory.
CANDIDATE_VERSIONS="$(echo "$RPM_LIST" | grep -Eio '(epmm|mobileiron|mifs|core)[^[:space:]]*[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | grep -Eo '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | sort -Vu || true)"
BASE_VER="$(echo "$CANDIDATE_VERSIONS" | tail -n1)"

# 3) If base version is clearly a later fixed train, accept as patched.
if [ -n "$BASE_VER" ] && ver_ge "$BASE_VER" "12.8.0.0"; then
  echo "PATCHED: inferred EPMM base version ${BASE_VER} >= 12.8.0.0"
  exit 0
fi

# 4) If base version is within affected trains and no hotfix was found, mark vulnerable.
# Affected trains documented publicly: <=12.5.0.0, <=12.5.1.0, <=12.6.0.0, <=12.6.1.0, <=12.7.0.0
if [ -n "$BASE_VER" ]; then
  case "$BASE_VER" in
    12.5.*|12.6.*|12.7.0.0)
      echo "VULNERABLE: inferred affected EPMM version ${BASE_VER} and no security update RPM detected for ${cve}"
      exit 1
      ;;
  esac
fi

# 5) Fall back to filesystem hints if available.
for path in \
  /usr/local/tomcat/webapps/mifs/META-INF/MANIFEST.MF \
  /mi/tomcat/webapps/mifs/META-INF/MANIFEST.MF \
  /opt/mobileiron/*/META-INF/MANIFEST.MF
 do
  for file in $path; do
    [ -f "$file" ] || continue
    FOUND_VER="$(grep -Eio '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' "$file" 2>/dev/null | head -n1 || true)"
    if [ -n "$FOUND_VER" ]; then
      if ver_ge "$FOUND_VER" "12.8.0.0"; then
        echo "PATCHED: manifest version ${FOUND_VER} >= 12.8.0.0"
        exit 0
      fi
      case "$FOUND_VER" in
        12.5.*|12.6.*|12.7.0.0)
          echo "VULNERABLE: manifest shows affected version ${FOUND_VER} and no hotfix RPM detected for ${cve}"
          exit 1
          ;;
      esac
    fi
  done
done

echo "UNKNOWN: could not prove hotfix presence or confidently infer a fixed base version for ${cve}"
exit 2
07 · Bottom Line

If you remember one thing.

TL;DR
Monday morning, do not treat this as a routine appliance update. For any Internet-exposed on-prem EPMM, use the noisgate mitigation SLA override for active exploitation and patch / mitigate immediately, within hours: remove public reachability, block the vulnerable paths, and hunt the appliance for web-shell or reverse-shell activity before declaring it safe. Then finish permanent remediation under the noisgate remediation SLA of ≤ 90 days, but in practice that 90-day window is just the outer ceiling here—exposed EPMM should be patched to the vendor-fixed state as an emergency change, not left to normal quarterly maintenance.

Sources

  1. Ivanti January 2026 EPMM Security Update
  2. CVE Program record for CVE-2026-1340
  3. Rapid7 emergent threat response for CVE-2026-1281/CVE-2026-1340
  4. watchTowr exploitation writeup
  5. watchTowr Labs technical exploit analysis
  6. Palo Alto Unit 42 threat brief
  7. Horizon3.ai affected and fixed-version summary
  8. CISA KEV public data mirror
Peer Review

What defenders are saying.

Submit a review attribution: handle + country only
0 flags selected · stored anonymously
Validation Results

Crowdsourced verification outputs.

Results submitted by users who ran the verification payload against their environment.