Skip to content
CVE-2026-48356

Adobe Commerce and Magento Unrestricted File Upload to Web Shell (CVE-2026-48356)

Initial Access Persistence Execution Last updated:

Detects exploitation of CVE-2026-48356, an unrestricted upload of a file with a dangerous type (CWE-434) in Adobe Commerce, Adobe Commerce B2B and Magento Open Source (APSB26-73) that can lead to arbitrary code execution. The CVE is on the CISA KEV catalog (added 2026-10-27, BOD 26-04) and Sansec reports mass attack waves that drop PHP web shells under pub/media. Detection uses the web-server and WAF telemetry each platform already has: requests that fetch or execute script files (.php, .phtml, .phar) from pub/media, and a PHP or web server worker spawning a shell on the host.

Vulnerability Intelligence

KEV — Known Exploited

Affected Software

Vendor
Adobe
Product
Adobe Commerce, Adobe Commerce B2B, Magento Open Source
Versions
Adobe Commerce 2.4.9 and earlier, 2.4.8-p5, 2.4.7-p10, 2.4.6-p15, 2.4.5-p17, 2.4.4-p18 and earlier patch levels, Adobe Commerce B2B 1.5.3 and earlier, Magento Open Source 2.4.9 and earlier, 2.4.8-p5, 2.4.7-p10, 2.4.6-p15 and earlier patch levels, Fixed in the releases listed in APSB26-73

Weakness (CWE)

Timeline

Disclosed
July 14, 2026

CVSS

9.3
Critical (9.0–10)
Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
Required
Scope
Changed
Confidentiality
High
Integrity
High
Availability
None
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N

What is CVE-2026-48356 Adobe Commerce and Magento Unrestricted File Upload to Web Shell (CVE-2026-48356)?

Adobe Commerce and Magento Unrestricted File Upload to Web Shell (CVE-2026-48356) (CVE-2026-48356) maps to the Initial Access and Persistence and Execution tactics — the adversary is trying to get into your network in MITRE ATT&CK.

This page provides production-ready detection logic for Adobe Commerce and Magento Unrestricted File Upload to Web Shell (CVE-2026-48356), covering the data sources and telemetry it touches: CommonSecurityLog (WAF / reverse proxy CEF: RequestURL, RequestMethod, SourceIP, DestinationHostName). The queries below are rated high severity at medium confidence, and ship for 7 SIEM platforms — KQL, SPL, Elastic, QRadar, Sumo, YARA-L, LogScale.

MITRE ATT&CK

Tactic
Initial Access Persistence Execution
Microsoft Sentinel / Defender
kusto
// df00tech DF00-e157934fd5 · https://df00tech.com/detections/CVE-2026-48356 · licence: https://df00tech.com/detections/licence
let lookback = 24h;
CommonSecurityLog
| where TimeGenerated >= ago(lookback)
| where isnotempty(RequestURL)
| extend Path = tolower(tostring(parse_url(RequestURL).Path))
| where Path matches regex @"^/(pub/)?media/.*\.(php[0-9]?|phtml|phar)$"
| summarize Hits = count(), Paths = make_set(Path, 10), Methods = make_set(RequestMethod), FirstSeen = min(TimeGenerated), LastSeen = max(TimeGenerated) by SourceIP, DestinationHostName
| order by Hits desc

Flags clients requesting script files under the Magento media directory through WAF or reverse proxy logs in CommonSecurityLog (CEF), the signature of a web shell dropped by CVE-2026-48356.

high severity medium confidence

Data Sources

CommonSecurityLog (WAF / reverse proxy CEF: RequestURL, RequestMethod, SourceIP, DestinationHostName)

Required Tables

CommonSecurityLog

False Positives

  • Legitimate static assets named with a script extension (rare in pub/media)
  • Security scanners and penetration tests against the storefront

Query fingerprint DF00-e157934fd5 · licence

Sigma logsource & community rules

The detection logic for Adobe Commerce and Magento Unrestricted File Upload to Web Shell (CVE-2026-48356) (CVE-2026-48356) 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:
  category: network_connection
  product: windows

Browse the community-maintained Sigma rules for this technique:


Testing Methodology

Validate this detection against 1 adversary technique 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 further down this page.

  1. Test 1 Request a script path under pub/media (lab)

    Expected signal: A web access log line with a GET for /pub/media/catalog/product/test-cve-2026-48356.php.


Response Playbook

Triage

  1. Confirm the host runs Adobe Commerce, B2B or Magento Open Source at a version listed in APSB26-73.
  2. List requests for .php, .phtml or .phar files under pub/media with source IP and status code, and find the matching upload request just before.
  3. Check the file on disk: owner, creation time and content (eval, base64_decode, system calls).

Containment

  1. Apply the Adobe fix from APSB26-73 and follow BOD 26-04 guidance.
  2. Until patched, block execution of script files under pub/media in the web server config and block the attacking sources at the WAF.
  3. Remove confirmed web shells only after copying them for forensics, then rotate admin, database and API credentials.

Evidence Collection

  1. Preserve web server and WAF logs for the full exposure window.
  2. Copy dropped files, the Magento var/log and report directories and the admin_user table.
  3. Capture process trees and outbound connections of the PHP workers.

Escalation Criteria

  • ! Escalate to incident response if a script file under pub/media returned 200 or a PHP worker spawned a shell.
  • ! Escalate if payment pages show injected JavaScript (Magecart-style skimming).
  • ! Escalate if the store is internet-facing and unpatched.

Investigation Guide

Forensic Artifacts

  • > Web server access logs for script files under pub/media
  • > New or modified .php, .phtml and .phar files in upload directories
  • > Process creation events whose parent is php-fpm or the web server

Tuning Guidance

Web logs show the dropped shell being used, not always the upload itself, so the media-script rules are the high-signal ones. Add your own upload directories, exclude known scanners, and keep the CrowdStrike process rule as a low-confidence backstop. Patching is the definitive fix.


Hunting Queries

Daily POST volume to upload-capable Magento paths per client, to find the source of a malicious upload since the 2026-07-14 disclosure.

Hunting — KQL
kql
// df00tech DF00-e157934fd5 · https://df00tech.com/detections/CVE-2026-48356 · licence: https://df00tech.com/detections/licence
CommonSecurityLog | where TimeGenerated > ago(14d) | where RequestMethod == "POST" | where RequestURL has_any ("/media/", "/customer/", "/rest/") | summarize Posts = count() by SourceIP, bin(TimeGenerated, 1d) | order by Posts desc
Hunting — SPL
spl
``` df00tech DF00-e157934fd5 · https://df00tech.com/detections/CVE-2026-48356 · licence: https://df00tech.com/detections/licence ```
index=web earliest=-14d http_method=POST (uri_path="*/media/*" OR uri_path="*/customer/*" OR uri_path="*/rest/*") | timechart span=1d count by src

Atomic Red Team Tests

Test 1 Request a script path under pub/media (lab)
linux

Sends a GET for a non-existent .php path under pub/media to a lab Magento or web server so the access log shows the pattern the rules match. It does not exploit the vulnerability. Run only against a lab host.

Command

bash
curl -s -o /dev/null -w "%{http_code}\n" http://localhost/pub/media/catalog/product/test-cve-2026-48356.php

Cleanup

bash
echo "no cleanup required"

Expected Telemetry

A web access log line with a GET for /pub/media/catalog/product/test-cve-2026-48356.php.

Expected Detection

The KQL, SPL, EQL, AQL, Sumo and YARA-L rules match on the path; the CrowdStrike rule does not fire.

Related Detections

Browse by tactic

Full ATT&CK matrix Search all detections