Avis de sécurité Bookly
Si vous avez reçu de ma part un courriel renvoyant vers cette page, c’est parce que votre site
semble utiliser une version de Bookly (l’extension WordPress de prise de rendez-vous
bookly-responsive-appointment-booking-tool) qui entre dans la plage affectée par un problème
de sécurité connu. Cette page explique de quoi il s’agit, comment vérifier votre version,
comment mettre à jour et la seule action de suivi qui vaut la peine ensuite.
Il s’agit de CVE-2026-13395, une injection SQL sans authentification dans le parcours de réservation public de l’extension. Elle concerne les versions 11.3 à 27.7 et est corrigée dans la 27.8, publiée le 10 juillet 2026. Si vous utilisez une version affectée, mettez Bookly à jour vers la 27.8 ou une version ultérieure (la 27.9 est la version actuelle et contient également le correctif). Rien n’indique que ce problème soit exploité contre un site quelconque, et aucun rapport public d’exploitation n’existe : cette page est une information de précaution, pas un rapport d’incident.
Contrairement à certains de mes autres avis, celui-ci ne dépend pas de votre configuration. Aucun réglage n’a besoin d’être activé pour que la faille soit atteignable : le chemin de requête concerné est ouvert aux visiteurs non connectés, sur une installation ordinaire. Si votre version de Bookly se situe dans la plage affectée, la mise à jour mérite d’être faite rapidement.
C’est une faille de l’extension, pas du cœur de WordPress. Un WordPress parfaitement à jour ne vous protège pas si l’extension Bookly est elle-même dans une version affectée.
Ce message est-il légitime ?
Oui. Il s’agit d’un avis de divulgation responsable, de bonne foi, émis par un chercheur en sécurité indépendant. Je ne vous demande ni argent, ni mots de passe, ni accès à votre site, et je n’ai pas tenté d’y entrer, de lui envoyer quoi que ce soit ni d’exploiter quoi que ce soit.
Je me suis contenté de consulter des fichiers publics que votre site sert à tout visiteur (de la même manière que votre page d’accueil est publique) et de relever le numéro de version que publie l’extension Bookly. En particulier, je n’ai rien envoyé à votre formulaire de réservation ni au chemin de requête concerné, et cette vérification ne touche ni vos données, ni votre espace d’administration, ni aucune partie privée du site (plus de détails sous Ce que j’ai fait et n’ai pas fait).
Si vous souhaitez vérifier qui je suis, voyez les coordonnées au bas de cette page et la page À propos.
Pourquoi c’est important
Bookly est l’une des extensions de prise de rendez-vous les plus utilisées sous WordPress, présente dans le répertoire officiel depuis 2014 et installée sur des dizaines de milliers de sites. Elle publie un formulaire de réservation sur la partie publique de votre site, afin que les visiteurs choisissent une prestation, un intervenant et un créneau sans avoir de compte.
Dans les versions affectées, l’une des valeurs que ce formulaire renvoie, l’identifiant de l’intervenant choisi par le visiteur, est enregistrée telle quelle, sans contrôle, puis insérée directement dans une requête de base de données au lieu d’être transmise comme paramètre. Quelqu’un qui envoie une valeur forgée à la place d’un identifiant ordinaire peut donc modifier le sens de cette requête. Concrètement : une personne sans compte et sans connexion pourrait lire dans votre base de données des informations que la requête n’était jamais censée renvoyer, y compris les empreintes (hachages) des mots de passe de vos comptes WordPress.
Deux choses méritent d’être dites clairement, dans les deux sens.
D’abord, pour garder la mesure : il s’agit d’un problème de lecture de données, pas d’une prise de contrôle du serveur ni du compte administrateur. Cela ne permet pas, en soi, d’exécuter du code sur votre serveur ni de se connecter à votre espace d’administration. Une empreinte n’est pas un mot de passe : il faut encore la casser pour qu’elle devienne un accès. Et rien n’indique une exploitation : l’autorité qui a attribué le CVE n’a publié aucun score de gravité, la faille ne figure pas au catalogue KEV de la CISA américaine, son score de probabilité d’exploitation (EPSS) n’est pas attribué, et je n’ai connaissance d’aucun rapport d’exploitation.
Ensuite, sans minimiser : ni connexion, ni jeton anti-CSRF, ni réglage particulier de l’extension ne se dresse entre un visiteur anonyme et ce chemin. Il est atteignable sur une installation par défaut de l’extension gratuite. C’est pourquoi la recommandation est de mettre à jour rapidement plutôt que d’attendre la prochaine fenêtre de maintenance.
Si mon courriel citait ce problème, c’est que la version annoncée par votre site entre dans la plage affectée. Je n’ai pas testé si votre site en particulier est exploitable ; je n’ai observé que la version.
Suis-je concerné ?
Tout tient à une question : quelle version de Bookly utilisez-vous ? Vous n’avez pas à me croire sur parole, et il existe deux façons de vérifier.
Depuis l’espace d’administration WordPress (source faisant foi) :
- Connectez-vous à votre tableau de bord WordPress (généralement
votredomaine.fr/wp-admin). - Allez dans Extensions puis Extensions installées.
- Repérez Bookly, l’entrée dont le dossier est
bookly-responsive-appointment-booking-tool, et notez la version affichée sous son nom.
Depuis le manifeste public (sans connexion) : ouvrez
votredomaine.fr/wp-content/plugins/bookly-responsive-appointment-booking-tool/readme.txt dans
un navigateur. La ligne Stable tag:, près du début, indique la version annoncée par votre
installation : c’est ce même fichier public que j’ai lu.
Appliquez ensuite cette règle, en notant que les versions se comparent numériquement, pas alphabétiquement:
- 11.3 à 27.7 : affectée. Mettez à jour maintenant.
- 27.8 ou plus récente : déjà corrigée. Cela inclut la 27.9, qui conserve le correctif.
- Antérieure à 11.3 : non concernée par ce problème. La construction de requête dangereuse n’existait pas dans ces versions : les identifiants d’intervenants passaient par le constructeur de requêtes paramétrées de l’extension. Une version aussi ancienne mérite d’être mise à jour pour bien d’autres raisons, mais pas pour celle-ci.
- Ne lisez pas les numéros de version comme du texte. Bookly a un numéro majeur à deux
chiffres, si bien que l’ordre alphabétique se trompe deux fois :
3.3paraît plus grand que27.8alors qu’il est bien plus ancien, et27.10paraît plus petit que27.7alors qu’il est plus récent. Comparez nombre par nombre.
Une remarque sur les modules complémentaires de Bookly. Les extensions payantes de Bookly
(Pro et les différents paquets bookly-addon-*) s’installent comme des extensions distinctes
ayant leurs propres numéros de version, et les URL de leurs fichiers peuvent porter la
version de l’extension principale plutôt que la leur. La version qui compte pour cet avis est
celle de l’extension Bookly principale, obtenue par l’une des deux vérifications ci-dessus,
pas un numéro relevé sur les fichiers d’un module complémentaire.
Si vous ne voyez aucun fichier Bookly depuis l’extérieur. Bookly propose un réglage qui détermine si ses scripts et ses styles se chargent sur toutes les pages ou seulement sur celles qui portent un formulaire de réservation. Si le vôtre est sur la seconde option, une bien plus petite partie de l’extension est visible de l’extérieur. Ce réglage n’influe que sur ce qu’un visiteur peut voir : il ne change rien à la présence ni à l’accessibilité de la faille. Vérifiez votre version dans l’administration.
Comment mettre à jour
Le plus sûr est de passer par WordPress lui-même, après une sauvegarde:
- Sauvegardez votre site (fichiers et base de données) avant toute modification. La plupart des hébergeurs proposent des sauvegardes en un clic, sinon utilisez une extension de sauvegarde.
- Dans l’administration, allez dans Tableau de bord puis Mises à jour, ou dans Extensions puis Extensions installées. Si une mise à jour de Bookly est proposée, installez-la depuis là.
- Si vous préférez la ligne de commande, WP-CLI fait la même chose:
wp plugin update bookly-responsive-appointment-booking-tool. - Si aucune mise à jour n’apparaît, vous pouvez récupérer la dernière version directement sur la page de l’extension dans le répertoire WordPress.org, Bookly, puis mettre à jour via Extensions, Ajouter une extension, Téléverser une extension.
- Après la mise à jour, vérifiez le nouveau numéro de version (27.8 ou plus récent) avec les étapes ci-dessus, et contrôlez que votre formulaire de réservation et vos rendez-vous existants fonctionnent normalement.
Si vous utilisez les modules payants de Bookly, mettez-les à jour en même temps que l’extension principale : leurs versions vont généralement de pair.
Tant que vous y êtes, vérifiez que le cœur de WordPress et vos autres extensions sont à jour : le même principe vaut pour tous.
Après la mise à jour
Passer en 27.8 ou plus récent referme le problème, et rien n’indique que cette faille ait été exploitée où que ce soit : aucune réponse d’urgence n’est impliquée. Vous n’avez pas à considérer votre site comme compromis ni à le mettre hors ligne.
Une action de suivi mérite toutefois d’être réellement effectuée, et elle découle directement de ce que cette faille pouvait atteindre. Puisque les empreintes de mots de passe WordPress faisaient partie des données que la requête pouvait renvoyer, et qu’une empreinte capturée avant reste utile à un attaquant après votre mise à jour, la précaution raisonnable est de réinitialiser les mots de passe de vos comptes administrateurs une fois la mise à jour faite. Deux gestes plus modestes l’accompagnent bien:
- Passez en revue vos comptes administrateurs et éditeurs pour repérer ceux que vous ne reconnaissez pas, comme vous examineriez ordinairement les accès au site.
- Régénérez les clés secrètes et « salts » de WordPress dans
wp-config.php(de nouvelles valeurs sont à un clic sur le générateur officiel; les remplacer déconnecte tous les utilisateurs une fois).
Considérez cela comme de l’entretien de sécurité ordinaire, pas comme une réponse à incident.
Ce que j’ai fait et n’ai pas fait
Pour être parfaitement transparent sur la vérification à l’origine de mon courriel : je n’ai lu
que des fichiers publics que votre site sert déjà à tout visiteur, précisément le readme.txt
public de l’extension Bookly et votre page d’accueil. Je n’ai pas accédé à votre espace
d’administration WordPress, à votre base de données, ni à aucune partie privée du site.
En particulier, je n’ai jamais rien envoyé à votre formulaire de réservation ni au chemin de requête concerné : rien n’a été soumis, testé ni exploité. Cela pèse davantage ici que sur la plupart de ces pages : la faille est une requête sans authentification vers ce chemin, si bien que « je n’y ai pas touché » constitue toute la différence entre une divulgation et une intrusion.
Il s’agit d’une observation fondée sur la version : votre site annonce une version dans la plage affectée. Un site dans cette plage peut déjà être protégé par d’autres moyens, comme un pare-feu applicatif ou un correctif rétroporté. Cet avis n’affirme pas que votre site était exploitable au moment de ma vérification.
Je n’ai pas de webmestre / je suis bloqué
Si vous n’êtes pas la personne qui maintient le site, transmettez cette page à celle qui s’en charge (votre développeur, votre agence ou votre hébergeur). Ces étapes lui parleront immédiatement.
Si vous maintenez le site vous-même et que vous êtes bloqué, je vous oriente volontiers, gratuitement. Écrivez-moi via les coordonnées ci-dessous.
Contact
Evan Harris, chercheur en sécurité
- Courriel: security@mail.mcpsec.dev
- X: @Evan__Harris
- GitHub: eharris128
- LinkedIn: Evan Harris
Je prends contact au sujet de ce genre de problème uniquement pour aider les exploitants à sécuriser leurs sites. Si vous préférez ne plus être contacté, dites-le-moi simplement et je le respecterai.
Références
Avis officiels et suivi
Éditeur / extension