Le 17 mars 2026, la société Sansec a divulgué publiquement PolyShell — une faille critique dans Magento Open Source et Adobe Commerce permettant à n’importe qui, sans compte ni authentification, d’uploader et d’exécuter du code arbitraire sur votre serveur.
Trois jours après la divulgation, l’exploitation de masse avait déjà démarré. Au 14 avril 2026, 82 % des boutiques Magento vulnérables avaient reçu des uploads malveillants. Aucun patch officiel n’est disponible pour les versions de production stables à ce jour.
Voici ce que vous devez faire, maintenant.
Ce que fait PolyShell
PolyShell exploite le endpoint d’upload de fichier des options de panier dans l’API REST de Magento :
POST /rest/default/V1/carts/{cartId}/items
Ce endpoint accepte un objet file_info contenant un fichier encodé en base64 — censé représenter une option produit de type “fichier joint”. Magento valide le fichier en vérifiant uniquement son en-tête pour détecter s’il s’agit d’une image.
L’attaque repose sur un fichier polyglotte : un fichier qui est simultanément une image valide et un script PHP exécutable. Il suffit de faire commencer le fichier par la signature GIF89a pour passer la validation, puis d’y glisser le payload PHP.
Trois lacunes de sécurité se cumulent :
- Aucune blacklist d’extension — les fichiers
.php,.phtmlet.pharsont acceptés - Aucune vérification de l’option produit — l’upload se déclenche même si le produit n’a pas d’option de type fichier
- Validation MIME insuffisante — seul l’en-tête du fichier est contrôlé, pas son contenu réel
Le fichier uploadé atterrit dans pub/media/custom_options/quote/. Si la configuration du serveur web autorise l’exécution PHP dans ce répertoire, l’attaquant n’a plus qu’à appeler l’URL du fichier pour obtenir une exécution de code à distance (RCE).
Pour obtenir un SKU produit et un identifiant de panier invité — les seules données nécessaires à l’attaque — l’API GraphQL publique de Magento suffit. Aucun compte n’est requis.
Ce que les attaquants font une fois entrés
Les campagnes d’exploitation observées incluent :
- Injection de skimmers JavaScript dans les pages CMS et blocs statiques, pointant vers des domaines malveillants (
lanhd6549tdhse.top,jslibrary.net,canevaslab.com) pour exfiltrer les données de paiement des visiteurs - Dépôt de backdoors persistants nommés
accesson.phpdans plusieurs répertoires pour maintenir l’accès même après nettoyage partiel - Prise de contrôle complète du serveur dans les cas où la configuration PHP le permet
Versions affectées
- Magento Open Source : toutes les versions jusqu’à 2.4.8 inclus
- Adobe Commerce : toutes les versions jusqu’à 2.4.8 inclus
Le correctif est intégré dans la 2.4.9, actuellement en pré-release. Aucun patch isolé n’a été publié officiellement pour les versions de production stables — d’où l’importance des mesures ci-dessous.
Comment savoir si vous avez été attaqué
1. Scanner les fichiers uploadés suspects
Tout fichier .php, .phtml ou .phar dans pub/media/custom_options/ est un indicateur de compromission :
find pub/media/custom_options/ -type f \
! -name '.htaccess' \
! -name '*.png' \
! -name '*.jpg' \
! -name '*.gif' \
! -name '*.jpeg'
2. Chercher les backdoors
find . -name 'accesson.php' 2>/dev/null
3. Détecter les injections dans les pages CMS
grep -r "lanhd6549tdhse.top\|jslibrary.net\|canevaslab.com" pub/ app/ 2>/dev/null
Inspectez également vos pages CMS et blocs statiques depuis l’admin Magento à la recherche de balises <script> inattendues ou de code JavaScript obfusqué.
4. Analyser les logs d’accès
Recherchez des requêtes POST suspectes vers le endpoint de panier avec un paramètre file_info contenant du base64 volumineux :
POST /rest/default/V1/carts/*/items
Une rafale de ces requêtes sur une courte période, venant d’adresses IP inconnues, est un signal d’alerte fort.
Comment patcher
Option A — Patch officiel Magento (priorité absolue)
Le correctif a été extrait directement du commit de correction intégré dans la 2.4.9. Il est applicable sur votre installation actuelle :
# Télécharger le patch
curl -O https://github.com/magento/magento2/commit/796c4ce195cee0814ac92e5a19fc2ecfa79dae69.patch
# Appliquer
patch -p1 < 796c4ce195cee0814ac92e5a19fc2ecfa79dae069.patch
Vérifiez en staging avant d’appliquer en production. Ce patch corrige les trois lacunes de validation décrites plus haut : blacklist d’extensions, vérification des option IDs et validation stricte du contenu uploadé.
Option B — Blocage au niveau du serveur web
Si le patch ne peut pas être appliqué immédiatement, bloquez l’exécution PHP dans le répertoire d’upload.
Nginx — à ajouter dans votre configuration de virtualhost :
location ~* ^/pub/media/custom_options/ {
return 403;
}
Apache — dans votre .htaccess ou la configuration du virtualhost :
<Directory /var/www/html/pub/media/custom_options>
php_flag engine off
AddType text/plain .php .phtml .phar
Deny from all
</Directory>
Redémarrez votre serveur web après modification. Cette mesure empêche l’exécution des fichiers déjà uploadés et limite le risque d’exploitation active.
Option C — Module tiers
En dernier recours, si aucune des options précédentes n’est applicable dans votre environnement :
markshust/magento-polyshell-patchsur GitHub
Ce module Composer applique les corrections de validation directement dans le code Magento. À utiliser uniquement si le patch officiel (option A) ne peut pas être appliqué.
Si vous avez été compromis : procédure de nettoyage
- Isoler — Si l’infection est confirmée, passez la boutique en mode maintenance le temps du nettoyage
- Supprimer les fichiers suspects — Videz
pub/media/custom_options/après avoir sauvegardé son contenu pour analyse - Supprimer les backdoors — Cherchez et supprimez tous les
accesson.phpet autres scripts inconnus - Nettoyer les pages CMS — Retirez tout code JavaScript injecté depuis l’admin Magento
- Réinitialiser les accès — Changez tous les mots de passe admin et invalidez les sessions actives
- Auditer les logs — Remontez les logs d’accès pour identifier d’autres points d’entrée potentiels
- Appliquer le patch — Une fois nettoyée, appliquez le patch avant de remettre la boutique en ligne
En résumé
PolyShell est une faille sérieuse, activement exploitée, qui ne requiert aucune authentification. Si votre boutique tourne sur Magento 2.4.8 ou une version antérieure et que vous n’avez pas encore appliqué de mesure corrective, c’est une priorité immédiate.
La vérification initiale prend moins de 10 minutes avec les commandes ci-dessus.
Vous souhaitez qu’un expert audite votre boutique et applique le patch pour vous ? Contactez-nous — nous intervenons sous 48h.