[{"data":1,"prerenderedAt":246},["ShallowReactive",2],{"seo-verification":3,"blog-drupal-commerce-core-cve-2026-118539-sa-contrib-2026-254-mettre-a-jour-fr":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-drupal-commerce-core-cve-2026-118539-sa-contrib-2026-254-mettre-a-jour-fr",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":28,"featuredImage":30,"bgImage":31,"posterImage":32,"relatedSolution":30,"intro":33,"sections":34,"ctaTitle":192,"ctaBody":193,"ctaButton":194,"ctaUrl":195,"relatedPosts":196},556,"drupal-commerce-core-cve-2026-118539-sa-contrib-2026-254-mettre-a-jour",{"fr":10,"en":12,"ar":13,"es":14},"drupal-commerce-cve-2026-118539-update-and-audit-orders","ثغرة-drupal-commerce-cve-2026-118539-التحديث-وتدقيق-الطلبات","drupal-commerce-cve-2026-118539-actualizar-y-auditar-pedidos","Drupal Commerce CVE-2026-118539 : corriger et auditer","Faille Commerce Core exploitée, avis SA-CONTRIB-2026-254 : repérez les versions touchées, passez en 3.3.13 ou 8.x-2.41, puis auditez les commandes.",10,0,false,"2026-11-01T00:00:00+00:00","2026-11-01T14:14:31+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},8,"Sécurité & Monitoring","securite-monitoring","bg-rose-500\u002F10 text-rose-400","security",[29],{"id":23,"name":24,"slug":25,"color":26,"icon":27},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fdrupal-commerce-core-cve-2026-118539-sa-contrib-2026-254-mettre-a-jour-poster.svg","L'avis SA-CONTRIB-2026-254, publié le 28 octobre 2026, décrit un contournement d'accès dans Commerce Core, le module qui porte le tunnel de commande de nombreuses boutiques Drupal. Il ne demande aucune authentification, et drupal.org le déclare exploité dans la nature. Corriger la version ne suffit pas : une commande altérée avant le patch reste dans la base. Pour une agence qui héberge plusieurs boutiques, la question est double : lesquelles sont concernées, et laquelle a déjà été abusée. Voici la procédure, environnement par environnement, avec un audit des commandes à remettre au client.",[35,39,74,77,96,99,120,123,150,168,172,183,186,189],{"type":36,"title":37,"body":38},"h2","La faille en un paragraphe, le reste est de la procédure","L'avis SA-CONTRIB-2026-254 concerne le module Commerce Core (`drupal\u002Fcommerce`). Drupal.org le classe « Highly critical », 21 sur 25, et décrit un contournement d'accès : le module ne protège pas suffisamment certaines routes et certains champs d'entité. L'avis range le niveau d'authentification requis sous « tous \u002F anonymes » et précise que la faille peut avoir des conséquences financières pour le vendeur. Il affirme aussi qu'elle est exploitée dans la nature.\n\nL'avis ne nomme ni les routes ni les champs concernés. Nous n'en déduisons donc rien : ni liste de chemins à bloquer, ni signature à chercher dans les journaux. L'identifiant CVE-2026-118539 est relevé sur la page de l'avis ; nous ne l'avons pas recoupé avec la base NVD, citez-le donc comme « identifiant publié par l'avis » tant que ce recoupement n'est pas fait.",{"type":40,"title":41,"headers":42,"rows":46},"comparison","Tableau de référence : branche, version touchée, version corrigée",[43,44,45],"Votre situation","Statut selon l'avis","Action",[47,51,54,58,62,66,70],[48,49,50],"Commerce 3.x, de 3.0.0 à avant 3.3.13","Vulnérable","Passer en 3.3.13 ou plus récent",[52,49,53],"Commerce 2.x (8.x-2.x), avant 8.x-2.41","Passer en 8.x-2.41 ou plus récent",[55,56,57],"Commerce 3.3.13 ou 8.x-2.41 déjà installé","Corrigé","Auditer quand même les commandes passées avant la mise à jour",[59,60,61],"Drupal ^10.3 ou 11","Branche 3.x annoncée compatible","Mettre à jour dans la branche 3.x",[63,64,65],"Drupal ^9.3 ou ^10","Branche 2.x annoncée compatible","Mettre à jour dans la branche 2.x, sans changer de branche dans la foulée",[67,68,69],"Module absent de `composer.lock`","Hors périmètre de cet avis","Consigner l'absence dans l'inventaire",[71,72,73],"Boutique sans accès Composer ou code copié à la main","Version inconnue","Retrouver la version avant toute conclusion",{"type":36,"title":75,"body":76},"Pourquoi corriger ne suffit pas","L'avis le dit en toutes lettres : les sites doivent auditer leurs commandes, parce que la faille est exploitée. Une boutique passée en 3.3.13 aujourd'hui a pu être visitée avant. La mise à jour ferme l'accès ; elle ne remet pas en ordre une commande dont le montant, le statut ou l'état de paiement a été modifié. L'avis ne dit pas depuis quand l'exploitation a lieu : choisissez une fenêtre d'audit large, notez-la dans le dossier, et ne la réduisez pas au jour de la mise à jour.\n\nIl y a ensuite un obstacle banal : sans inventaire central, personne ne sait quelles boutiques embarquent Commerce, ni dans quelle branche. La méthode d'inventaire est celle d'une faille de plugin WordPress, décrite dans \u003Ca href=\"\u002Fblog\u002Fbricksforge-cve-2026-85097-wordpress-mettre-a-jour\">notre guide Bricksforge\u003C\u002Fa>. L'ordre de travail est donc : inventaire, sauvegarde, mise à jour, audit, preuve datée. Les boutiques qui encaissent le plus passent en premier.",{"type":78,"title":79,"steps":80},"steps","Inventorier la version de Commerce sur chaque boutique",[81,84,87,90,93],{"title":82,"body":83},"Lire la version avec Composer","`cd \u002Fvar\u002Fwww\u002Fboutique-client`\n`composer show drupal\u002Fcommerce`\nLa commande affiche la version installée. Pour la branche 2.x, drupal.org parle de 8.x-2.41 ; Composer présente le numéro sans le préfixe 8.x. Comparez le numéro, pas la chaîne. Le chemin est un exemple : adaptez-le à votre hébergement.",{"title":85,"body":86},"Recouper avec Drush","`drush pm:list --type=module --status=enabled --filter=commerce`\nLa liste indique si Commerce est activé et dans quelle version. Un site peut porter le code sans que le module soit activé : notez-le, la situation change si quelqu'un l'active plus tard.",{"title":88,"body":89},"Lire le verrou plutôt que le dossier","`grep -A1 '\"name\": \"drupal\u002Fcommerce\"' composer.lock`\nLe fichier `composer.lock` dit ce qui est réellement installé, sans démarrer Drupal. C'est la lecture la plus sûre sur une boutique que vous ne voulez pas solliciter pendant l'audit.",{"title":91,"body":92},"Boucler sur toutes les boutiques d'un serveur","`find \u002Fhome -name composer.lock -not -path '*\u002Fvendor\u002F*' -exec grep -H -A1 '\"name\": \"drupal\u002Fcommerce\"' {} +`\nChaque fichier cité contient Commerce, et la ligne `version` suit le nom. Relisez la liste : un dossier de test oublié ou une copie de sauvegarde compte aussi.",{"title":94,"body":95},"Consigner le résultat dans un tableau","Une ligne par boutique : client, hébergeur, chemin, branche, version relevée, version de Drupal, date et heure du relevé. Ajoutez deux colonnes à remplir plus tard, « mise à jour faite » et « audit des commandes fait ». Ce tableau devient la pièce centrale du dossier remis aux clients.",{"type":36,"title":97,"body":98},"Sauvegarder avant de toucher au code","Une mise à jour de module se défait mal sans point de retour. Avant chaque boutique : une sauvegarde de la base et du code, sur un support que la mise à jour ne touche pas, avec sa date relevée dans le tableau. Sur une boutique active, la base change à chaque commande : la sauvegarde fixe l'état à partir duquel vous pourrez comparer les commandes après coup. Ne l'écrasez pas par la suivante tant que l'audit n'est pas clos. Elle sert deux fois : revenir en arrière, et prouver ce que contenait la boutique avant la correction.",{"type":78,"title":100,"steps":101},"Mettre à jour une boutique",[102,105,108,111,114,117],{"title":103,"body":104},"Figer l'état","`drush sql:dump --gzip --result-file=\u002Fchemin\u002Fsauvegarde\u002Fboutique-avant.sql`\nCopiez aussi le dossier du projet : code, `composer.json`, `composer.lock` et fichiers. Notez l'emplacement de la copie dans le tableau.",{"title":106,"body":107},"Vérifier ce que la contrainte Composer autorise","`composer why-not drupal\u002Fcommerce 3.3.13`\nSi `composer.json` fige une version, cette commande nomme ce qui bloque. Une boutique en 2.x reste en 2.x et vise 8.x-2.41 : un changement de branche est un chantier distinct, à planifier à part.",{"title":109,"body":110},"Mettre à jour le module et ses dépendances","`composer update drupal\u002Fcommerce --with-dependencies`\nRelisez la liste des paquets modifiés avant de valider : un autre module Commerce peut bouger avec lui.",{"title":112,"body":113},"Appliquer les mises à jour de base","`drush updatedb -y`\n`drush cache:rebuild`\nLa première commande exécute les mises à jour de schéma éventuelles, la seconde vide les caches.",{"title":115,"body":116},"Contrôler la version installée","Relancez `composer show drupal\u002Fcommerce`. La version doit atteindre 3.3.13 sur la branche 3.x, ou le numéro 2.41 sur la branche 2.x. Reportez-la dans le tableau, avec la date et l'heure.",{"title":118,"body":119},"Passer une commande de test","Sur la préproduction, ou en mode test de la passerelle de paiement, ajoutez un produit au panier, passez la commande et vérifiez le montant, le statut et le paiement. Une mise à jour qui casse le tunnel d'achat doit se voir avant le client.",{"type":36,"title":121,"body":122},"Une procédure par environnement","Le même correctif ne se joue pas de la même façon partout. Le tableau suivant fixe, pour chaque environnement, le geste attendu et la preuve à conserver. Une préproduction publique compte comme une boutique.\n\nLes mises à jour automatiques du système, décrites dans \u003Ca href=\"\u002Fblog\u002Fsecurite-vps-mises-a-jour-automatiques-debian-ubuntu\">notre guide sur Debian et Ubuntu\u003C\u002Fa>, ne touchent pas à un module Drupal : ce geste reste celui de l'agence.",{"type":40,"title":124,"headers":125,"rows":129},"Développement, préproduction, production : le geste et la preuve",[126,127,128],"Environnement","Geste","Preuve à garder",[130,134,138,142,146],[131,132,133],"Production","Sauvegarde, mise à jour, `drush updatedb`, commande de test, puis audit","Sauvegarde datée, version relevée, résultat de l'audit",[135,136,137],"Préproduction accessible depuis Internet","Mettre à jour en premier si le code est identique, ou la protéger par mot de passe en attendant","Version relevée, protection retenue",[139,140,141],"Préproduction fermée ou locale","Mettre à jour et rejouer la commande de test avant la production","Capture de la commande de test, date",[143,144,145],"Développement","Aligner `composer.lock` sur la production pour ne pas réintroduire l'ancienne version au prochain déploiement","Commit du verrou, version relevée",[147,148,149],"Copie ou sauvegarde restaurée","Ne jamais la remettre en ligne sans la mise à jour","Mention dans le dossier client",{"type":78,"title":151,"steps":152},"Auditer les commandes sans présumer de la méthode de l'attaquant",[153,156,159,162,165],{"title":154,"body":155},"Fixer la fenêtre","Choisissez une date de début large et notez-la. L'avis ne donne pas de date de début d'exploitation : prenez au minimum la période couverte par vos sauvegardes et vos journaux, et écrivez pourquoi.",{"title":157,"body":158},"Lister les commandes de la fenêtre","Exportez les commandes avec leur numéro, leur date de création et de passage, leur statut, leur total et leur devise. L'interface d'administration suffit. En base, commencez par lire les noms de colonnes :\n`drush sql:query \"DESCRIBE commerce_order\"`\nLes noms exacts dépendent de votre version : ne les supposez pas.",{"title":160,"body":161},"Chercher les écarts internes","Pour chaque commande, comparez le total au calcul des lignes et des ajustements. Un total qui ne correspond pas à ses lignes, une remise que personne n'a configurée, ou un prix de ligne différent du catalogue : chaque écart est à instruire.",{"title":163,"body":164},"Croiser avec la passerelle de paiement","Une commande terminée sans paiement correspondant chez le prestataire, ou un paiement d'un montant différent du total, mérite un examen. Le relevé du prestataire fait foi pour l'argent encaissé : faites le croisement sur les exports, pas sur ce que la boutique affiche.",{"title":166,"body":167},"Regarder les passages d'état","Repérez les commandes dont le statut a changé sans action humaine ni paiement cohérent : validées sans passage par le paiement, ou arrivées à un statut final en quelques secondes. Les journaux d'accès aident à dater ce qui s'est passé. L'avis ne détaille aucune route : une recherche par chemin est un indice, jamais une preuve d'absence.",{"type":169,"title":170,"body":171},"tip","Ce que l'audit ne prouve pas","Un audit propre dit qu'aucune incohérence n'est visible dans les commandes. Il ne dit pas qu'aucune requête n'a abusé de la faille : l'avis parle de routes et de champs d'entité sans les nommer. Écrivez dans le rapport ce que vous avez regardé, et ce que vous n'avez pas regardé.",{"type":173,"title":174,"items":175},"ul","Si une commande est incohérente",[176,177,178,179,180,181,182],"**Ne rien supprimer** — conservez la commande, ses paiements et la sauvegarde datée : ce sont les pièces du dossier.","**Suspendre la livraison** — bloquez l'expédition ou l'accès au produit numérique tant que le paiement n'est pas confirmé chez le prestataire.","**Prévenir le client de l'agence** — votre rapport indique la commande, l'écart constaté, la date et le montant concerné.","**Interroger le prestataire de paiement** — il tient le relevé des encaissements ; demandez le détail de la transaction.","**Conserver les journaux** — copiez les journaux d'accès et de l'application de la période avant leur rotation.","**Contrôler les comptes** — si vous trouvez un compte ou un rôle que personne n'a créé, changez les mots de passe d'administration et les clés de la passerelle.","**Mesurer avant de restaurer** — revenir à une sauvegarde d'avant l'incident efface aussi les commandes légitimes passées depuis.",{"type":36,"title":184,"body":185},"Les autres avis Commerce du même jour","Le 28 octobre 2026, drupal.org a publié d'autres avis qui touchent l'écosystème Commerce, du numéro 255 au numéro 265 : Commerce Core, Commerce Shipping, Commerce License et Commerce Stripe. Ils sont classés moins graves que le 254, et seul le 254 déclare une exploitation dans la nature. L'un d'eux, sur Commerce Stripe, atteint pourtant « Critical » (15 sur 25).\n\nNe mettez donc pas à jour que Commerce Core. Listez les paquets Commerce de chaque boutique avec `composer outdated 'drupal\u002Fcommerce*'` et lisez chaque avis sur drupal.org\u002Fsecurity avant de décider.",{"type":36,"title":187,"body":188},"Qui tient la relation client, et ce que vous remettez","Quand une commande frauduleuse est trouvée, c'est l'agence que le client appelle. Gardez ce rôle : l'agence tient la relation, le rapport d'audit et la décision de remboursement ou de restauration. La plateforme tient l'infrastructure : un compte isolé par client, des sauvegardes à restaurer, un accès SSH ou WHM pour mettre à jour sans attendre un ticket. Nous ne modifions pas le code applicatif d'une boutique à votre place ; la mise à jour de Commerce reste un geste de l'agence.\n\nRemettez au client une page datée : version avant, version après, date et heure de la mise à jour, référence de la sauvegarde, fenêtre d'audit, nombre de commandes examinées, écarts trouvés ou absence d'écart, et ce qui n'a pas été regardé. Gardez le modèle : le prochain avis sur un module Drupal suivra la même séquence, avec une autre ligne dans l'inventaire. Le rythme mensuel de contrôle est décrit dans \u003Ca href=\"\u002Fblog\u002Fchecklist-audit-securite-mensuel-vps-clients-agence\">la checklist d'audit d'un VPS client\u003C\u002Fa>.",{"type":36,"title":190,"body":191},"La documentation officielle","\u003Ca href=\"https:\u002F\u002Fwww.drupal.org\u002Fsa-contrib-2026-254\">Avis SA-CONTRIB-2026-254\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fwww.drupal.org\u002Fsecurity\">Liste des avis de sécurité\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fwww.drupal.org\u002Fproject\u002Fcommerce\">Page du projet Commerce\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fgetcomposer.org\u002Fdoc\u002F03-cli.md\">Documentation de la ligne de commande Composer\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fwww.drush.org\u002Flatest\u002F\">Documentation de Drush\u003C\u002Fa>","Gardez la main sur les boutiques de vos clients","Comptes isolés par client, sauvegardes avant mise à jour, accès WHM et SSH pour appliquer un correctif sans attendre, expirations et parc visibles au même endroit : la relation client reste à vous.","Voir la solution agences","\u002Fsolutions\u002Fagences",[197,215,230],{"id":198,"slug":199,"slugs":200,"title":204,"excerpt":205,"readTime":17,"views":18,"isPinned":19,"publishedAt":206,"updatedAt":207,"category":208,"categories":209,"featuredImage":30,"bgImage":31,"posterImage":211,"relatedSolution":212},525,"bricksforge-cve-2026-85097-wordpress-mettre-a-jour",{"fr":199,"en":201,"ar":202,"es":203},"bricksforge-cve-2026-85097-wordpress-update","ثغرة-bricksforge-cve-2026-85097-ووردبريس-التحديث","bricksforge-cve-2026-85097-wordpress-actualizar","Bricksforge CVE-2026-85097 : mettre à jour et auditer le parc","Bricksforge 3.1.8.10 corrige CVE-2026-85097, un upload non authentifié exploité. Inventaire wp-cli, fichiers PHP déposés, journaux, secrets à rotater.","2026-10-29T00:00:00+00:00","2026-10-29T15:45:55+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[210],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fbricksforge-cve-2026-85097-wordpress-mettre-a-jour-poster.svg",{"categorySlug":213,"appSlug":214},"cms","wordpress",{"id":216,"slug":217,"slugs":218,"title":222,"excerpt":223,"readTime":17,"views":18,"isPinned":19,"publishedAt":224,"updatedAt":225,"category":226,"categories":227,"featuredImage":30,"bgImage":31,"posterImage":229,"relatedSolution":30},521,"checklist-audit-securite-mensuel-vps-clients-agence",{"fr":217,"en":219,"ar":220,"es":221},"monthly-security-audit-checklist-client-vps-agency","قائمة-تدقيق-أمان-vps-شهرية-للعملاء-للوكالات","auditoria-seguridad-mensual-vps-clientes-agencia-checklist","Audit sécurité mensuel d'un VPS client : checklist en 45 min","Sept contrôles à dérouler chaque mois sur un VPS client : mises à jour, noyau, comptes SSH, ports, certificats, sauvegardes, journaux. Rapport daté inclus.","2026-10-28T00:00:00+00:00","2026-10-29T03:10:22+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[228],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fchecklist-audit-securite-mensuel-vps-clients-agence-poster.svg",{"id":231,"slug":232,"slugs":233,"title":237,"excerpt":238,"readTime":17,"views":239,"isPinned":19,"publishedAt":240,"updatedAt":241,"category":242,"categories":243,"featuredImage":30,"bgImage":31,"posterImage":245,"relatedSolution":30},382,"securite-vps-mises-a-jour-automatiques-debian-ubuntu",{"fr":232,"en":234,"ar":235,"es":236},"vps-automatic-security-updates-debian-ubuntu","تحديثات-أمان-تلقائية-vps-debian-ubuntu","actualizaciones-seguridad-vps-debian-ubuntu","Mises à jour de sécurité automatiques sur VPS Debian\u002FUbuntu","Configurez unattended-upgrades sur vos VPS Debian\u002FUbuntu pour automatiser les patches de sécurité et réduire la surface d'attaque de votre parc client.",2,"2026-09-26T00:00:00+00:00","2026-09-29T14:40:42+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[244],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fsecurite-vps-mises-a-jour-automatiques-debian-ubuntu-poster.svg",1793542861056]