Ce qui s'est passé le 28 octobre 2026
Le 28 octobre 2026, l'équipe de sécurité de Drupal a publié l'avis SA-CONTRIB-2026-254 pour signaler une faille classée Highly Critical (score de risque 21/25 sur l'échelle Drupal) dans le module Commerce Core, le socle e-commerce de référence du CMS Drupal (source : Drupal.org). Cette publication faisait partie d'une vague de 38 correctifs de sécurité couvrant 21 modules contribués, dont près d'une douzaine classés critiques (source : SecurityWeek).
La vulnérabilité, identifiée sous le numéro CVE-2026-118539, est un contournement de contrôle d'accès (access bypass, CWE-862) qui touche des routes et des champs d'entités insuffisamment protégés dans le module. Plus de 42 000 sites web utilisent Commerce Core pour administrer leur boutique en ligne, ce qui en fait l'un des modules e-commerce les plus déployés parmi les CMS open source.
La faille est exploitée activement : Drupal le confirme dans l'avis sans détailler le mode opératoire exact ni le nombre de boutiques déjà compromises. Pour les administrateurs qui hébergent un site Drupal Commerce sur un serveur VPS Linux ou un serveur dédié, la mise à jour est urgente : un attaquant non authentifié peut exploiter la faille sans condition particulière de configuration.
Versions touchées et versions corrigées
Deux branches de Commerce Core sont concernées. Le tableau ci-dessous résume les versions vulnérables et les correctifs à appliquer sur votre serveur.
| Branche | Versions vulnérables | Version corrigée |
|---|---|---|
| Commerce Core 3.x | 3.0.0 à 3.3.12 | 3.3.13 |
| Commerce Core 8.x-2.x | Toutes les versions avant 2.41 | 8.x-2.41 |
Si votre site Drupal utilise une version de Commerce Core inférieure à ces seuils, il est exposé. Connectez-vous en SSH à votre serveur VPS ou dédié et vérifiez la version installée avec la commande Composer suivante depuis le terminal :
composer show drupal/commerce | grep versionsAvec Drush, la commande équivalente est :
drush pm:list --filter=commerce --fields=name,version --format=tableSur un serveur administré via un panel comme Plesk, vous pouvez également ouvrir un terminal depuis l'interface web du panel pour exécuter ces commandes sans client SSH séparé.
Nature de la faille : contournement d'accès
CVE-2026-118539 est classée comme un contournement de contrôle d'accès (access bypass, CWE-862 : Missing Authorization). Concrètement, certaines routes HTTP et certains champs d'entités du module Commerce Core ne vérifient pas correctement les permissions de l'utilisateur qui les interroge. Un attaquant non authentifié peut envoyer des requêtes HTTP vers ces routes pour accéder à des données ou modifier des enregistrements auxquels il ne devrait pas avoir accès.
L'avis de sécurité précise que l'exploitation peut avoir un impact financier direct pour le propriétaire de la boutique : manipulation de commandes, modification de données transactionnelles dans les bases de données, exposition potentielle d'informations privées stockées dans la base MySQL ou MariaDB du CMS. L'avis ne mentionne ni exécution de code à distance ni prise de contrôle total du serveur, mais un accès non autorisé aux commandes d'une boutique en ligne reste une compromission grave pour tout site e-commerce.
La faille a été rapportée par Dan Puccetti, Marcus Johansson et Robert Snyder, et ne nécessite aucune authentification pour être exploitée. Toutes les configurations du module sont vulnérables, que le site utilise le mode standard avec panier et formulaire de paiement ou les API découplées.
Procédure de mise à jour
La mise à jour se fait via Composer depuis un terminal connecté en SSH à votre VPS Linux ou votre serveur dédié. Avant toute opération, effectuez un backup complet de votre base de données MySQL (ou PostgreSQL si votre installation Drupal utilise ce moteur) et de vos fichiers.
Pour sauvegarder la base de données avant la mise à jour :
mysqldump -u root -p drupal_commerce > /root/backup-drupal-$(date +%F).sqlSauvegardez également le répertoire du site et le fichier de config Composer :
sudo tar czf /root/backup-drupal-files-$(date +%F).tar.gz /var/www/drupalPour une stratégie de sauvegarde complète avec chiffrement et envoi vers un serveur distant, consultez notre guide chiffrer les sauvegardes d'un serveur Linux.
Appliquez ensuite le correctif. Pour la branche 3.x :
cd /var/www/drupal
composer require drupal/commerce:^3.3.13 --update-with-dependencies
drush updatedb
drush cache:rebuildPour la branche 8.x-2.x :
cd /var/www/drupal
composer require drupal/commerce:^2.41 --update-with-dependencies
drush updatedb
drush cache:rebuildVérifiez que la version installée correspond bien au correctif :
composer show drupal/commerce | grep versionsAprès la mise à jour, redémarrer le serveur web est recommandé pour vider les caches de l'interpréteur PHP :
sudo systemctl restart php8.2-fpm
sudo systemctl restart nginx # ou apache2Sur une distribution Debian ou Ubuntu, les noms de service peuvent varier selon la version de PHP installée. Adaptez php8.2-fpm à votre version.
Si votre site utilise un processus de déploiement automatisé (CI/CD), mettez à jour le fichier composer.lock dans votre dépôt et déclenchez un déploiement vers le serveur de production. Pour les administrateurs qui gèrent les mises à jour de sécurité automatiquement sur leur VPS, consultez notre guide automatiser les mises à jour de sécurité sur Ubuntu.
Auditer les commandes passées
L'avis Drupal recommande explicitement d'auditer les commandes de votre boutique pour détecter des manipulations survenues avant l'application du correctif. Voici les points à vérifier dans l'interface d'administration (admin) de Drupal Commerce ou directement en base de données :
- Montants incohérents : commandes dont le total ne correspond pas aux prix catalogue, remises appliquées sans code promotionnel valide, frais de livraison ramenés à zéro.
- Changements de statut anormaux : commandes passées directement en statut "complétée" ou "expédiée" sans passage par le processus de paiement normal.
- Adresses de livraison modifiées : vérifiez si des commandes légitimes ont vu leur adresse de destination changée après la validation du paiement.
- Comptes clients suspects : créations de comptes massives sur une courte période, commandes passées par des comptes sans historique.
Pour identifier les commandes suspectes directement dans la base MySQL, vous pouvez exécuter un script SQL ciblé. Par exemple, pour lister les commandes modifiées récemment dont le statut a changé sans action admin normale :
mysql -u root -p drupal_commerce -e "SELECT order_id, mail, total_price__number, state, changed
FROM commerce_order
WHERE changed > UNIX_TIMESTAMP('2026-10-20')
ORDER BY changed DESC
LIMIT 100;"Adaptez le nom de la base de données et la date de début selon votre config. Si votre installation utilise PostgreSQL au lieu de MySQL, la syntaxe de la requête diffère légèrement pour la conversion de date.
En complément, examinez les journaux d'accès de votre serveur web (Apache ou Nginx) pour repérer des requêtes HTTP inhabituelles vers les routes de Commerce Core. Sur un VPS Linux, les journaux se trouvent généralement dans /var/log/apache2/access.log ou /var/log/nginx/access.log. Un script grep permet de filtrer les requêtes suspectes :
sudo grep -i "commerce" /var/log/nginx/access.log | grep -v "200\|301\|302" | tail -50Pour une analyse plus poussée des journaux système, consultez notre guide sur l'analyse des logs avec journalctl.
Environnement serveur pour Drupal Commerce
Le choix de l'hébergement impacte directement la capacité à réagir face à une faille comme CVE-2026-118539. Drupal Commerce est un CMS exigeant en ressources : chaque page produit sollicite PHP, la base de données MySQL (ou PostgreSQL) et le serveur web simultanément.
| Composant | Minimum recommandé | Pourquoi |
|---|---|---|
| RAM | 4 Go | PHP-FPM et MySQL consomment de la mémoire à chaque requête ; en dessous, les pics de trafic provoquent des erreurs 502. |
| Stockage SSD | 40 Go | La base de données, les fichiers uploadés et les backups locaux occupent de l'espace disque ; un disque SSD réduit la latence des requêtes SQL. |
| PHP | 8.1+ | Commerce Core 3.x requiert PHP 8.1 minimum. Les versions antérieures ne reçoivent plus de correctifs de sécurité. |
| Base de données | MySQL 8.0+ / MariaDB 10.6+ | Drupal supporte aussi PostgreSQL 14+, mais MySQL reste le moteur le plus testé avec Commerce Core. |
Sur un hébergement web mutualisé, l'accès SSH est souvent restreint et les scripts Composer ne peuvent pas toujours s'exécuter librement. Un hébergement mutualisé ne permet généralement pas de redémarrer PHP-FPM, de configurer le firewall du serveur ni d'exécuter sudo. Pour un site e-commerce en production, un serveur VPS ou un serveur dédié offre le contrôle nécessaire : accès root, choix de la distribution (Debian, Ubuntu), possibilité de configurer chaque service (DNS, SMTP pour les emails transactionnels, pare-feu) et liberté d'installer les scripts de maintenance et de backup que le site exige.
Si vous administrez plusieurs sites web Drupal, un panel d'administration comme Plesk simplifie la gestion des noms de domaine, des bases de données MySQL, des certificats TLS et des adresses IP dédiées depuis une interface unique. Pour les sites critiques, l'infogérance ou un serveur dédié avec virtualisation (conteneurs LXC ou machines virtuelles) permet d'isoler chaque site dans son propre environnement virtuel.
Sécuriser une installation Drupal sur un VPS
Au-delà de cette mise à jour ponctuelle, la sécurité d'un site Drupal Commerce hébergé sur un VPS ou un serveur dédié repose sur plusieurs pratiques complémentaires. Un hébergeur fournit l'infrastructure, mais c'est l'admin du serveur qui configure les protections applicatives.
- Mises à jour régulières : abonnez-vous aux avis de sécurité de Drupal (
drupal.org/security) et appliquez les correctifs dès leur publication. Configurez un script cron pour vérifier automatiquement les mises à jour disponibles aveccomposer outdated drupal/*. - Accès SSH sécurisé : désactivez l'authentification par mot de passe et utilisez des clés SSH. Consultez notre guide sécuriser SSH sur VPS Linux pour les étapes détaillées.
- Firewall et Fail2ban : configurez le pare-feu (UFW ou nftables) pour limiter les ports ouverts au strict nécessaire et protégez les services exposés contre les attaques par force brute. Notre guide sécuriser un VPS Ubuntu avec UFW et Fail2ban détaille la configuration complète.
- Sauvegardes testées : une sauvegarde récente et vérifiée est la seule garantie de pouvoir restaurer un site compromis dans un état sain. Planifiez un backup quotidien de la base MySQL et des fichiers, avec envoi sur un serveur distant via rsync.
- Droits fichiers : les répertoires
sites/default/filesne doivent pas être exécutables. Les fichiers de configuration (settings.php) doivent être en lecture seule (permissions 444). Utilisezsudo chown www-data:www-datapour que seul le processus du serveur web puisse lire les fichiers sensibles. - Restreindre l'accès admin : limitez l'accès à
/adminpar adresse IP dans la config du serveur web (Nginx ou Apache). Cela empêche tout accès à l'interface d'administration depuis une adresse IP non autorisée. - Configurer SMTP : utilisez un relais SMTP authentifié pour les emails transactionnels (confirmations de commande, notifications d'expédition) plutôt que la fonction
mail()de PHP, qui finit souvent en spam. - DNS et nom de domaine : configurez les enregistrements SPF, DKIM et DMARC pour le nom de domaine de votre boutique. Ces enregistrements DNS protègent contre l'usurpation d'identité dans les emails envoyés aux clients.
Pour un guide complet sur les premiers réglages de sécurité, consultez sécuriser un serveur dédié : premiers réglages.
FiveM
Minecraft
Rust
RedM
Hytale