Notre précédent article de blog explorait une vulnérabilité XSS au sein de l'extension Bookly (extension WordPress de réservation et de planification en ligne). Aujourd'hui, nous allons examiner une autre vulnérabilité XSS découverte lors de nos recherches sur cette même extension.
Notre équipe a découvert cette vulnérabilité en mars 2023. Suite à sa découverte, nous avons immédiatement lancé des procédures de divulgation responsable afin de garantir sa correction rapide. L'identifiant CVE attribué à cette vulnérabilité est CVE-2023-1159, et elle a été corrigée avec succès en mai 2023.
Dans cet article, nous analyserons en détail la cause profonde de la vulnérabilité découverte dans le plugin Bookly. Nous examinerons également le correctif publié pour corriger efficacement ce problème.
L'analyse CVE–2023-1159 – Script intersite authentifié (Admin+) stocké via le titre du service :
Nos recherches ont identifié une vulnérabilité dans le plugin Bookly liée au champ « Titre du service ». Cette vulnérabilité expose le plugin à des attaques de type cross-site scripting (XSS) en raison de mesures de nettoyage des entrées insuffisantes. Il est important de noter que les administrateurs peuvent modifier ou définir le titre directement depuis l'interface du plugin.
Après une enquête plus approfondie, nous avons découvert que si un titre malveillant est défini dans le service, il est affiché et exécuté dans le navigateur du client à son insu et sans son consentement lorsqu'il accède au service en question. Cette exécution peut potentiellement permettre l'exécution de code à distance, ce qui représente un risque de sécurité important.
Pour fournir une compréhension plus précise, l'extrait de code suivant illustre comment la valeur du champ « Titre du service » est définie et lue lors de la création d'un nouveau service :

Fig1. Méthode createService, qui est appelée lorsqu'un nouveau service est créé.
'createService' invoque à son tour la méthode 'parameters'.

La Fig2. montre la méthode des paramètres.
La méthode « parameters » appelle la fonction « getRequest() ». Cette fonction récupère les valeurs saisies dans l'interface. Ces valeurs sont ensuite transmises à la méthode « createService », où elles sont stockées. Il est toutefois essentiel de souligner qu'aucune vérification des entrées n'est effectuée pendant ce processus, ce qui expose le système à des risques de sécurité potentiels.

La Fig3. montre la méthode getRequest.
Dévoilement du correctif : enquête sur le patch
Après avoir examiné le correctif corrigeant la vulnérabilité, nous avons constaté que la variable $parameters avait été correctement nettoyée, empêchant ainsi toute faille de sécurité potentielle au sein du programme. Cette amélioration notable comprend l'implémentation de la fonction « unfiltered_html » et de la méthode « stripScripts », essentielles pour nettoyer la variable $parameters et atténuer les attaques potentielles.
Grâce à la fonction « unfiltered_html », le correctif garantit que seuls les utilisateurs autorisés et disposant des capacités nécessaires peuvent soumettre du contenu HTML non filtré. Cela empêche l'introduction de scripts malveillants et réduit considérablement le risque d'attaques de type cross-site scripting (XSS). La méthode « stripScripts » améliore encore le processus de nettoyage en supprimant ou en neutralisant tout code JavaScript intégré dans les $parameters.
Dans l’ensemble, cette approche globale de la désinfection garantit que la variable $parameters peut être utilisée en toute sécurité dans toute la base de code, minimisant ainsi le potentiel de vulnérabilités de sécurité et renforçant la sécurité globale du programme.

Fig 4. représentant le patch.
Conclusion
Dans cet article de blog, nous avons examiné une vulnérabilité découverte dans le plugin Bookly, qui permettait à des attaquants authentifiés d'insérer des scripts malveillants, menaçant ainsi les appareils des utilisateurs. Heureusement, cette vulnérabilité est corrigée dans la version 21.8. Nous conseillons aux propriétaires de sites WordPress de mettre à jour rapidement leurs installations vers la dernière version du plugin, essentielle pour limiter les attaques potentielles. L'application rapide des mises à jour et des correctifs est essentielle pour maintenir une présence en ligne sécurisée. De plus, lorsque vous attribuez la fonctionnalité « unfiltered_html » à un rôle utilisateur, soyez prudent et attribuez-la uniquement aux personnes de confiance qui en ont réellement besoin, compte tenu des implications potentielles de cette fonctionnalité en matière de sécurité.
Tous SEQRITE Les clients de Quick Heal sont protégés contre toute exploitation de cette vulnérabilité grâce aux signatures suivantes :
- HTTP/CVE-2023-1159!VK.47550
- HTTP/CVE-2023-1159!VK.47551
- HTTP/CVE-2023-1159!VK.47552
Coauteur:
Anjali Rajkumar Raut



