WordPress peut être utilisé par plus de 30 % des sites web, cela n’empêche pas le champion des CMS d’être hanté par de nombreux problèmes de sécurité. Après que des chercheurs ont découvert une faille dans son noyau à laquelle l’équipe de WordPress n’a apporté aucune solution, des chercheurs en sécurité se sont rendu compte qu’une fois de plus, une vulnérabilité sévère de WordPress a été délaissée sans être corrigée et pourrait affecter les sites web utilisant le CMS.
La vulnérabilité en question est liée à un bogue PHP lié à la désérialisation des données (ou unmarshalling) a révélé un chercheur en sécurité. Le bogue a été rapporté à l’équipe de WordPress depuis le 28 février 2017 et n’a pas reçu de correctif pendant toute cette période (plus d’un an et demi).
Le bogue permet aux hackers de compromettre tout le système en exploitant le framework PHP de WordPress. À vrai dire, la vulnérabilité n’affecte pas seulement le CMS, elle concerne toutes les applications et bibliothèques PHP qui manipulent des données fournies par utilisateur. De ce fait, on peut dire que la vulnérabilité se trouve dans PHP et pas vraiment WordPress.
Lors de deux conférences de sécurité, le chercheur en sécurité Sam Thomas a révélé comment en utilisant le processus de désérialisation de PHP, il est possible d’exécuter du code à distance sur des serveurs et applications.
La manipulation consiste à téléverser des données déformées sur un serveur. Le but étant de lancer une opération de fichier faisant appel au paquetage « phar:// » de PHP. À son tour, cette manipulation va déclencher des failles dans le XXE — XML (eXternal Entity) et SSRF (Server Side Request Forgery) qui sont la cause d’une désérialisation du code. Bien que ces failles ne sont pas à haut risque, elles peuvent servir de voie pour mener des attaques d’exécution de code plus sérieuses.
Lors de sa présentation, Sam Thomas a fait la démonstration de trois cas d’exploitation de ce bogue pour mener des attaques ciblant non seulement WordPress, mais aussi Typo3 et la bibliothèque TCPDF intégrée dans le CMS Contao.
Sur WordPress, le bogue de désérialisation affecte la fonctionnalité de traitement d’images miniatures, plus précisément la fonction wp_get_attachment_thumb_file se trouvant dans /wpincludes/post.php, avec la nécessité que le hacker ait la possibilité de téléverser une image déformée sur la plateforme. Toutefois, en raison des changements apportés à la version 4.9 de WordPress, l’attaque requiert deux types différents de charges utiles (payload), une pour les versions antérieures et une pour les versions ultérieures (après 4.9).
Toute la technique peut être suivie comme décrite par le chercheur sur cette vidéo. Un document est disponible également pour plus de détails.