Warning message

This translation is outdated. For the most up-to-date information, please refer to the English version.

HTTPoxy - est-ce que mon application PHP est affectée ?

Solution Verified - Updated -

Environment

Red Hat Enterprise Linux 5.x
Red Hat Enterprise Linux 6.x
Red Hat Enterprise Linux 7.x
Red Hat Software Collections for Red Hat Enterprise Linux 6 and 7

Issue

Ce problème a lieu si vous utilisez PHP en modes typiques - mod_php, CGI, ou FastCGI.

Les paramètres super globaux  « getenv('HTTP_PROXY')` et  « $_SERVER['HTTP_PROXY'] » peuvent fournir le contenu de l'en-tête du proxy de requête HTTP.

Si votre script PHP utilise « getenv('HTTP_PROXY') » ou « $_SERVER [« HTTP_PROXY »] » pour configurer le proxy sortant pour les demandes HTTP subséquentes, ou si votre script utilise un module ou une bibliothèque exposant ce comportement, par exemple Guzzle, il est possible que tout le traffic HTTP qui suivra venant du script PHP soit redirigé via un proxy extérieur sous contrôle de l’attaquant.

Notez que l'extension intégrée « curl » fournissant des liaisons à la bibliothèque « libcurl » n’est pas elle-même vulnérable ; la vulnérabilité est introduite par les bibliothèques PHP qui utilisent les méthodes ci-dessus pour déterminer l’utilisation du proxy.

Veuillez noter que c'est un problème uniquement quand le script affecté est déployé dans un serveur HTTP qui fournit le contenu de l'en-tête  «Proxy » d'une requête HTTP entrante vers le script PHP.

Resolution

Red Hat a publié des mises à jour et des mesures d’atténuation du risque pour les serveurs HTTP, qui les empêche de fournir le contenu de l'en-tête Proxy HTTP au script PHP. La mise à jour de votre serveur HTTP ou l'application des mesures d’atténuation vont neutraliser ce vecteur et donc empêcher l’exploitation de cette vulnérabilité.

Pour empêcher l'en-tête fourni par l'attaquant d'être utilisé, une des approches suivantes peut être utilisée :

  • Configurer votre parefeu d'application Web afin de supprimer l'en-tête Proxy des requêtes HTTP entrantes
  • Configurer votre serveur HTTP afin de supprimer l'en-tête Proxy avant que les scripts PHP soient invoqués
  • Si vous utilisez le serveur Apache httpd, voir la solution HTTPoxy - Is my Apache mod_cgi affected? pour obtenir des instructions. Les versions de mise à jour httpd excluent également automatiquement l'en-tête Proxy de l’ensemble des en-têtes à la disposition des scripts.
  • Modifiez vos scripts PHP pour qu'ils contiennent l'énoncé suivant vers le haut, après <?php:

      putenv("HTTP_PROXY="); $_SERVER["HTTP_PROXY"] = "";
    

    Si vous exécutez PHP sous Apache/mod_php, ajouter également ce qui suit après ce qui se trouve ci-dessous :

      apache_setenv('HTTP_PROXY', '');
    

Root Cause

Voir HTTPoxy - CGI "HTTP_PROXY" variable name clash pour plus d'informations.

This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.