Nouvelles failles de sécurité XSS dans WordPress

wptexturize()

Le finlandais Jouko Pynnonen du spécialiste de sécurité Klikki Oy a découvert ce qu’il estime être la plus grosse faille de sécurité dans WordPress depuis 2009.

WordPress est le système de gestion de contenu le plus populaire sur le Web, utilisé par des blogueurs comme des entreprises.

Il s’agit d’une faille de type XSS, ou cross-site scripting, qui affecte les pages HTML en injectant du code dans une page.

Dans ce cas précis, Pyonnen a découvert une erreur dans la fonction wptexturize(), qui améliore le formatage des pages WordPress. Pour ne pas interférer avec le formatage HTML, elle coupe la page en plusieurs morceaux, ne traitant que la partie textuelle. Pour cela, elle utilise une expression rationnelle :

$textarr = preg_split('/(<.*>|\[.*\])/Us', $text, -1, PREG_SPLIT_DELIM_CAPTURE);

La gestion des expressions rationnelles est défaillante et dans certains cas peut confondre le système qui finira par autoriser l’ajout d’éléments HTML et d’attributs interdits, comme onmouseover. Ce qui au final permet d’exécuter un script JavaScript malveillant, notamment dans les commentaires destinés aux administrateurs des sites WordPress.

WorPress a été informée du bogue le 26 septembre par Klikki Oy, et la gestion des expressions rationnelles a été modifiée depuis dans les versions 4 et postérieures de WordPress. Ces systèmes sont donc à l’abri.

La faille concerne toujours toutes les versions antérieures, soit plus de 85 % des installations dans le monde, ce qui représente des dizaines de millions de sites.

 

Solutions

Pour supprimer le risque, la solution la plus simple est donc de mettre à jour la version de WordPress.

Quand ce n’est pas possible il existe deux possibilités :

– Désactiver la fonction dans le fichier wp-includes/formatting.php en rajoutant un return:

function wptexturize($text) {
 return $text; // Ajoutez cette ligne
 global $wp_cockneyreplace;

– Télécharger un plugin de Klikki Oy, Unquote, qui désactive la fonction.

 

Autres failles

L’équipe de WordPress a découvert elle-même huit autres failles de sécurité, dont une XSS, dans la version 4.0, qui ont été corrigées dans la version 4.0.1.

Une faille de sécurité XSS a été découverte par la firme Sucuri dans le plugin WP-Statistics, corrigée dans la version 8.3.1, et dont les détails seront rendus publics dans 30 jours.