HTTPoxy - Ist meine PHP-Anwendung betroffen?
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
- Wenn Sie den Apache httpd Server verwenden, finden Sie unter HTTPoxy - Ist mein Apache mod_cgi betroffen? weitere Anweisungen. Aktualisierte httpd Versionen schließen automatisch den Proxy-Header aus dem Set von Headern aus, die den Skripten verfügbar gemacht wurden.
- Wenn Sie den nginx Server verwenden, finden Sie unter HTTPoxy - Ist meine nginx betroffen?weitere Anweisungen.
-
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