Le 14 août 2023, notre équipe Wordfence Threat Intelligence a identifié et a lancé le processus de divulgation responsable d’une vulnérabilité de script intersite (XSS) stockée dans Plugin LiteSpeedCache, qui est activement installé sur plus de 4 000 000 de sites Web WordPress, ce qui en fait le plugin de cache le plus populaire. La vulnérabilité permet aux acteurs malveillants disposant d’autorisations de niveau contributeur ou supérieures d’injecter des scripts Web malveillants dans des pages à l’aide du shortcode du plugin.
Tous Wordfence Premium, Entretien de la clôture des motset Réponse de Wordfence les clients, ainsi que ceux qui utilisent encore la version gratuite de notre plugin, sont protégés contre tout exploit ciblant cette vulnérabilité par la protection intégrée Cross-Site Scripting du pare-feu Wordfence.
Nous avons contacté l’équipe LiteSpeed Cache le 14 août 2023 et nous avons reçu une réponse le même jour. Après avoir fourni tous les détails, l’équipe de développeurs a créé un correctif le 16 août 2023 et l’a publié dans le référentiel WordPress le 10 octobre 2023. Nous tenons à féliciter LiteSpeed Technologies pour leur réponse rapide et leur correctif opportun.
Nous invitons les utilisateurs à mettre à jour leurs sites avec la dernière version corrigée de LiteSpeed Cache, la version 5.7 au moment d’écrire ces lignes, dès que possible.
Résumé des vulnérabilités de Wordfence Intelligence
Le plugin LiteSpeed Cache pour WordPress est vulnérable au Stored Cross-Site Scripting via le shortcode « esi » dans les versions jusqu’à la version 5.6 incluse en raison d’une vérification insuffisante des entrées et d’un échappement de sortie sur les attributs fournis par l’utilisateur. Cela permet aux attaquants authentifiés disposant d’autorisations de niveau contributeur et supérieures d’injecter des scripts Web arbitraires dans des pages qui s’exécuteront chaque fois qu’un utilisateur accède à une page injectée.
Analyse technique
Le LiteSpeed Cache est un plugin d’accélération de site avec cache et optimisation au niveau du serveur. Il fournit un shortcode ([esi]
) qui peut être utilisé pour mettre en cache des blocs avec la technologie Edge Side Include lorsqu’ils sont ajoutés à une page WordPress, si ESI a été préalablement activé dans les paramètres.
Malheureusement, la mise en œuvre non sécurisée de la fonctionnalité shortcode du plugin permet l’injection de scripts Web arbitraires dans ces pages. L’examen du code vulnérable révèle que la méthode de code court dans la classe ESI ne nettoie pas correctement l’entrée « cache » fournie par l’utilisateur, et ne parvient donc pas à échapper à la sortie « contrôle » dérivée du paramètre « cache » lors de la construction du bloc ESI. Cela permet d’injecter des charges utiles Cross-Site Scripting basées sur des attributs via l’attribut « cache ».
public function shortcode( $atts ) { if ( empty( $atts[ 0 ] ) ) { Debug2::debug( '[ESI] ===shortcode wrong format', $atts ); return 'Wrong shortcode esi format'; } $cache = 'public,no-vary'; if ( ! empty( $atts[ 'cache' ] ) ) { $cache = $atts[ 'cache' ]; unset( $atts[ 'cache' ] ); } $silence = false; if ( ! empty( $atts[ '_ls_silence' ] ) ) { $silence = true; } do_action( 'litespeed_esi_shortcode-' . $atts[ 0 ] ); // Show ESI link return $this->sub_esi_block( 'esi', 'esi-shortcode', $atts, $cache, $silence ); }
La méthode shortcode dans la classe ESI
public function sub_esi_block( $block_id, $wrapper, $params = array(), $control = 'private,no-vary', $silence = false, $preserved = false, $svar = false, $inline_param = array() ) { if ( empty($block_id) || ! is_array($params) || preg_match('/[^\w-]/', $block_id) ) { return false; }
$output .= "<esi:include src='$url'"; if ( ! empty( $control ) ) { $output .= " cache-control='$control'"; }
L’extrait de méthode sub_esi_block dans la classe ESI
Cela permet aux acteurs malveillants de mener des attaques XSS stockées. Une fois qu’un script est injecté dans une page ou une publication, il s’exécutera chaque fois qu’un utilisateur accède à la page concernée. Bien que cette vulnérabilité nécessite qu’un compte de contributeur de confiance soit compromis ou qu’un utilisateur puisse s’inscrire en tant que contributeur, les acteurs malveillants qui réussissent pourraient voler des informations sensibles, manipuler le contenu du site, injecter des utilisateurs administratifs, modifier des fichiers ou rediriger les utilisateurs vers des sites Web malveillants qui sont autant de conséquences graves.
Possibilités d’exploitation de shortcode
Les versions précédentes de WordPress contenaient une vulnérabilité qui permettait aux shortcodes fournis par des commentateurs non authentifiés d’être rendus dans certaines configurations. Cela permettrait à des attaquants non authentifiés d’exploiter cette vulnérabilité de Cross-Site Scripting sur des installations vulnérables. Heureusement, cependant, une grande majorité de sites ont été automatiquement mis à niveau vers une version corrigée de WordPress au moment d’écrire ces lignes, ce qui signifie que la plupart des propriétaires de sites n’ont pas à s’inquiéter à ce sujet. Nous vous recommandons toujours fortement de vérifier que votre site a été mis à jour vers l’un des versions corrigées du noyau WordPress trouvées ici.
Chronologie de la divulgation
14 août 2023 – L’équipe Wordfence Threat Intelligence découvre la vulnérabilité XSS stockée dans LiteSpeed Cache.
14 août 2023 – Nous prenons contact avec le fournisseur du plugin en lui demandant de confirmer la boîte de réception pour gérer la discussion.
14 août 2023 – Le vendeur confirme la boîte de réception pour gérer la discussion.
14 août 2023 – Nous envoyons les détails complets de la divulgation. Le fournisseur accuse réception du rapport et commence à travailler sur un correctif.
16 août 2023 – Le fournisseur a créé le correctif et nous a envoyé le commit GitHub.
10 octobre 2023 – La version entièrement corrigée, 5.7, est publiée.
Conclusion
Dans cet article de blog, nous avons détaillé une vulnérabilité XSS stockée dans le Plugin LiteSpeedCache affectant les versions 5.6 et antérieures. Cette vulnérabilité permet aux auteurs de menaces authentifiés disposant d’autorisations de niveau contributeur ou supérieures d’injecter des scripts Web malveillants dans des pages qui s’exécutent lorsqu’un utilisateur accède à une page affectée. La vulnérabilité a été entièrement corrigée dans la version 5.7 du plugin.
Nous encourageons les utilisateurs de WordPress à vérifier que leurs sites sont mis à jour avec la dernière version corrigée de LiteSpeed Cache.
Tous les utilisateurs de Wordfence, y compris ceux qui utilisent Wordfence Premium, Entretien de la clôture des motset Réponse de Wordfenceainsi que les sites exécutant toujours la version gratuite de Wordfence, sont entièrement protégés contre cette vulnérabilité.
Si vous connaissez quelqu’un qui utilise ce plugin sur son site, nous vous recommandons de partager cet avis avec lui pour garantir la sécurité de son site, car cette vulnérabilité présente un risque important.
Pour les chercheurs en sécurité cherchant à divulguer les vulnérabilités de manière responsable et à obtenir un identifiant CVE, vous pouvez soumettez vos conclusions à Wordfence Intelligence et potentiellement gagner une place sur notre classement.
Source link