La vulnérabilité du plugin ACF WordPress affecte jusqu'à plus de 2 millions de sites

Le plugin WordPress Advanced Custom Fields (ACF) avec plus de 2 millions d'installations a annoncé la publication d'une mise à jour de sécurité, version 6.2.5, qui corrige une vulnérabilité dont la gravité n'est pas connue et seuls des détails limités ont été publiés sur la vulnérabilité. Bien que l'on ne sache pas quels types d'exploits sont possibles ni l'étendue des dommages qu'un attaquant pourrait causer, ACF a indiqué que la vulnérabilité nécessite un accès de niveau contributeur ou supérieur, ce qui, dans une certaine mesure, rend plus difficile le lancement d'une attaque.

ACF 6.2.5 peut introduire des changements importants

L'annonce de la version de sécurité avertissait que les modifications introduites par le correctif de mise à jour risquaient de provoquer le dysfonctionnement des sites Web et proposait des instructions sur la façon de déboguer les modifications. La mise à jour de la version 6.2.5 introduit un changement significatif dans la façon dont le shortcode ACF traite et génère du contenu HTML potentiellement dangereux. La sortie sera désormais échappée, un processus de sécurité qui supprime généralement le HTML indésirable comme les scripts malveillants ou le HTML mal formé afin que le HTML rendu soit sécurisé. Cependant, ce changement, tout en améliorant la sécurité, pourrait perturber les sites utilisant le shortcode pour restituer des éléments HTML complexes tels que des scripts ou des iframes. Les balises susceptibles d'être utilisées à mauvais escient, telles que et

Version de sécurité inhabituelle et complexe

Cette mise à jour de sécurité est unique car dans la plupart des cas, un chercheur en sécurité alerte confidentiellement l'éditeur du plugin WordPress d'une vulnérabilité et l'éditeur publie discrètement une mise à jour pour résoudre le problème. En règle générale, les chercheurs en sécurité attendent quelques semaines avant de faire une annonce publique afin que les utilisateurs aient suffisamment de temps pour mettre à jour leurs plugins avant que la vulnérabilité ne soit largement connue. Ce n'est pas le cas avec cette vulnérabilité car elle est compliquée par le potentiel de rupture de modifications. ACF prend donc la décision d'annoncer la version de sécurité et d'alerter les utilisateurs des problèmes potentiels causés par le correctif, qui peuvent être atténués, mais uniquement avec des changements du côté utilisateur d'ACF.

Un autre correctif de sécurité prévu pour février 2024

La complexité de corriger cette vulnérabilité a conduit au choix d'introduire une deuxième version de sécurité en février de cette année, la version 6.2.7. Cela donnera aux utilisateurs du plugin plus de temps pour se préparer et atténuer d’autres modifications potentielles. La version 6.2.7 étendra ces mesures de sécurité à des fonctions ACF supplémentaires, notamment the_field() et the_sub_field(). Les administrateurs de sites sont avertis des modifications potentielles dans la sortie HTML et il leur est conseillé de vérifier la compatibilité de leur site avec ces changements imminents.

Description de la vulnérabilité

La nécessité de cette mise à jour découle d'une vulnérabilité découverte permettant aux utilisateurs ayant des rôles de contributeur, généralement empêchés de publier du HTML non filtré, d'insérer du code malveillant. Ce problème contourne les protocoles de désinfection standard d'ACF, créant un risque potentiel pour la sécurité. Pour contrecarrer cette vulnérabilité, ACF 6.2.5 détectera et supprimera le HTML dangereux des sorties de shortcode. Les champs concernés déclencheront des messages d'erreur dans la zone d'administration de WordPress, aidant ainsi les propriétaires de sites à identifier et à corriger les erreurs.

Modifications à venir de la fonction the_field()

La fonction the_field() subira des révisions de sécurité dans la version 6.2.5 et la fonction the_sub_field() changera dans la version 6.2.7. Ces fonctions intégreront alors par défaut des mesures de sécurité HTML, empêchant la sortie de contenu potentiellement dangereux.

Selon l'annonce :

tel que des scripts ou des iframes pour les zones de texte ou les champs WYSIWYG. Concernant les changements à venir dans la version 6.2.7, la version 6.2.5 d'ACF proposera une alerte si votre site sera affecté par les changements à venir dans la version 6.2.7, ce qui vous laissera le temps de vous préparer à l'avance.

Conseils aux développeurs pour utiliser ACF en toute sécurité

Il est conseillé aux développeurs d'aborder la sortie HTML avec prudence. Dans les scénarios nécessitant une sortie HTML non filtrée, tels que les balises de script, l'utilisation de « echo get_field() » est recommandée. Dans les autres cas, il est recommandé d'appliquer des fonctions d'échappement appropriées, comme « wp_kses_post », une fonction de sécurité qui nettoie la sortie HTML.

Selon la page officielle de documentation de sécurité de WordPress sur la fonction « wp_kses_post »  :

« Assainit le contenu des balises HTML autorisées pour le contenu de la publication. Description

Le contenu de la publication fait référence au contenu de la page de type « publication » et non aux données $_POST des formulaires. Cette fonction attend des données sans barre oblique. La mise à jour d'ACF introduit également des modifications dans la gestion des types de champs, en particulier pour les champs produisant traditionnellement du HTML, tels que oEmbed et WYSIWYG. Ces modifications visent à équilibrer le besoin de sortie HTML avec les considérations de sécurité.

ACF explique :

« Pour prendre en charge cela, nous avons ajouté un moyen pour les types de champs d'indiquer qu'ils géreront l'échappement du HTML sur demande, via un nouveau paramètre $escape_html. Le nouveau paramètre est disponible sur get_field et get_field_object, et est transmis jusqu'à la méthode field format_value. Cela signifie que si le type de champ prend en charge la gestion de l'échappement lui-même, définir ceci sur true obtiendra cette valeur d'échappement. Cet argument ne doit pas être utilisé par les utilisateurs finaux, car il nécessite en outre une vérification pour s'assurer que le type de champ a été mis à jour pour prendre en charge l'échappement de son propre code HTML. Pour chaque champ ACF principal autre que WYSIWYG, cette propriété n’aura actuellement aucun effet sur la valeur. Tous les utilisateurs d'ACF sont invités à mettre à jour immédiatement vers la version 6.2.5 afin d'atténuer les risques de sécurité identifiés. De plus, il est conseillé à ceux qui n’utilisent pas le shortcode ACF de le désactiver complètement.

Lire l'annonce officielle :

Version de sécurité ACF 6.2.5

Tags: