WordPress, vulnérabilité XSS affectant les plugins et thèmes

Une vulnérabilité XSS ( Cross-Site Scripting )  a été découverte dans les plugins et thèmes WordPress. Cette vulnérabilité est due au fait d’une utilisation abusive des fonctions add_query_arg() et remove_query_arg().

Ces 2 fonctions sont très populaires auprès des développeurs, et servent à modifier ou ajouter des variables pour les requêtes URL, voir récupérer l’URL complète avec les données qui ont été transmises.

A leur décharge, la documentation de WordPress n’est pas très claire sur le sujet.

Voilà une liste des plugins connus, affectés à ce jour :

Donc dans tous les cas, il vous faut vérifier la présence de ces fonctions dans vos thèmes et plugins, afin d’y appliquer le correctif suivant le plus rapidement possible, en espèrant que des MàJ des versions originales de vos thèmes et plugins seront corrigées par leur auteur très prochainement.

En termes de bonne pratique, il est impératif d’échapper la sortie de add_query_arg() et remove_query_arg(). Vous devez utiliser esc_url() pour cela.

<a href="<?php echo esc_url( home_url( '/' ) ); ?>">Home</a>

Quand il est utilisé dans les en-têtes HTTP ou dans le cadre d’une requête HTTP (dans le cadre d’une en-tête de redirection ou un appel wp_remote_get() ), vous devez utiliser esc_url_raw().

<!-- Right -->
<?php
    $url = 'http://wordpress.org';
    $response = wp_remote_get( esc_url_raw( $url ) ); // no need to escape entities
    if ( !is_wp_error( $response ) ) {
        echo wp_remote_retrieve_body( $response );
    }
?>

<!-- Wrong! Use esc_url instead! -->
<img src='<?php echo esc_url_raw( $url ); ?>' />
<a href='<?php echo esc_url_raw( $url ); ?>'>WordPress</a>

Attention aussi si vous utiliser $_SERVER[‘REQUEST_URI’] , plutôt que “//toto.com/mondir/monfichier.css”, même problème même solution.

Il y a d’autres solutions en ligne en fonction de vos besoins ex : Safe add_query_arg and remove_query_arg. A vous de voir, mais comme certains plugins et thèmes ne seront pas MàJ, le plus sécurisé serait de patcher rapidement votre version actuelle.

Et voilà votre WordPress sera sécurisé, du moins jusqu’à la prochaine faille.

Sources : blog.sucuri.net , wordpress.org

5.00 avg. rating (94% score) - 3 votes