[Warning] Kritische Sicherheitslücke in CGI-Umgebungen (Apache, IIS, ...)
Otmar Lendl
lendl at cert.at
Mon Jul 18 16:30:59 CEST 2016
Kritische Sicherheitslücke in CGI-Umgebungen (Apache, IIS, ...)
18. Juli 2016
Es wurde ein Designfehler in diversen Implementationen des CGI
Standards gefunden, der schwerwiegende Folgen für die Sicherheit der
Webserver haben kann. CERT.at bittet daher um Beachtung der folgenden
Hinweise.
Beschreibung
CGI ist ein Standard, mit dem Webseiten dynamisch mit Hilfe von
Scripten serverseitig erstellt werden können. Dazu werden die
Informationen über den Client und zur Anfrage in Umgebungsvariablen
an das Script übergeben.
Enthält der HTTP-Request einen Header "Proxy:", dann wird der Inhalt
dieses Headers in die Umgebungsvariable HTTP_PROXY geschrieben. Setzt
nun seinerseits das Script einen Webrequest (etwa an ein
Backend-System) ab, dann kann ein gesetztes HTTP_PROXY dazu führen,
dass dieser Proxy benutzt wird.
Auswirkungen
Ein Angreifer kann einem Webserver eine Proxy-Konfiguration vorgeben
und so einen Man-in-the-Middle Angriff durchführen. Mögliche
Szenarien sind etwa:
* Information Disclosure der Daten, die von Frontend-Webservern an
das Backend übermittelt werden
* Information Injection: der angegebene Proxy kann Daten liefern,
die Fehlverhalten im Webserver auslöst
Betroffene Systeme
Eine vollständige Liste aller betroffenen Systeme liegt noch nicht
vor. Es ist daher bis zum Beweis des Gegenteils davon auszugehen,
dass jede CGI Umgebung betroffen ist.
Details werden auf der eigens dafür angelegten Webseite [1] zu
httpoxy angegeben.
Ob ein gesetztes HTTP_PROXY eine Wirkung auf das ausgeführte Script
hat, variiert je nach Programmiersprache (PHP, Python, Perl, Go, ...)
und hängt auch davon ab welche weiteren Programme (etwa "wget")
aufgerufen werden.
Abhilfe
Als erste Notmaßnahme sollten folgende HTTP Header nicht mehr an
Scripte weitergegeben werden:
* Proxy
* Proxy_Host
* Proxy_Port
* Proxy_User
* Proxy_Pass
* Proxy_Password
Apache
Mittels des Moduls mod_headers können die kritischen Header leicht
ausgefiltert werden:
RequestHeader unset Proxy
RequestHeader unset Proxy_Host
RequestHeader unset Proxy_Port
RequestHeader unset Proxy_User
RequestHeader unset Proxy_Pass
RequestHeader unset Proxy_Password
Nginx/FastCGI
fastcgi_param HTTP_PROXY "";
HAProxy
http-request del-header Proxy
http-request del-header Proxy_Host
http-request del-header Proxy_Port
http-request del-header Proxy_User
http-request del-header Proxy_Pass
http-request del-header Proxy_Password
IS/FastCGI component for IIS 6.0 and IIS 7.0
Folgende Regeln in apphost.config sollte die Umgebungsvariable
ausfiltern:
<system.webServer>
<rewrite>
<rules>
<rule name="Erase HTTP_PROXY" patternSyntax="Wildcard">
<match url="*.*" />
<serverVariables>
<set name="HTTP_PROXY" value="" />
</serverVariables>
<action type="None" />
</rule>
</rules>
</rewrite>
</system.webServer>
Hinweis
Generell empfiehlt CERT.at, wo möglich die "automatisches
Update"-Features von Software zu nutzen, für alle Arten von
Browser-Plugins (Flash, Java, ...) auf die
"Click-to-play"-Funktionalitäten von Internet-Browsern
zurückzugreifen, sowie parallel Firewall-Software aktiv und
den Virenschutz aktuell zu halten.
__________________________________________________________________
Informationsquelle(n):
[1] httpoxy Webseite
https://httpoxy.org/
[2] Apache-Dev Archiv von 2015
http://www.gossamer-threads.com/lists/apache/dev/443863
[3] Apache Advisory
https://www.apache.org/security/asf-httpoxy-response.txt
--
// Otmar Lendl <lendl at cert.at> - T: +43 1 5056416 711
// CERT Austria - http://www.cert.at/
// Eine Initiative der nic.at GmbH - http://www.nic.at/
// Firmenbuchnummer 172568b, LG Salzburg
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <http://lists.cert.at/cgi-bin/mailman/private/warning/attachments/20160718/e166221b/attachment.sig>
More information about the Warning
mailing list