← Back to Feed CACHED · 2026-09-08 00:48:22 · CACHE_KEY CVE-2026-75650
CVE-2026-75650 · CWE-1336 · Disclosed 2026-09-07

Adobe Commerce is affected by an Improper Neutralization of Special Elements Used in a Template Engine…

ASSESSED — NOISGATE V0.5
Vendor
Reassessed
Verdict:
Do you agree?
01 · The Real Story

Someone found the master key to every online checkout counter and started robbing stores three days before the locksmith arrived

CVE-2026-75650, dubbed StyleSmuggler by Sansec, is an unauthenticated remote code execution flaw in Adobe Commerce and Magento Open Source's template engine (CWE-1336). The attack is a two-stage chain: first, the attacker poisons a PHP file that Magento itself writes — such as a failure report or system log — by injecting template directives through styles properties that bypass existing sanitization. Second, the attacker triggers rendering of that poisoned file (e.g., via a failed-payment email path), achieving arbitrary PHP execution as the web-server user. Every release from 2.4.4 through 2.4.9 is affected, including fully patched August 2026 builds like 2.4.6-p15. The hotfix VULN-39341 was released September 7; exploitation began September 4.

Adobe's CVSS 10.0 / Priority 1 rating is accurate and, unusually, may even *understate* the operational severity. The vector is AV:N/AC:L/PR:N/UI:N/S:C — network-reachable, no auth, no user interaction, scope change — and real-world exploitation confirms this is trivially weaponizable. Post-exploitation payloads include a Rust-based persistent backdoor that masquerades as kernel workers ([kworker/u:8:0]), fc-cache, or chronyd, exfiltrating data via disguised NTP traffic on UDP/123. A separate campaign is deploying PHP webshells and payment skimmers. Given that Magento stores process credit-card data and PII under PCI DSS scope, this is a textbook 10.0.

"Unauthenticated RCE in Adobe Commerce exploited in the wild since Sept 4 — patch now."
02 · The Attack Path

5 steps from start to impact.

STEP 01

Identify target Magento instance

The attacker fingerprints a Magento / Adobe Commerce storefront via response headers, default paths (/magento_version), or GraphQL introspection endpoints. Shodan and FOFA index roughly 50,000–111,000 exposed Magento instances globally. No authentication or special tooling is required — a browser suffices.
Conditions required:
  • Target runs Adobe Commerce or Magento Open Source 2.4.4–2.4.9
  • Storefront is internet-accessible (by design for e-commerce)
Where this breaks in practice:
  • None — Magento storefronts are public-facing by definition
Detection/coverage: Shodan/FOFA/Censys dork: http.component:magento. GreyNoise may tag scanning IPs probing Magento-specific paths.
STEP 02

Poison a Magento-generated PHP file via styles injection

The attacker sends a crafted HTTP request that embeds PHP template directives inside CSS styles properties. Magento's failure-report generator or logging subsystem writes this payload verbatim into a .php file on disk, bypassing existing template-injection guards that only inspect standard template parameters. No authentication, session, or CSRF token is needed.
Conditions required:
  • Magento's failure-report or logging path writes user-controlled input to a .php file
  • Existing WAF rules do not block the specific template-injection markers in style attributes
Where this breaks in practice:
  • A WAF rule specifically targeting template markers in style attributes could block this, but no vendor shipped such a rule before Sept 5
Detection/coverage: WAF log analysis for unusual style-attribute payloads. Sansec Shield began blocking on Sept 5, 07:15 UTC. Sigma rule: monitor for new .php files in var/report/ or log directories.
STEP 03

Trigger template rendering to execute payload

The attacker initiates a condition (e.g., a deliberately failed payment flow) that causes Magento to render the poisoned file through its email-template or error-display pipeline. The injected PHP code executes with the privileges of the PHP-FPM / Apache worker user, typically www-data or magento. This grants file-system read/write and outbound network access.
Conditions required:
  • Magento processes the poisoned file through its template rendering engine
  • PHP-FPM / web server user has write access to web-accessible directories
Where this breaks in practice:
  • None in default configurations — the rendering path is a normal application flow
Detection/coverage: Monitor web-server process spawning unexpected child processes (bash, curl, python, wget). Sigma rules for PHP-FPM → shell spawning.
STEP 04

Deploy persistent backdoor and webshells

