icetray - Fotolia
Patch et repatch pour PHPMailer
La très populaire librairie a fait l’objet d’un premier correctif pour une importante vulnérabilité. Mais celui-ci pouvait être contourné. Un second correctif est distribué.
Le correctif avait besoin d’un correctif. La librairie PHPMailer, intégrée à de très nombreux projets open source, dont Wordpress, Joomla et Drupal, est utilisée par des dizaines de millions de sites Web. Une vulnérabilité l’affectait, permettant potentiellement de forcer l’exécution à distance de code malveillant pour compromettre les applications PHP visées. Une première rustine devait corriger cela. Las, comme le relèvent les équipes du projet PHPMailer, un exploit visant de correctif a été publié le jour même de la diffusion du premier correctif, poussant à la production d’un second.
Le chercheur Dawid Golunkski avait initialement dévoilé la vulnérabilité affectant PHPMailer, référencée CVE-2016-10033. Celle-ci peut être exploitée lorsqu’un utilisateur a le droit de renseignement le champ expéditeur : un attaquant peut construire une adresse e-mail intégrant des commandes shell exécutables.
Le premier correctif adressait cette vulnérabilité en empêchant qu’un attaquant ne puisse construire une adresse e-mail ne puisse cacher une commande shell en profitant de la fonction PHP escapeshellarg(). Celle-ci permet d’utiliser une chaîne de caractères comme argument pour une commande shell. Mais voilà, une autre fonction PHP, escapeshellcmd(), peut être utilisée de la même manière. Et donc, malgré le déploiement du premier correctif, comme l’explique David Golunski, « il est possible d’injecter une apostrophe supplémentaire, qui n’est pas correctement traitée et contourne la protection de escapeshellarg() ». Les équipes de Drupal et de WordPress considèrent la vulnérabilité comme critique.
Les équipes du projet PHPMailer s’inquiètent quant à elle de l’existence d’un démonstrateur d’exploitation de la vulnérabilité. Mais pour Jacob Williams, fondateur de Rendition InfoSec, estime que « tous les script kiddies l’utiliseront sans modification ». Et justement, il intègre un élément remarquable, facilement repérable par un système de détection d’intrusion (IDS) : « la chaîne de caractères ‘zXJpHSq4mNy35tHe’ comme délimiteur de contenu ».