Risque

  • Exécution de code arbitraire à distance

Systèmes affectés

  • PHP versions 7.1.x antérieures à 7.1.33
  • PHP versions 7.2.x antérieures à 7.2.24
  • PHP versions 7.3.x antérieures à 7.3.11

Résumé

Le CERT-FR a publié un avis concernant la CVE-2019-11043 qui affecte PHP et permet l'exécution de code arbitraire à distance.

Un code d'exploitation est maintenant disponible sur internet, facilitant l'utilisation de cette vulnérabilité.

Ce code d'exploitation nécessite une configuration communément recommandée de nginx et php-fpm utilisant fastcgi_split_path_info. Voici un exemple de configuration vulnérable:

location ~ [^/]\.php(/|$) {
 ...
 fastcgi_split_path_info ^(.+?\.php)(/.*)$;
 fastcgi_param PATH_INFO $fastcgi_path_info;
 fastcgi_pass php:9000;
 ...
}

Il est possible que d'autres chemins d'exploitation non connus à ce jour permettent d'abuser de la vulnérabilité.

Le CERT-FR recommande fortement la mise à jour de php vers une version non vulnérable, et ce dans les plus brefs délais si votre configuration nginx utilise fastcgi_split_path_info.

Les versions de PHP antérieures à 7.1 peuvent être également affectées, et ne bénéficieront pas de mise à jour. Il est primordial d'utiliser une version supportée par l'éditeur.

Solution

Le CERT-FR recommande de mettre à jour PHP vers une version non vulnérable sans attendre.

Contournement provisoire

Il est possible de se prémunir contre ce code d'exploitation en vérifiant l'existence du fichier PHP. Ainsi, les requêtes malformées sont filtrées au niveau de nginx, de cette manière l'attaquant n'est pas capable d'exploiter la vulnérabilité dans php-fpm.

Afin de mettre en place ce contournement provisoire, il faut insérer try_files $uri =404; avant de passer la requête à php-fpm (avant la ligne fastcgi_pass dans l'exemple plus haut).

Documentation