Actively exploited. Adobe fix released: APSB26-146

    StyleSmuggler: the Magento zero-day Adobe patched in hotfix VULN-39341

    Every release up to August 2026 is affected, including 2.4.9, so you need hotfix VULN-39341 on top

    By Simon Bumford, Founder of EveryHost•••8 min read

    Adobe has released a fix. On 7 September 2026, the day this article was first published, Adobe released security bulletin APSB26-146 . It tracks the flaw as CVE-2026-75650, rates it critical with a CVSS base score of 10.0 and priority 1, and says Adobe is aware of it being exploited in the wild. The US Cybersecurity and Infrastructure Security Agency (CISA) added it to its Known Exploited Vulnerabilities catalogue on 8 September 2026. The fix is hotfix VULN-39341. Adobe's hotfix article lists the patch file for each affected version and says to rotate your encryption key once the hotfix is applied, along with every credential that may have been encrypted or exposed with it.

    We have kept the original disclosure timeline below as history, including what our 7 September fleet sweep found, and brought the patch advice up to date. If your store was unpatched at any point after 4 September, still run the check further down this page once the hotfix is on: a patch does not remove anything an attacker has already installed. Adobe's regular September update, APSB26-138, was released the next day and is a separate fix that you also need: see applying APSB26-138 as well as the StyleSmuggler hotfix. Adobe's October 2026 bulletin fixed a second flaw in the same template engine, BlockStrap, and its patch does not include this hotfix: see BlockStrap, CVE-2026-103849.

    TL;DR

    On 5 September 2026 the ecommerce security firm Sansec disclosed StyleSmuggler, an unauthenticated remote code execution flaw in Magento and Adobe Commerce. Attacks began on 4 September. All current versions are affected, including 2.4.9, and the first confirmed victim was already patched to August 2026. When we first published on 7 September, Adobe had published no advisory, no CVE, no patch and no workaround, and its next scheduled security release was 8 September. Adobe has since released a fix: apply hotfix VULN-39341 from APSB26-146, rotate your keys and credentials as Adobe advises, and use the detection script on this page to check your store, whoever hosts it.

    We swept every Magento server we host on 7 September. That sweep found no compromised customer store and one injection attempt that never executed. The detail of what we found, and how we know it did not run, is further down this page.

    How the attack works, in two stages

    Stage 1: injectStage 2: triggerattackerunauthenticatedvar/report/<file>PHP written into a report Magento madePayment TransactionFailed Reminder jobcode executionpersistent backdoor installed

    The attacker first gets PHP written into a file that Magento itself creates, typically an exception report under var/report. Those files are ordinary JSON stack traces, so nothing looks unusual about Magento writing one.

    The second stage is the clever part, and it is why the usual defences do not help. Execution is triggered through Magento's Payment Transaction Failed Reminder email function, which runs from cron. That means the injected file never has to be reachable from a browser. Blocking direct access to var/ over HTTP, which most well-configured stores already do, does not stop it.

    Successful exploitation installs a persistent backdoor disguised as a Linux kernel thread, which is why it survives a casual look at the process list.

    Indicators of compromise

    These are the indicators published by Sansec. Check all of them, not just one, because the stages leave different traces.

    Process
    kworker/u:8:0 owned by a non-root user
    Backdoor binary
    ~/.local/share/.gvfsd/gvfsd-user
    Dropper files
    /tmp/.kw_*
    Command and control
    247.cdnflare[.]xyz
    Attacker IPs
    99.84.67.186, 88.216.72.181, 5.181.86.133
    Stage one artefact
    PHP inside files under var/report

    Check your own store, whoever hosts it

    This is the script we ran across our own fleet. It is read only. It changes nothing, deletes nothing and sends nothing anywhere. Run it as root on the server your store runs on. If you do not have server access, send it to whoever does.

    #!/bin/bash
    # StyleSmuggler IOC check. Sansec advisory 2026-09-05. READ ONLY.
    HIT=0
    
    echo "[1] Backdoor process"
    ps -eo user,pid,args | grep -F 'kworker/u:8:0' | grep -v '^root' | grep -v grep && HIT=1
    
    echo "[2] Backdoor binary"
    find /home /root /var/www -maxdepth 7 -path '*/.local/share/.gvfsd/gvfsd-user' 2>/dev/null && HIT=1
    
    echo "[3] Dropper artefacts"
    ls -la /tmp/.kw_* /var/tmp/.kw_* /dev/shm/.kw_* 2>/dev/null && HIT=1
    
    echo "[4] Live connections to known C2"
    ss -tan 2>/dev/null | grep -E '99\.84\.67\.186|88\.216\.72\.181|5\.181\.86\.133' && HIT=1
    
    echo "[5] PHP injected into Magento report files"
    for D in /home/*/public_html /var/www/*; do
      [ -d "$D/var/report" ] || continue
      grep -rlE '<\?=eval\(|<\?php.*eval\(|base64_decode' "$D/var/report" 2>/dev/null && HIT=1
    done
    
    echo "[6] Hardening posture"
    php -i 2>/dev/null | grep '^disable_functions' | grep -q proc_open \
      && echo "  proc_open disabled: yes" || echo "  proc_open disabled: NO"
    for M in /tmp /var/tmp /dev/shm; do
      findmnt -no OPTIONS "$M" 2>/dev/null | grep -q noexec \
        && echo "  $M noexec: yes" || echo "  $M noexec: NO"
    done
    
    [ "$HIT" = "0" ] && echo "RESULT: no indicators found" \
      || echo "RESULT: INDICATORS FOUND. Do not clean or reboot. Preserve state."

    If it finds something, stop. Do not delete the file, clean the server or reboot. Preserving the current state is what makes it possible to establish what happened, when, and whether anything left the building. Cleaning first destroys the only evidence you have.

    What to do now that Adobe has released a fix

    Apply the fix first. Install Adobe's hotfix VULN-39341, using the patch file Adobe lists for your exact version in its hotfix article . Then rotate your encryption key and, as Adobe says, every credential that may have been encrypted or exposed with it: admin passwords, integration tokens, OAuth client secrets, payment gateway API credentials, database credentials, SSH and deploy keys, and API keys for other integrations. Rotate them at their source, not only inside Magento.

    If we host your store, we apply patches like this one in staging, then work alongside your developer or agency to coordinate them to production.

    Before the fix existed, Sansec recommended four mitigations, and they are still sensible hardening alongside the hotfix. In our sweep of every Magento server we host, the two most commonly missing were the third and fourth.

    1. 1Temporarily disable GraphQL if your store does not use it. Check with your developer first, because headless and PWA storefronts depend on it.
    2. 2Block requests carrying the exploit parameters at the web server, in front of Magento.
    3. 3Disable proc_open in PHP. On our fleet this was enabled everywhere, and it is a one-line change in php.ini.
    4. 4Mount /tmp, /var/tmp and /dev/shm with noexec. On our fleet /tmp and /var/tmp were already correct and /dev/shm was not.

    Before the fix, there was a fifth option: disable the Payment Transaction Failed Reminder job. It removed the trigger without touching the vulnerability, at the cost of the reminder emails. It was a stopgap, not a substitute for the hotfix.

    What we found on our own fleet

    We ran the check above on every Magento server we host, on 7 September, two days after Sansec published. That sweep found no compromised customer store. No backdoor process, no dropper, no command and control traffic on any server.

    We did find one injection attempt, on one server, and we are publishing that rather than rounding it to zero. Two files under var/report carried an injected payload. They stood out for three reasons: only two of 3,777 report files on that store matched, both carried old filenames but had been rewritten on 5 September, and both were exactly 8,832 bytes where every normal report on that store is 2,564.

    It never executed. The payload carried its own 180 second self-expiry based on the file's modification time, and that window had closed long before we found it. It also required a specific secret HTTP header to run at all. We left both files in place as evidence rather than deleting them.

    We are a listed Sansec partner , which is how this reached us quickly. Being the host rather than a plugin vendor is the reason we could check every store ourselves instead of emailing customers a bulletin and hoping.

    StyleSmuggler: frequently asked questions

    Frequently Asked Questions

    StyleSmuggler is the name Sansec gave to a Magento and Adobe Commerce zero-day it disclosed on 5 September 2026. It allows an unauthenticated attacker to run code on the server. Sansec published early, before Adobe had an advisory, because stores were already being compromised. Attacks were first observed on 4 September 2026. Adobe released a fix on 7 September 2026 in security bulletin APSB26-146, where the flaw is CVE-2026-75650.

    Yes. Adobe released security bulletin APSB26-146 on 7 September 2026. It tracks the flaw as CVE-2026-75650, rates it critical with a CVSS base score of 10.0 and priority 1, and says Adobe is aware of it being exploited in the wild. The fix is hotfix VULN-39341. Adobe's hotfix article lists the patch file for each affected version and says to rotate your encryption key after applying it, along with every credential that may have been encrypted or exposed with it. When this article was first published on 7 September, Adobe had published no advisory, no CVE identifier, no patch and no workaround, and its next scheduled security release was 8 September, which is why the page was written around mitigations.

    All current versions, including 2.4.9. Adobe's bulletin lists Adobe Commerce 2.4.4 to 2.4.9 and Magento Open Source 2.4.6 to 2.4.9 as affected, in each case up to and including the August 2026 release (for example 2.4.9-2026-aug). Adobe Commerce B2B releases are listed too. Sansec confirmed exploitation on Magento Open Source 2.4.7, 2.4.8 and 2.4.9. The first identified victim was running 2.4.6-p15 with the August 2026 patches already applied. This is the part merchants get wrong: the August 2026 patches do not protect you. You need Adobe's VULN-39341 hotfix on top of them.

    It runs in two stages. First the attacker injects PHP into a file Magento itself writes, typically an exception report under var/report. Then they trigger execution through Magento's Payment Transaction Failed Reminder email function. The second stage matters, because it means the injected file never needs to be reachable from the web. Your normal protections against browsing to a PHP file do not stop it.

    Look for a process named kworker/u:8:0 owned by a non-root user, a binary at ~/.local/share/.gvfsd/gvfsd-user, files matching /tmp/.kw_*, connections to 247.cdnflare.xyz, and PHP code inside files under var/report. The script further down this page checks all of those. If you find anything, do not clean or reboot. Preserving the current state is what makes it possible to establish what happened.

    Sansec recommended four things: temporarily disable GraphQL if you do not use it, block requests carrying the exploit parameters at the web server, disable proc_open in PHP, and mount /tmp, /var/tmp and /dev/shm with noexec. In our own sweep of every Magento server we host, the two most commonly missing were proc_open still enabled and /dev/shm not mounted noexec. Now that Adobe's fix exists, apply the VULN-39341 hotfix and rotate your keys and credentials first. The four steps are still sensible hardening, but they are not a substitute for the hotfix.

    Our sweep of every Magento server we host on 7 September, two days after Sansec published, found no compromised customer store. It found one injection attempt on one server that never executed: the payload had a 180 second self-expiry which had long passed, and the file it was written to has no PHP extension so it could not be run by a web request. No backdoor process, no dropper, no command and control traffic was found on any server in that sweep.

    Not on its own. This is the single most important thing to understand about StyleSmuggler. 2.4.9 is affected. The first confirmed victim was patched to August 2026. Version currency is normally good advice and it is not enough here, because Adobe lists every release up to and including August 2026 as affected. What protects you is Adobe's VULN-39341 hotfix from APSB26-146, followed by the encryption key and credential rotation Adobe asks for, with monitoring alongside.

    Want someone to run this check for you?

    We will run the StyleSmuggler check against your Magento store once, free, and send you the result in plain English. You do not have to be a customer and there is nothing to install. If it comes back clean, that is a useful thing to know today.

    EveryHost hosts Magento and Adobe Commerce on-premise, and nothing else. Read more in our APSB26-92 briefing or on our Sentinel security page.