Observed post-exploitation deploys a Rust-compiled binary that masquerades as system daemons ([kworker/u:8:0], fc-cache, chronyd) and communicates over UDP/123 disguised as NTP traffic. Simultaneously, PHP webshells are dropped into pub/media/catalog/product/cache/ directories. The attacker reads app/etc/env.php to harvest database credentials, encryption keys, and payment gateway secrets.
Conditions required:
  • Code execution achieved in step 3
  • Outbound UDP/123 not blocked from web tier
Where this breaks in practice:
  • Egress filtering blocking UDP/123 from web servers would disrupt C2, but NTP is commonly allowed
  • EDR on the web host could detect the Rust binary, but many Magento hosts lack endpoint agents
Detection/coverage: File-integrity monitoring on pub/media/, pub/static/, var/report/. Process monitoring for unexpected binaries running as web user. Network monitoring for UDP/123 from web-tier hosts to non-corporate NTP servers.
STEP 05

Exfiltrate PCI data and inject payment skimmers

With database credentials and web-root write access, the attacker injects JavaScript payment skimmers into checkout pages and/or directly queries the database for stored customer PII, order history, and (if tokenization is misconfigured) payment data. Admin accounts are created for persistent access. The blast radius is every customer transacting on the compromised store.
Conditions required:
  • Database credentials obtained from env.php
  • Web-root write access for skimmer injection
Where this breaks in practice:
  • PCI-compliant tokenization limits direct card-data theft from the database, but skimmers capture data in-flight at the browser
  • Content-Security-Policy headers could limit skimmer injection, but most Magento stores have permissive CSP
Detection/coverage: Integrity monitoring on checkout JS bundles. Database audit logs for new admin_user rows. CSP violation reports.
03 · Intelligence Metadata

The supporting signals.

In-the-Wild ExploitationYES — active since Sept 4, 2026. Sansec confirmed first exploitation at 22:20 UTC on Sept 4. Multiple threat actors observed, including one deploying Rust-based backdoors and a separate campaign using PHP droppers via GraphQL reconnaissance.
Proof-of-ConceptNo public PoC repository identified as of Sept 8, but exploitation is trivial and already weaponized — the attack requires only crafted HTTP requests. Sansec's writeup provides sufficient detail for reproduction.
EPSS ScoreNot yet scored (CVE disclosed Sept 7, 2026). Expected to spike to top 1% percentile given active exploitation and zero-auth attack surface.
KEV StatusNot yet listed as of Sept 8, 2026. CISA KEV addition expected imminently given confirmed active exploitation and Adobe Priority 1 rating.
CVSS VectorCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H10.0 Critical. Every metric is at maximum severity. Scope: Changed means the attacker escapes the vulnerable component's security authority.
Affected VersionsAdobe Commerce 2.4.4 through 2.4.9, Magento Open Source 2.4.4 through 2.4.9, Adobe Commerce B2B 1.3.3 through 1.5.3. Includes all patch levels (e.g., 2.4.6-p15 with August 2026 updates is vulnerable).
Fixed VersionHotfix VULN-39341 (VULN-39341-composer-patches.zip from repo.magento.com), released Sept 7, 2026 via APSB26-146. Applied as a composer patch — no full version upgrade required.
Scanning / ExposureShodan/FOFA index ~50,000–111,000 Magento/Adobe Commerce storefronts globally. All are internet-facing by design. Every unpatched instance is exploitable without authentication.
Disclosure DateSept 5, 2026 (Sansec advisory). Adobe hotfix Sept 7, 2026. Exploitation predates both (Sept 4).
DiscovererSansec (Dutch e-commerce security firm). Sansec Shield customers were protected from Sept 5. Sansec named the attack chain *StyleSmuggler*.
04 · The Call

noisgate verdict.

Final Verdict
= UNCHANGED to CRITICAL (10.0/10)

The single most decisive factor is that the affected component is an internet-facing e-commerce platform processing payment data, under active exploitation with zero authentication requirements — the attacker population is the entire internet, the target population is every Magento store, and the blast radius is PCI-scoped customer data plus persistent server compromise. No friction point in the chain narrows the reachable population or raises the attacker bar.

HIGH Vulnerability severity and exploitability assessment
HIGH Active exploitation status (confirmed by Sansec, Adobe, multiple CERTs)
MEDIUM Exact number of compromised stores as of Sept 8

