PrestaShop 9.2.1 est sortie le 9 novembre 2026 avec dix-huit correctifs de sécurité, dont quinze notés élevés par l'éditeur. Pour une boutique, la première action est une mise à jour planifiée. Pour le référencement, la question suivante compte davantage : une boutique touchée avant la mise à jour peut garder des pages, des liens ou des redirections que Google range dans le contenu piraté.
1. Ce qui a été annoncé
PrestaShop Build annonce la version 9.2.1 comme une mise à jour de sécurité, à appliquer le plus vite possible. Elle corrige dix-huit vulnérabilités signalées par divulgation coordonnée, dont quinze classées élevées. La version 8.2.9, publiée le même jour, reprend quinze de ces correctifs. Les trois autres (deux liées aux clients de l'API d'administration, une au mode débogage) ne concernent que la branche 9. La balise 9.2.1 sur GitHub porte la date du 9 novembre à 12 h 00 UTC.
La note couvre aussi deux modules. ps_emailsubscription passe en 3.0.1 pour une injection CSV à l'export des abonnés à la newsletter (score 6,1). psgdpr passe en 1.4.4 : un visiteur pouvait enregistrer un consentement au nom d'un autre client, avec la faille CVE-2026-92809 (score 5,3, selon l'éditeur).
Le tableau reprend les dix-huit correctifs de la note. Les scores sont les CVSS 3.1 publiés dans les avis GitHub du dépôt, identiques à ceux de la note. La dernière colonne reprend la condition d'accès indiquée par l'éditeur.
| Correctif | Score | Accès requis selon l'éditeur |
|---|---|---|
| Client API qui s'attribue n'importe quel droit (GHSA-p292-3rh4-vm4p) | 8,8 | client API avec le droit d'écriture sur les clients API |
| XSS stockée par fichiers SVG, gestionnaire de fichiers et logo (GHSA-99cp-c6mm-p7h5) | 8,7 | compte employé |
| Traversée de chemin dans les pièces jointes (GHSA-wrmc-gmx5-9hhc) | 8,5 | clé webservice avec écriture sur les pièces jointes |
| Accès aux clients d'une autre boutique via le webservice (GHSA-hjwq-7qvv-qxj4, CVE-2026-71519) | 8,1 | clé webservice autorisée sur une boutique d'une multiboutique |
| Installateur relançable sur une boutique installée (GHSA-8rxw-79mh-gmm5) | 8,1 | installateur encore accessible |
| Désérialisation dans le cookie de session de l'installateur (GHSA-h2q4-7fp7-m5jp) | 8,1 | installateur encore accessible |
Périmètre de boutique contourné par id_shop=all (GHSA-3f36-4qv4-vfgh, CVE-2026-71531) | 8,1 | clé webservice restreinte à certaines boutiques |
| Bon de réduction utilisable plus que sa quantité (GHSA-r246-6gw4-pj3p) | 7,5 | aucun |
| Commandes en double depuis un même panier (GHSA-2676-hc74-gg7v) | 7,5 | aucun |
| Traversée de chemin à l'import de thème ou de module (GHSA-7q68-ch46-pxmc) | 7,2 | employé autorisé à importer |
| Inclusion de fichier par le paramètre module des traductions (GHSA-fxq4-2mc8-99pr) | 7,2 | employé accédant à la page des traductions |
| Thème importé depuis une URL, enregistré dans le dossier d'administration (GHSA-95w6-v2wq-cv8w) | 7,2 | employé autorisé à importer un thème |
| Écriture hors dossier via les traductions d'e-mails (GHSA-5p6p-mx64-96jf) | 7,2 | employé accédant aux traductions d'e-mails |
| Cookie du mode débogage écrit sans contrôle (GHSA-95f5-jc9c-gg3q) | 7,2 | employé avec les droits Performance |
| Client API désactivé qui garde ses jetons (GHSA-6c2j-pgwm-95m9) | 7,1 | client API désactivé ou révoqué |
| Fichier de personnalisation téléchargeable avec la seule référence de commande (GHSA-fg9q-mm4c-h5xc) | 5,9 | connaître la référence de commande |
| Employé qui peut ajouter des produits à une commande existante (GHSA-mgcf-mrg4-mcxv) | 4,9 | employé avec le droit de création de commandes |
| Jeton de réinitialisation de mot de passe prévisible (GHSA-g6p7-cx52-hcrj) | 4,8 | connaître la clé sécurisée du client |
2. Ce que cela change pour une boutique PrestaShop
Trois points comptent pour une boutique.
La plupart des correctifs visent l'administration et les accès techniques. Douze entrées du tableau demandent un compte employé, un client API ou une clé webservice. Quatre autres dépendent d'un installateur encore accessible, ou d'un client qui connaît une référence ou une clé. Seules deux entrées, des courses sur les bons de réduction et les commandes gratuites, ne demandent aucun accès particulier.
La note ne contient aucun changement d'URL, de balisage, de sitemap ni de redirection. Les deux entrées hors sécurité (ordre des messages sur une fiche commande, clic sur une ligne de grille) concernent le back-office. Il n'y a donc pas de correctif SEO au sens strict.
La mise à jour passe par l'Update Assistant, précédée d'une sauvegarde complète de la base et des fichiers, comme le demande la note. Une boutique en 8.x doit viser la 8.2.9, et une boutique en 9.2.0 la 9.2.1.
3. Ce que la comparaison du code montre
Nous avons comparé les versions 9.2.0 et 9.2.1 sur GitHub : 59 commits et 117 fichiers modifiés ou créés. Les commits des correctifs sont datés, pour l'essentiel, du 7 au 26 octobre, soit de deux à cinq semaines avant la note. Quelqu'un qui suit le dépôt pouvait donc lire les changements avant l'annonce. Le tableau indique où se trouvent les changements, par famille de correctif.
| Famille de correctifs | Fichiers modifiés ou créés (extrait) |
|---|---|
| Pièces jointes | classes/Attachment.php, controllers/front/AttachmentController.php, src/Adapter/File/Uploader/AttachmentFileUploader.php |
| Webservice (deux entrées) | classes/webservice/WebserviceRequest.php (375 lignes modifiées), classes/webservice/WebserviceSpecificManagementAttachments.php |
| Installateur (deux entrées) | install-dev/index.php, install-dev/classes/session.php, src/PrestaShopBundle/Install/InstallationState.php (créé) |
| Bons de réduction et commandes simultanées | src/Adapter/CartRule/CartRuleQuantityReserver.php (créé), src/Adapter/Order/OrderCreationLock.php (créé) |
| Import d'archives | src/Core/Security/SafeZipExtractor.php (créé), src/Core/Security/PharDetector.php (créé), src/Core/Addon/Theme/ThemeZipUploader.php |
| Clients API | src/Core/Security/OAuth2/ApiClientScopeDelegationValidator.php (créé), src/PrestaShopBundle/Security/OAuth2/Repository/ClientRepository.php |
| Fichiers SVG | src/Core/Shop/LogoUploader.php, admin-dev/filemanager/upload.php |
| Mode débogage | src/Adapter/Debug/DebugMode.php, src/Adapter/Debug/DebugModeConfiguration.php |
| Réinitialisation de mot de passe | src/PrestaShopBundle/Security/Admin/EmployeePasswordResetter.php, controllers/front/PasswordController.php |
Le commit eb05379961, « Refuse to run the web installer on an already installed shop », est daté du 12 octobre. Il refuse désormais de relancer l'installateur sur une boutique déjà installée. Cette lecture ne prouve pas qu'une boutique a été attaquée. Elle montre seulement à quel endroit le code a changé.
Que vérifier cette semaine
- Sauvegardez, puis mettez à jour. Sauvegarde complète de la base et des fichiers, puis mise à jour avec l'Update Assistant. Une boutique en 8.x vise la 8.2.9.
- Ouvrez le rapport Security issues de la Search Console. Un compteur en haut indique les problèmes ; une coche verte indique un site sans problème. Le libellé peut différer selon la langue de votre interface. S'il reste des problèmes, prenez les URL d'exemple et corrigez-les sur toutes les pages : Google ne rétablit pas un site corrigé seulement en partie.
- Cherchez les pages que vous n'avez pas créées. Lancez
site:votre-domainedans Google et lisez votresitemap.xml. Comparez avec le catalogue et les pages CMS de votre back-office. - Relisez votre
robots.txt. PrestaShop régénère ce fichier lors de certaines sauvegardes d'URL de boutique, comme le décrit notre article du 31 octobre. Une ligne que vous n'avez pas écrite mérite une vérification. - Vérifiez qu'aucun installateur ne répond sur votre domaine. S'il répond, traitez ce point avant tout le reste.
- Auditez les accès. Listez les employés qui peuvent importer des thèmes ou des modules, modifier les traductions, gérer les droits Performance ou créer des commandes. Listez aussi les clés webservice et les clients API, et désactivez ceux qui ne servent plus. Ce sont les profils visés par les entrées du tableau.
Limites
- Aucune boutique n'a été testée. Cet article ne mesure ni le nombre de boutiques touchées, ni un effet sur le trafic ou le classement.
- Les scores viennent des avis GitHub de PrestaShop. Les identifiants CVE-2026-71519 et CVE-2026-71531 ne figuraient pas encore sur NVD à la date de lecture.
- Les sources ne disent pas qu'une de ces failles est exploitée en ce moment. Les conséquences SEO décrites ici reposent sur la définition de contenu piraté donnée par Google, pas sur un mécanisme interne de son algorithme.
- Les libellés français du rapport Search Console n'ont pas été vérifiés dans une interface en français.
Sources
- PrestaShop Build, « PrestaShop 9.2.1 is now available », 9 novembre 2026, consulté le 9 novembre 2026 : build.prestashop-project.org/news/2026/prestashop-9-2-1-security-release/
- GitHub, PrestaShop 9.2.1 (balise publiée le 9 novembre 2026 à 12 h 00 UTC) : github.com/PrestaShop/PrestaShop/releases/tag/9.2.1
- GitHub, avis de sécurité du dépôt PrestaShop, consulté le 9 novembre 2026 : github.com/PrestaShop/PrestaShop/security/advisories
- GitHub, comparaison 9.2.0 → 9.2.1, consultée le 9 novembre 2026 : github.com/PrestaShop/PrestaShop/compare/9.2.0...9.2.1
- NVD, CVE-2026-92809, consulté le 9 novembre 2026 : nvd.nist.gov/vuln/detail/CVE-2026-92809
- Google Search Central, « Spam policies for Google Web Search », section « Hacked content », consultée le 9 novembre 2026 : developers.google.com/search/docs/essentials/spam-policies
- Aide Search Console, « Security issues report », consultée le 9 novembre 2026 : support.google.com/webmasters/answer/9044101
Comment cet article a été produit. Faits vérifiés dans les sources listées ci-dessus ; lecture de la note de version PrestaShop 9.2.1, des avis GitHub, de la comparaison 9.2.0 → 9.2.1 et des passages utiles des pages Google citées, le 9 novembre 2026 (fichiers conservés). Rédigé avec l'aide de Claude (Anthropic), puis relu et validé par Lefi Abdelmonem avant publication.
À lire aussi : Entraînement IA : le robots.txt de PrestaShop face au signal commun