Sicherheitslücke in Version 4.3.0
Sven Rautenberg
- php
Moin!
Wie gestern abend auf der PHP-Announce-Mailingliste verbreitet wurde, hat PHP 4.3.0 eine Sicherheitslücke, wenn es als CGI betrieben wird.
Der Bug verhindert, dass die Option "--enable-force-cgi-redirect" bzw. die PHP.INI-Option "cgi.force_redirect" wirksam werden. Dadurch ist der Zugriff auf alle Dateien möglich, die der Webserver-User lesen kann - und wenn der Angreifer es schafft, in solch eine Datei Code einzufügen, kann dieser auch ausgeführt werden. Beispielsweise in das Access-Logfile.
Das Update auf PHP Version 4.3.1 steht zum Download zur Verfügung.
- Sven Rautenberg
Die Original-Nachricht:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
PHP Security Advisory: CGI vulnerability in PHP version 4.3.0
Issued on: February 17, 2003
Software: PHP/CGI version 4.3.0
Platforms: All
The PHP Group has learned of a serious security vulnerability in
the CGI SAPI of PHP version 4.3.0.
Description
PHP contains code for preventing direct access to the CGI binary with
configure option "--enable-force-cgi-redirect" and php.ini option
"cgi.force_redirect". In PHP 4.3.0 there is a bug which renders these
options useless.
NOTE: This bug does NOT affect any of the other SAPI modules.
(such as the Apache or ISAPI modules, etc.)
Impact
Anyone with access to websites hosted on a web server which employs
the CGI module may exploit this vulnerability to gain access to any file
readable by the user under which the webserver runs.
A remote attacker could also trick PHP into executing arbitrary PHP code
if attacker is able to inject the code into files accessible by the CGI.
This could be for example the web server access-logs.
Solution
The PHP Group has released a new PHP version, 4.3.1, which incorporates
a fix for the vulnerability. All users of affected PHP versions are
encouraged to upgrade to this latest version. The downloads web site at
http://www.php.net/downloads.php
has the new 4.3.1 source tarballs, Windows binaries and source patch
from 4.3.0 available for download. You will only need to upgrade if
you're using the CGI module of PHP 4.3.0. There are no other bugfixes
contained in this release.
Workaround
None.
Credits
The PHP Group would like to thank Kosmas Skiadopoulos for discovering
this vulnerability.
Copyright (c) 2003 The PHP Group.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.6 (GNU/Linux)
Comment: For info see http://www.gnupg.org
iD8DBQE+USOr/HlsOzK2WlERAtLKAJ9GPbPt6Vg77zIcPTGKh78WofmmeACgneDV
tUERfwp/RXtcH13vdv0CGGY=
=rYm5
-----END PGP SIGNATURE-----
Keine Garantie, dass die Signatur durch das Pasten noch gilt.
Hi,
Dadurch ist der Zugriff auf alle Dateien möglich, die der Webserver-User lesen kann - [...] Beispielsweise in das Access-Logfile.
normalerweise sollte das Server-Logfile von der Server-Instanz aus zugreifbar sein, nicht von dessen Workern. Die Instanz wird (meist) als root gestartet, die Worker nicht. Wenn allerdings hier bei der Konfiguration geschlampt wurde, sieht es in der Tat düster aus.
Nun ja, aber das Logfile ist nicht die einzige Datei, die beizeiten beschrieben wird.
Cheatah
Hallo Cheatah,
Dadurch ist der Zugriff auf alle Dateien möglich, die der Webserver-User lesen kann - [...] Beispielsweise in das Access-Logfile.
normalerweise sollte das Server-Logfile von der Server-Instanz aus zugreifbar sein, nicht von dessen Workern. Die Instanz wird (meist) als root gestartet, die Worker nicht. Wenn allerdings hier bei der Konfiguration geschlampt wurde, sieht es in der Tat düster aus.
Das verstehe ich jetzt nicht so ganz - die Option force_cgi_redirect bewirkt doch nur, dass wenn _kein_ internal redirect (wie bei Handlern oder Fehlerseiten) erfolgte, dass _dann_ abgebrochen werden sollte. Um aber PHP überhaupt die Parameter zu übergeben, muss man ja so eine Syntax verwenden:
http://....de/.../php/pfad/zur/Datei
^^^
(das ausführbare PHP-Programm)
/pfad/zur/Datei muss aber innerhalb des Webstammbaums liegen, also betrifft diese Sicherheitslücke nur .htaccess-geschützte Verzeichnisse und ähnliches - _nicht_ jedoch die Logfiles, die sollten sowieso außerhalb des Webstammbaums liegen, sonst würde ich noch mal ein kräftiges Wörtchen mit meinem Provider reden. (bzw. ihn wechseln)
Christian