CVE-2026-115806 a été publiée par NVD le 24 octobre 2026. Elle touche Prime Mover – Backup and Migration, un plugin WordPress de sauvegarde et de migration de sites, dans toutes ses versions jusqu'à la 2.2.1 incluse.
Les injections d'objet PHP sont fréquentes dans les plugins WordPress. Celle-ci sort du lot pour deux raisons :
- l'attaquant n'a besoin d'aucun compte : un simple commentaire suffit à déposer la charge ;
- la chaîne de gadgets est livrée avec le plugin lui-même. Pas besoin qu'un autre plugin ou thème soit installé.
Le déclencheur, lui, est une action parfaitement banale : l'administrateur qui lance une sauvegarde ou une restauration.
La vulnérabilité
| Champ | Valeur |
|---|---|
| CVE | CVE-2026-115806 |
| CVSS 3.1 (Wordfence) | 9.8 (CRITICAL) — AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Type | Désérialisation de données non fiables (CWE-502) |
| Versions | Toutes, jusqu'à 2.2.1 incluse |
| Publication NVD | 2026-10-24 |
| Statut NVD | Received (pas encore analysée) |
Le score est celui de Wordfence (CNA). NVD n'a pas encore analysé l'entrée ni publié de configuration CPE. Aucune entrée au CISA KEV à la date de rédaction.
Le mécanisme, en trois temps
1. Le dépôt : un commentaire
Un visiteur anonyme poste un commentaire par le formulaire standard de WordPress (wp-comments-post.php). Son contenu est un objet PHP sérialisé, encodé en base64. Il est stocké tel quel dans la colonne comment_content de la table wp_comments.
À ce stade, rien ne se passe. Pour WordPress, c'est un commentaire comme un autre.
2. Le déclencheur : la sauvegarde
Lors d'un export ou d'une restauration, Prime Mover passe le contenu de la base dans une routine de recherche-remplacement (recursiveUnserializeReplace()), qui sert à réécrire les URL et chemins du site lors d'une migration. Cette routine décode le base64 et transmet le résultat à unserialize(), sans restriction allowed_classes.
L'objet de l'attaquant est alors reconstruit, en mémoire, dans le contexte d'une opération lancée par un administrateur.
3. La chaîne : Freemius, embarqué dans le plugin
Une injection d'objet n'a d'effet que si une classe chargée offre une chaîne de gadgets (POP chain) exploitable — on l'expliquait à propos de LearnPress. Ici, la description NVD la nomme : elle se trouve dans la bibliothèque Freemius que Prime Mover embarque, et mène de FS_Clone_Manager::__set jusqu'à update_option().
update_option() écrit dans la table des options de WordPress. Sur un site WordPress, contrôler une option, c'est contrôler la configuration du site (par exemple le rôle attribué par défaut aux nouveaux inscrits, ou l'ouverture des inscriptions). La description NVD s'arrête à update_option() ; le passage à une prise de contrôle complète est notre lecture de ce que permet cette primitive, cohérente avec le 9.8 attribué par Wordfence.
Le paradoxe du UI:N
Le vecteur retient UI:N (aucune interaction utilisateur), alors que l'exploitation attend qu'un administrateur lance une sauvegarde ou une restauration. Ce choix se défend : l'administrateur ne fait rien d'inhabituel et n'a aucun moyen de voir le piège. Mais il a une conséquence pratique : l'exploitation peut survenir longtemps après le dépôt, à la prochaine sauvegarde planifiée ou la prochaine migration. Un commentaire déposé il y a des semaines peut encore être en base.
Versions affectées
NVD (via Wordfence) indique toutes les versions jusqu'à et y compris 2.2.1, sans version corrigée. Vérifie le journal des modifications du plugin sur WordPress.org et l'entrée Wordfence citée en référence avant de considérer une version comme sûre.
wp plugin list --name=prime-mover --fields=name,status,version
Détection
- Commentaires suspects : contenu composé d'une longue chaîne base64, souvent sans espaces, qui une fois décodée commence par
O:oua:(format de sérialisation PHP). Cela inclut les commentaires en attente de modération et en spam : ils sont eux aussi stockés danswp_comments. - Options modifiées sans action d'un administrateur, en particulier
users_can_registeretdefault_role. - Nouveaux comptes administrateurs ou changements de rôle inexpliqués, juste après une sauvegarde ou une restauration.
- Journaux d'accès : rafales de
POSTverswp-comments-post.phpdepuis une même IP.
SELECT comment_ID, comment_date, comment_approved, LEFT(comment_content, 80)
FROM wp_comments
WHERE comment_content REGEXP '^[A-Za-z0-9+/=]{200,}$';
(Adapte le préfixe de table si ton site n'utilise pas wp_.)
Mitigation
- Identifier les sites qui utilisent Prime Mover.
- Mettre à jour au-delà de 2.2.1 dès qu'une version corrigée est publiée ; à défaut, désactiver le plugin et suspendre les sauvegardes et migrations qui passent par lui.
- Avant toute sauvegarde ou restauration avec une version vulnérable : purger les commentaires en spam et en attente, et contrôler les commentaires approuvés avec la requête ci-dessus. C'est notre recommandation, pas une consigne de l'éditeur : elle vise directement le vecteur de dépôt décrit par NVD.
- Une archive de sauvegarde créée à partir d'une base piégée transporte le commentaire : la restaurer avec une version vulnérable du plugin, sur le même site ou ailleurs, expose de nouveau au déclencheur.
- Si les commentaires ne servent pas sur le site, les fermer retire le point de dépôt.
Pourquoi surveiller en continu vos plugins WordPress
Un plugin de sauvegarde est installé « une fois pour toutes » et rarement revu. Ici, c'est précisément lui qui transforme un commentaire anonyme en modification de la configuration du site, au moment où l'on croit mettre ses données à l'abri.
Avec cveo.tech, inventorie les plugins de tes sites WordPress avec leur version, et reçois une alerte dès qu'une CVE critique les touche.