Why this verdict

  • Zero authentication barrier: CVSS vector confirms PR:N/UI:N — any internet host can exploit any Magento storefront. No credentials, sessions, or user interaction required. This is the widest possible attack surface.
  • Active exploitation predating patch: Attacks began Sept 4, the advisory dropped Sept 5, the hotfix arrived Sept 7. Every unpatched store was a sitting target for 3+ days with no vendor mitigation available. Multiple independent threat actors are confirmed.
  • Role multiplier: Adobe Commerce / Magento is *canonically* an internet-facing production application that processes payment card data under PCI DSS. The blast radius of compromise is not limited to the server — it extends to every customer's financial data, enabling mass payment skimming, PII exfiltration, and brand destruction. ~50k–111k instances are exposed globally; 100% of installs occupy this high-value role by definition. The floor is CRITICAL.
  • Persistent post-exploitation tooling: Observed payloads include a compiled Rust backdoor using NTP-disguised C2 and PHP webshells — this is not smash-and-grab but sustained access designed to survive patching without full incident response.
  • Scope: Changed: The CVSS S:C flag is earned — the attacker pivots from the web application to the underlying OS, database tier, and downstream payment processors via harvested credentials.

Why not higher?

CVSS 10.0 is the maximum possible score. The vendor rating is already at ceiling. There is no higher bucket than CRITICAL.

Why not lower?

Every friction-audit criterion argues against downgrade: the attacker position is unauthenticated remote, the prerequisite chain has zero compounding narrowing factors, the exposed population is 100% of installs (internet-facing by design), and no standard security control (EDR, WAF, MFA, NGFW) stopped the initial wave. Active exploitation with persistent backdoors and PCI-scoped data at risk categorically prevents any reduction below CRITICAL.

05 · Compensating Control

What to do — in priority order.

  1. Apply hotfix VULN-39341 immediately — Download VULN-39341-composer-patches.zip from repo.magento.com and apply via composer. This is the definitive fix. Per the noisgate mitigation SLA for CRITICAL, deploy within 3 days (by Sept 10). Given active exploitation, deploy within hours.
  2. Block PHP execution in media/static directories at the web-server layer — Add Nginx/Apache rules denying .php execution in pub/media/, pub/static/, and var/report/. This breaks the webshell persistence path. Example for Nginx: location ~* ^/(pub/media|pub/static|var)/.+\.php$ { deny all; }
  3. Deploy WAF rules blocking template-injection markers in style attributes — Configure your WAF (Cloudflare, Akamai, AWS WAF, Fastly) to block requests containing Magento template directives ({{, }}, block type=, template=) inside CSS style attribute values. Sansec Shield has shipped signatures since Sept 5.
  4. Restrict outbound UDP/123 from web tier to sanctioned NTP servers only — The Rust backdoor uses UDP/123 disguised as NTP for C2. Restrict egress so only your corporate NTP servers are reachable on this port from the web tier. This disrupts the observed C2 channel.
  5. Conduct full compromise assessment on unpatched instances — If your store was unpatched between Sept 4–7, assume compromise. Audit admin_user table for unauthorized entries, scan pub/media/ and var/report/ for unexpected PHP files, check for unknown processes masquerading as kworker, fc-cache, or chronyd, and rotate all credentials: admin passwords, API tokens, OAuth secrets, payment gateway keys, database credentials, SSH keys, and encryption keys. Do this at the credential *source*, not just within Magento.
  6. Enable file-integrity monitoring on web-root and config directories — Deploy FIM (OSSEC, Wazuh, Tripwire, or cloud-native equivalent) on pub/, var/, app/etc/, and vendor/ to detect unauthorized file changes — both for this CVE and future Magento attacks.
What doesn't work
  • Network-level IP blocking — multiple source IPs across hosting and residential proxy pools are observed; the attacker population is too distributed for IP-based blocking to be effective.
  • MFA on Magento admin panel — the attack does not target the admin login; it exploits the public storefront request path, so admin MFA provides zero protection against initial exploitation.
  • Content-Security-Policy headers alone — while CSP can limit *skimmer* injection effectiveness, it does not prevent the RCE itself or the backdoor deployment; it only narrows one post-exploitation outcome.
  • Upgrading to 2.4.9 without the hotfix — version 2.4.9 is itself vulnerable; only the VULN-39341 composer patch fixes the flaw.
06 · Verification

Crowdsourced verification payload.

