Vulnérabilité php-fpm permettant l'exécution de code à distance sur le serveur

Disponibles Les mises à jour correctrices PHP 7.3.11, 7.1.33 et 7.2.24, dans lesquelles a été corrigée critique CVE-2020-10174 (CVE-2019-11043) dans l'extension PHP-FPM (gestionnaire de processus FastCGI), permettant d'exécuter à distance son propre code sur le système. Une attaque sur les serveurs utilisant PHP-FPM pour exécuter des scripts PHP en conjonction avec Nginx est déjà publiquement accessible. fonctionnel un exploit.

L'attaque est possible dans les configurations nginx où le passage à PHP-FPM se fait par la séparation des parties de l'URL à l'aide de « fastcgi_split_path_info » et la définition de la variable d'environnement PATH_INFO, mais sans vérification préalable de l'existence du fichier par la directive « try_files $fastcgi_script_name » ou par la construction « if (!-f $document_root$fastcgi_script_name) ». Le problème concerne également se manifeste les paramètres proposés pour la plateforme NextCloud. Par exemple, les configurations vulnérables avec des constructions de type :

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

Pour suivre la résolution du problème dans les distributions, vous pouvez consulter ces pages : Debian, RHEL, Ubuntu, SUSE/openSUSE, FreeBSD, Arch, Fedora. Comme méthode de contournement de la protection, après la ligne « fastcgi_split_path_info », vous pouvez ajouter une vérification de l'existence du fichier PHP demandé :

try_files $fastcgi_script_name =404;

Le problème provient d'une erreur dans la manipulation des pointeurs dans le fichier sapi/fpm/fpm/fpm_main.c. Lors de l'attribution d'un pointeur, on suppose que la valeur de la variable d'environnement PATH_INFO contient nécessairement un préfixe correspondant au chemin du script PHP.
Si la directive fastcgi_split_path_info spécifie une séparation du chemin vers le script à l'aide d'une expression régulière, sensible à la transmission du caractère de saut de ligne (par exemple, dans de nombreux exemples, il est conseillé d'utiliser « ^(.+?\.php)(\/.*)$ »), l'attaquant peut obtenir l'enregistrement d'une valeur vide dans la variable d'environnement PATH_INFO. Dans ce cas, plus loin lors de l'exécution se produit enregistrement dans path_info[0] d'un zéro et appel de FCGI_PUTENV.

En demandant une URL formatée d'une certaine manière, l'attaquant peut entraîner un décalage du pointeur path_info au premier octet de la structure « _fcgi_data_seg », et l'enregistrement d'un zéro dans cet octet entraînera un déplacement du pointeur « char* pos » vers une zone de mémoire antérieure. L'appel suivant de FCGI_PUTENV réécrira les données dans cette mémoire avec une valeur que l'attaquant peut contrôler. Dans la mémoire spécifiée, on trouve également les valeurs d'autres variables FastCGI, et en écrivant ses propres données, l'attaquant peut créer une variable fictive PHP_VALUE et obtenir l'exécution de son code.

Source : opennet.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster