Translated message

A translation of this page exists in English.

Warning message

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

HTTPoxy - Ist meine PHP-Anwendung betroffen?

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 für Red Hat Enterprise Linux 6 und 7

Issue

Dieses Problem tritt auf, wenn Sie PHP in einem typischen Verwendungsmodus benutzen - mod_php, CGI oder FastCGI.

getenv('HTTP_PROXY') und $_SERVER['HTTP_PROXY'] super global von PHP können den Inhalt des Proxy-Headers der HTTP-Anfrage enthalten.

Wenn Ihr PHP-Skript getenv('HTTP_PROXY') oder $_SERVER['HTTP_PROXY'] für die Konfiguration des ausgehenden Proxys für nachfolgende HTTP-Anfragen verwendet oder Ihr Skript ein Modul oder eine Bibliothek verwendet, die dieses Verhalten aufweist, wie zum Beispiel Guzzle, dann kann nachfolgender Datenverkehr, der aus dem PHP-Skript stammt, auf einen außen stehenden Proxy umgeleitet werden, der unter der Kontrolle des Angreifers steht.

Beachten Sie, dass die in PHP eingebaute curl Erweiterung, die Bindungen zur libcurl Bibliothek bereitstellt, an sich nicht angreifbar ist. Die Schwachstelle wird von PHP Bibliotheken eingeführt, die die oben beschriebene Methode zur Bestimmung des Proxy-Gebrauchs benutzt.

Bitte beachten Sie, dass dies nur ein Problem ist, wenn das betroffene PHP-Skript auf einem HTTP-Server bereitgestellt ist, der die Inhalte des "Proxy" Headers einer eingehenden HTTP-Anfrage dem PHP-Skript bereitstellt.

Resolution

Red Hat hat Updates und Anleitungen zur Vorbeugung für HTTP-Server herausgegeben, wodurch sie davon abgehalten werden, die Inhalte des HTTP Proxy-Headers dem PHP-Skript zur Verfügung zu stellen. Wenn Sie Ihren HTTP-Server aktualisieren oder die Vorbeugung anwenden, wird dieser Vektor geschlossen und die Ausnutzung dieses Fehlers verhindert.

Wenn Sie vermeiden wollen, dass der vom Angreifer erstellte Header verwendet wird, können Sie eine der folgenden Vorgehensweisen anwenden:

  • Konfigurieren Sie die Firewall Ihrer Web-Anwendung, um den "Proxy:"-Header aus eingehenden HTTP-Anfragen zu entfernen
  • Konfigurieren Sie Ihren HTTP-Server, um den Proxy-Header zu entfernen, bevor PHP-Skripte aufgerufen werden
  • Bearbeiten Sie Ihre PHP-Skripte, sodass sie oben (nach <?php) folgendes Statement enthalten:

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

    Wenn Sie PHP unter Apache/mod_php ausführen, fügen Sie an dieser Stelle zusätzlich Folgendes hinzu:

      apache_setenv('HTTP_PROXY', '');
    

Root Cause

Weitere Informationen finden Sie unter HTTPoxy - CGI "HTTP_PROXY" Variablenname kollidiert.

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.

Comments