Run this script on each Magento application server as a user with read access to the Magento installation directory. Invoke with: bash check_cve_2026_75650.sh /var/www/magento (replace with your Magento root path). No root privileges required — just read access to the composer and patches directories.

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/usr/bin/env bash
# check_cve_2026_75650.sh — Detect CVE-2026-75650 (StyleSmuggler) patch status
# Usage: bash check_cve_2026_75650.sh /path/to/magento
# Exit codes: 0 = PATCHED, 1 = VULNERABLE, 2 = UNKNOWN

set -euo pipefail

MAGE_ROOT="${1:-}"
if [[ -z "$MAGE_ROOT" || ! -d "$MAGE_ROOT" ]]; then
  echo "Usage: $0 /path/to/magento-root"
  exit 2
fi

# Method 1: Check via magento-patches CLI (preferred)
if [[ -x "$MAGE_ROOT/vendor/bin/magento-patches" ]]; then
  PATCH_STATUS=$("$MAGE_ROOT/vendor/bin/magento-patches" -n status 2>/dev/null || true)
  if echo "$PATCH_STATUS" | grep -qi '39341.*applied\|VULN-39341.*Applied'; then
    echo "PATCHED — VULN-39341 hotfix is applied (confirmed via magento-patches)."
    exit 0
  elif echo "$PATCH_STATUS" | grep -qi '39341'; then
    echo "VULNERABLE — VULN-39341 hotfix is present but NOT applied."
    exit 1
  fi
fi

# Method 2: Check composer.json / composer.lock for the patch reference
if grep -rq 'VULN-39341\|vuln-39341' "$MAGE_ROOT/composer.json" "$MAGE_ROOT/composer.lock" 2>/dev/null; then
  echo "PATCHED — VULN-39341 reference found in composer configuration."
  exit 0
fi

# Method 3: Check if the Magento version is in the affected range
VERSION_FILE="$MAGE_ROOT/vendor/magento/framework/AppInterface.php"
COMPOSER_LOCK="$MAGE_ROOT/composer.lock"
VERSION=""

if [[ -f "$VERSION_FILE" ]]; then
  VERSION=$(grep -oP "VERSION\s*=\s*'\K[^']+" "$VERSION_FILE" 2>/dev/null || true)
elif [[ -f "$COMPOSER_LOCK" ]]; then
  VERSION=$(grep -A2 '"magento/product-community-edition"\|"magento/product-enterprise-edition"' "$COMPOSER_LOCK" \
    | grep -oP '"version":\s*"\K[^"]+' | head -1 || true)
fi

if [[ -z "$VERSION" ]]; then
  echo "UNKNOWN — Could not determine Magento version. Manually verify VULN-39341 hotfix status."
  exit 2
fi

echo "Detected Magento version: $VERSION"

# All 2.4.4 through 2.4.9 are vulnerable without the hotfix
if echo "$VERSION" | grep -qP '^2\.4\.[4-9]'; then
  echo "VULNERABLE — Version $VERSION is in the affected range (2.4.4–2.4.9) and VULN-39341 hotfix was NOT detected."
  exit 1
else
  echo "UNKNOWN — Version $VERSION may not be in the known affected range. Verify with Adobe advisory APSB26-146."
  exit 2
fi
07 · Bottom Line

If you remember one thing.

TL;DR
This is a drop-everything emergency. CVE-2026-75650 is an unauthenticated, internet-facing RCE in Adobe Commerce / Magento that has been actively exploited since September 4 — three days before the patch dropped. If you run Magento 2.4.4 through 2.4.9, apply the VULN-39341 composer hotfix today, not Monday, not this week — today. The noisgate mitigation SLA for CRITICAL is ≤3 days, but active exploitation overrides that to patch/mitigate immediately, within hours. The noisgate remediation SLA is ≤90 days for a full security review and hardening pass. Any instance that was unpatched between Sept 4–7 should be treated as compromised: rotate every credential (database, admin, API, payment gateway, SSH keys) at the source, hunt for Rust backdoors masquerading as system daemons and PHP webshells in pub/media/, and engage your PCI IR process. Do not wait for CISA KEV listing — the threat is confirmed and ongoing.

Sources

  1. Sansec — StyleSmuggler 0-day Research
  2. Adobe Security Bulletin APSB26-146
  3. The Hacker News — Magento Zero-Day Coverage
  4. SOCRadar — StyleSmuggler Analysis
  5. CCB Belgium — Active Exploitation Advisory
  6. SecurityArsenal — Detection and Mitigation Guide
  7. CyberSecurityNews — Adobe Commerce Vulnerabilities
  8. MageDispatch — APSB26-146 Hotfix Details
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.