Cyber Threat Brief — April 9 2026

⚠️ This report is AI-generated. Always validate findings.

1. Ivanti EPMM Pre-Auth RCE — CVE-2026-1340 (+ CVE-2026-1281)

TL;DR: CISA added CVE-2026-1340 to KEV on April 8 with an April 11 federal patch deadline; Unit 42, watchTowr, Arctic Wolf, and Telekom CERT all confirm mass automated exploitation dropping webshells, cryptominers, and dormant backdoors. Two public PoCs live on GitHub — any internet-exposed EPMM without the March RPM patch should be treated as compromised until proven otherwise.

What’s New:

  • CISA KEV addition April 8, 2026; BOD 22-01 remediation deadline Saturday April 11 (FCEB).
  • Second public PoC published (MehdiLeDeaut/CVE-2026-1281-Ivanti-EPMM-RCE) with 50+ prebuilt payloads, reverse-shell + webshell modules, and blue-team detection scripts; earlier YunfeiGE18 PoC also still live.
  • Root cause now fully documented: bash arithmetic expansion in /mi/bin/map-appstore-url evaluates the h URL parameter (padded st bypasses length check), reached unauth via Apache RewriteMap on /mifs/c/appstore/fob/*.
  • Ivanti’s temporary RPM replaces vulnerable bash scripts with compiled Java classes AFTUrlMapper.java / AppStoreUrlMapper.java — confirm the swap is present post-patch.
  • Observed post-exploit: webshell drop, XMRig cryptominer, and at least one dormant backdoor strain; Unit 42 reports auth-bypass chaining with historical MobileIron flaws on some hosts.

Actionable Intel

ArtifactTypeATT&CKLog SourceAction
GET /mifs/c/appstore/fob/* with kid=, st=, et=, h= paramsURIT1190Apache https-access_log (/var/log/httpd/https-access_log), WAF, reverse proxyAlert on any external hit — Ivanti’s own regex in the Analysis Guide; 404 responses are likely attempted exploitation
h parameter containing $(, backticks, `, ;, &&, or URL-encoded equivalents (%24%28, %60`)PayloadT1059.004Apache access log, Zeek http.log, WAF body capture
st parameter containing two leading spaces or %20%20 (length-check padding bypass)PayloadT1190Apache access log, WAFHigh-fidelity signature — legitimate clients never pad st
Apache httpd / www-data spawning sh, bash, curl, wget, python, perl, nc, /bin/sh -cProcessT1059.004auditd execve, Sysmon-for-Linux EID 1, EDRAlert — EPMM Apache workers should never fork shells
map-appstore-url script invocation with non-numeric arguments, or child processes of map-appstore-urlProcessT1059.004auditd, EDR process treeHunt — chain this with RewriteMap invocations
XMRig artifacts, /tmp/.*, /var/tmp/* ELF drops, crontab modifications on EPMM hostsFileT1496 / T1053.003Sysmon FileCreate, Falco, EDRAlert — post-exploit miner or persistence
New .jsp / .php files under /mi/tomcat/webapps/, /var/www/, or any EPMM document rootFileT1505.003File-integrity monitoring, Falco, EDRAlert — webshell drop
Outbound from EPMM to unknown IPs shortly after an /mifs/c/appstore/fob/* hitNetworkT1071.001Zeek conn.log, NetFlow, firewallHunt — 60s correlation window between inbound exploit and new egress
EPMM on versions ≤ 12.7.0.0 without the March RPM patch; absence of AFTUrlMapper.classExposureT1590Asset inventory, Ivanti console version, package listingInventory — isolate or take offline until patched

Detection

SourceRuleGap
Splunk ESCUWeb Servers Executing Suspicious Processes, Linux Auditd Preload Hijack Library Calls (adjacent)Need: Ivanti-specific rule keyed on /mifs/c/appstore/fob/* + shell command substitution in query string; parent=httpd child=shell
ElasticLinux Suspicious Child Process From Web Server, Potential Webshell Activity (adjacent)Need: Ivanti URI-path allowlist rule; regex for $( / %24%28 in h/st/et parameters
Sigmaproc_creation_lnx_susp_child_process_from_web_server.yml, web_cve_generic_command_injection.ymlNeed: Ivanti-specific proxy rule and bash-script map-appstore-url child-process rule

Mitigation: Apply Ivanti RPM 12.x.0.x or 12.x.1.x now (required by Saturday for FCEB). If patching is blocked, remove /mi/bin/map-appstore-url from the RewriteMap config, block /mifs/c/appstore/fob/* at the edge, and take EPMM off the public internet. Treat any EPMM appliance with a matching access-log hit as needing DFIR triage — dormant-backdoor reports mean absence of current shell activity does not equal clean.

Sources: CISA KEV · Security Affairs · Unit 42 · Tenable · watchTowr Labs · Arctic Wolf · Horizon3 · Ivanti Advisory · PoC – MehdiLeDeaut · PoC – YunfeiGE18


2. PraisonAI Pre-Auth RCE Pair — CVE-2026-39890 / CVE-2026-39888

TL;DR: Two critical unauthenticated RCEs disclosed April 8 in PraisonAI, the multi-agent framework: CVE-2026-39890 (CVSS 9.8) is js-yaml deserialization via AgentService.loadAgentFromFile, and CVE-2026-39888 (CVSS 9.9) is a sandbox escape in execute_code() via frame-walking through __traceback__. No ITW exploitation yet but public advisories include full PoC mechanics — expect scanning within days.

What’s New:

  • CVE-2026-39890 (RCE via YAML): loadAgentFromFile calls js-yaml without FAILSAFE_SCHEMA; !!js/function / !!js/undefined tags execute embedded JS at parse time. Fixed in 4.5.115.
  • CVE-2026-39888 (sandbox escape): execute_code() with sandbox_mode="sandbox" relies on an AST blocklist of only 11 attribute names; attacker raises a caught exception then walks __traceback__.tb_frame.f_back.f_builtins to recover exec. Fixed in 1.5.115.
  • Adjacent advisories published the same day: CVE-2026-39891 (template injection), CVE-2026-39307 (Zip Slip), CVE-2026-39308 (path traversal), CVE-2026-34953 (auth bypass) — treat this as a coordinated PraisonAI advisory cluster.
  • No CISA KEV entry, no confirmed ITW — but all three cluster members have public vulnerability writeups, so opportunistic scanning is the near-term expectation.

Actionable Intel

ArtifactTypeATT&CKLog SourceAction
POST / PUT to PraisonAI agent-file upload endpoints (commonly /api/agents/load, /api/agents/upload, /api/v1/agents/*)URIT1190Web proxy, app access logs, ingress controllerAlert on external POST with Content-Type: application/x-yaml or filename *.yaml / *.yml
YAML payloads containing !!js/function, !!js/undefined, or tag:yaml.org,2002:js/PayloadT1059.007WAF body inspection, Zeek http.log post-bodyAlert — no legitimate agent file uses these tags
Python/Node child process from PraisonAI service spawning sh, bash, curl, wget, python -c, node -eProcessT1059.006 / T1059.007auditd, Sysmon-for-Linux, EDRAlert — PraisonAI worker should not fork arbitrary shells
Python tracebacks in logs containing f_builtins / f_back / tb_frame attribute access from user-submitted codePayloadT1027Application logs, container stdoutHunt — sandbox-escape chain signature
Outbound from PraisonAI pods/containers to non-allowlisted destinations after agent-file uploadNetworkT1071.001Zeek conn.log, container egress, CNI flow logsHunt — correlate upload timestamps with new egress
PraisonAI PyPI package versions < 1.5.115 (sandbox) or < 4.5.115 (YAML loader)ExposureT1195.001SBOM, pip list, image scannerInventory — upgrade or isolate

Detection

SourceRuleGap
Splunk ESCUDetect Webshell Exploit Behavior, Linux Auditd Possible Cron Script Root Execution Attempt (adjacent)Need: rule matching !!js/function in HTTP POST body + PraisonAI URI paths; Python parent spawning shell
ElasticSuspicious Python Child Process, Suspicious Node.js Child ProcessNeed: js-yaml unsafe-tag regex rule keyed on agent-upload endpoints
Sigmaproc_creation_lnx_susp_child_process_from_web_server.yml (adjacent)Need: PraisonAI-specific proxy rule and Python-sandbox frame-walk audit rule

Mitigation: Upgrade to PraisonAI ≥ 4.5.115 (and praisonaiagents ≥ 1.5.115) immediately; if blocked, put the agent-file-upload API behind authenticated proxy, strip Content-Type: application/x-yaml, and run PraisonAI in a minimal container with no outbound egress. Audit SBOMs for transitive pulls of vulnerable PraisonAI.

Sources: TheHackerWire – 39890 · TheHackerWire – 39888 · TheHackerWire – 39891 template injection · GitLab Advisory – 39307 Zip Slip · GitLab Advisory – 39308 path traversal


Status Updates

  • CVE-2026-35616 (Fortinet FortiClient EMS): CISA KEV federal remediation deadline passed April 9. Confirm EMS hotfix applied; treat unpatched internet-facing EMS as compromise-presumed. Original brief.
  • CVE-2025-59528 (Flowise CustomMCP): No new ITW telemetry since April 8 disclosure; Starlink-attributed source IP continues probing honeypots per VulnCheck. Upgrade to ≥3.1.1 remains the only mitigation. Original brief.
  • BlueHammer Windows LPE: Still unpatched, no CVE assigned; both Chaotic Eclipse and 0xjustBen PoC forks live. Continue Sysmon hunts on IMpService RPC calls and junctions under C:\ProgramData\Microsoft\Windows Defender\. Original brief.
  • CVE-2026-5281 (Chrome Dawn WebGPU): KEV deadline April 15; no additional exploitation reports. Original brief.