Importante faille de sécurité sur PHP 7 en mode PHP-FPM sur serveurs NGINX

Par:
fredericmazue

mar, 29/10/2019 - 13:08

Cette faille est répertoriée CVE-2019-11043. Ce bulletin de sécurité nous apprend que les versions de PHP 7.1.x inférieures à 7.1.33, 7.2.x inférieures à 7.2.24 et 7.3.x inférieures à 7.3.11 comportent un bug qui permet potentiellement l'exécution de code arbitraire à distance lorsque PHP-FPM est utilisée avec le serveur Web NGINX, et seulement dans cette configuration.

Pour mémoire, PHP-FPM, FastCGI Process Manager, en français "gestionnaire de processus FastCGI", est une implémentation alternative à PHP FastCGI, généralement utilisée sur les sites très chargés.

La faille est décrite techniquement dans ce rapport de bug. Le bug se situe dans le fichier fpm_main.c. Il fait que pour une configuration standard de NGINX :

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

L'expression régulière peut être brisée par un caractère de fin de ligne codé %0a dans une URL. La corruption de path_info perturbe alors une arithmétique de pointeurs, ce qui permet d'injecter du code arbitraire en mémoire et l'exécuter. Une preuve de concept est disponibles sur GitHub.

Très probablement, si vous utilisez sur votre le PHP fourni par votre distribution Linux, vous êtes vulnérable. Ce bulletin de sécurité Debian, par exemple, informe que les distributions Jessie, Stretch et Buster sont vulnérables. En ce qui concerne Debian Jessie il s'agit bine sûr de PHP 5.6, qui est lui aussi touché par le problème.

Cette faille de sécurité est désormais corrigée et il est fortement recommandé d'appliquer immédiatement les correctifs de sécurité sur vos serveurs.