phpSecInfo: Probleme mit curl und CGI: force_redirect

Apache, Lighttpd, nginx, Cherokee
floogy
Posts: 150
Joined: 2007-10-23 22:00

phpSecInfo: Probleme mit curl und CGI: force_redirect

Post by floogy » 2007-11-05 20:58

Hallo,
Ich beschäftige mich gerade ein wenig damit meinen Webserver sicherer zu machen in Bezug auf PHP.
Mir wurde hier das leicht zu installierende phpsecinfo empfohlen.
Nun habe ich fast alles "grün", und hänge bei zwei Einstellungen:

force_redirect ist Rot:

Code: Select all

Warning
force_redirect is disabled. In most cases, this is a serious security vulnerability. Unless you are absolutely sure this is not needed, enable this setting
Current Value:    0
Recommended Value:    1

http://phpsec.org/projects/phpsecinfo/t ... irect.html

Dabei ist es eingeschaltet, restart durchgeführt.

Code: Select all

$ rgrep force_redirect /etc/php5
/etc/php5/apache2/php.ini:; cgi.force_redirect configuration below
/etc/php5/apache2/php.ini:; cgi.force_redirect is necessary to provide security running PHP as a CGI under
/etc/php5/apache2/php.ini:cgi.force_redirect = 1
/etc/php5/apache2/php.ini:force_redirect = 1
/etc/php5/apache2/php.ini:; if cgi.force_redirect is turned on, and you are not running under Apache or Netscape
/etc/php5/apache2/php.ini.ucf-dist:; cgi.force_redirect configuration below
/etc/php5/apache2/php.ini.ucf-dist:; cgi.force_redirect is necessary to provide security running PHP as a CGI under
/etc/php5/apache2/php.ini.ucf-dist:; cgi.force_redirect = 1
/etc/php5/apache2/php.ini.ucf-dist:; if cgi.force_redirect is turned on, and you are not running under Apache or Netscape
/etc/php5/apache2/php.ini.ucf-old:; cgi.force_redirect configuration below
/etc/php5/apache2/php.ini.ucf-old:; cgi.force_redirect is necessary to provide security running PHP as a CGI under
/etc/php5/apache2/php.ini.ucf-old:; cgi.force_redirect = 1
/etc/php5/apache2/php.ini.ucf-old:; if cgi.force_redirect is turned on, and you are not running under Apache or Netscape
/etc/php5/cli/php.ini:; cgi.force_redirect configuration below
/etc/php5/cli/php.ini:; cgi.force_redirect is necessary to provide security running PHP as a CGI under
/etc/php5/cli/php.ini:; cgi.force_redirect = 1
/etc/php5/cli/php.ini:; if cgi.force_redirect is turned on, and you are not running under Apache or Netscape
/etc/php5/cgi/php.ini:; cgi.force_redirect configuration below
/etc/php5/cgi/php.ini:; cgi.force_redirect is necessary to provide security running PHP as a CGI under
/etc/php5/cgi/php.ini: cgi.force_redirect = 1
/etc/php5/cgi/php.ini:force_redirect = 1
/etc/php5/cgi/php.ini:; if cgi.force_redirect is turned on, and you are not running under Apache or Netscape
$ rgrep force_redirect /var/www/test/
/var/www/test/conf/php.ini:; Enable cgi.force_redirect for security reasons
/var/www/test/conf/php.ini:cgi.force_redirect = 1
/var/www/test/conf/php.ini:; http://phpsec.org/projects/phpsecinfo/tests/force_redirect.html
/var/www/test/conf/php.ini:; Enable cgi.force_redirect for security reasons
/var/www/test/conf/php.ini:cgi.force_redirect = 1
/var/www/test/conf/php.ini:force_redirect = 1


Und curl::file_support:

Code: Select all

Curl::file_support     
Not Run
CURL support is not enabled in your PHP install

http://phpsec.org/projects/phpsecinfo/t ... pport.html

Dabei ist curl installiert:

Code: Select all

$ apt-cache policy php5-curl
php5-curl:
  Installed: 5.2.3-1ubuntu6
  Candidate: 5.2.3-1ubuntu6
  Version table:
 *** 5.2.3-1ubuntu6 0
        500 http://de.archive.ubuntu.com gutsy/main Packages
        500 http://archive.ubuntu.com gutsy/main Packages
        100 /var/lib/dpkg/status


Code: Select all

$ rgrep curl /etc/php5
/etc/php5/conf.d/curl.ini:extension=curl.so
/etc/php5/cli/conf.d/curl.ini:extension=curl.so
/etc/php5/cgi/conf.d/curl.ini:extension=curl.so
$ rgrep curl /etc/apache2
$ rgrep curl /var/www/test/


Dabei konnte ich da schon mal die curl-tests sehen, die besagten, dass meine php_curl version >5.1.6 die besagte Lücke zur Umgehung der open_basedir und safe_mode Beschränkungen durch curl schließt.
Older versions of the curl library shipped with PHP allowed it to bypass the restrictions put in place by open_basedir or safe_mode using a file:// URL.


Nun wird curl aber grau unterlegt, als nicht Verfügbar ermittelt.
Könnte das wiederum an open_basedir liegen?

Wenn Ich open_basedir in der test php.ini auskommentiere, so werden gleich mehrere weitere funktionen gelb unterlegt:
upload_tmp_dir und save_path, die vorher (mit open_basedir angegeben) grün unterlegt waren. curl ist hingegen immer noch grau unterlegt, als nicht installiert. Wie lässt sich das erklären?

EDIT: phpinfo() gibt das hier aus:

Code: Select all

cgi-fcgi
Directive   Local Value   Master Value
cgi.check_shebang_line   1   1
cgi.fix_pathinfo   1   1
cgi.nph   0   0
cgi.rfc2616_headers   0   0
fastcgi.logging   1   1

Unterstützt fcgi kein cgi.force_redirect ?

Außerdem das hier:

Code: Select all

Configuration File (php.ini) Path    /etc/php5/cgi
Loaded Configuration File    /var/www/test/conf/php.ini
Scan this dir for additional .ini files    /etc/php5/cgi/conf.d
additional .ini files parsed    /etc/php5/cgi/conf.d/curl.ini, /etc/php5/cgi/conf.d/gd.ini, /etc/php5/cgi/conf.d/mysql.ini, /etc/php5/cgi/conf.d/mysqli.ini, /etc/php5/cgi/conf.d/pdo.ini, /etc/php5/cgi/conf.d/pdo_mysql.ini


Die Abschnitte gd, mysql, mysqli, pdo und pdo_mysql fehlen allerdings mitsamt curl.
Werden diese Configurationen nicht mehr eingelesen, oder überschrieben, da /var/www/test/conf/php.ini lokal verwendet wird? Ich finde das merkwürdig.

EDIT:
Es lag an folgender Einstellung:
extension_dir = /var/www/test/
Die extensions befinden sich aber hier: /usr/lib/php5/20060613/
Ich habe das nun entsprechend geändert, und symlinks der extensions erstellt:
extension_dir = /var/www/test/conf/usr/lib/php5/20060613/

Nun ist alles soweit ok.
Last edited by floogy on 2007-11-05 21:48, edited 1 time in total.

floogy
Posts: 150
Joined: 2007-10-23 22:00

Re: phpSecInfo: Probleme mit curl und CGI: force_redirect

Post by floogy » 2007-11-05 21:14

Unterstützt fcgi kein cgi.force_redirect ?

http://lists.phpsec.org/pipermail/phpse ... 00105.html

Das zumindest ist schon mal ein bekannter Fehler in phpsecinfo, da es wohl bei fastcgi und fcgid keinen Sinn macht nach force_redirect zu testen.

User avatar
Joe User
Project Manager
Project Manager
Posts: 11599
Joined: 2003-02-27 01:00
Location: Hamburg

Re: phpSecInfo: Probleme mit curl und CGI: force_redirect

Post by Joe User » 2007-11-05 21:34

Hmm, "Passed 9 of 18", ist meine PHP-Installation nun unsicher? Nö...

floogy
Posts: 150
Joined: 2007-10-23 22:00

Re: phpSecInfo: Probleme mit curl und CGI: force_redirect

Post by floogy » 2007-11-05 21:53

Worauf kommt es denn Deiner Meinung nach beim Lesen dieser Sicherheitstipps an?
Die meisten "Fehler" kommen wohl als "Notice" daher, und betreffen Datei und Speichergrössen, oder?

Wenn das vorgeschlagene phpsecinfo bei Dir schon auf solche Kritik stößt, vielleicht kannst Du dann entsprechende Einstiegslektüre in PHP-Sicherheit empfehlen?

User avatar
Joe User
Project Manager
Project Manager
Posts: 11599
Joined: 2003-02-27 01:00
Location: Hamburg

Re: phpSecInfo: Probleme mit curl und CGI: force_redirect

Post by Joe User » 2007-11-05 22:03

phpsecinfo prüft lediglich ein paar Config-Optionen, ohne das Gesamtsystem zu berücksichtigen. Es gibt beispielsweise etliche WebApps, die mit den vorgeschlagenen Speicher-/POST-Grössen nicht kompatibel sind, oder aus Kompatibilitätsgründen kein curl_* verwenden. Zudem lässt sich nicht in jeder Umgebung open_basedir nutzen, oder die temporären Speicherorte separieren.
Fazit: Nett gemeint, aber überflüssig...

floogy
Posts: 150
Joined: 2007-10-23 22:00

Re: phpSecInfo: Probleme mit curl und CGI: force_redirect

Post by floogy » 2007-11-05 22:07

Und was würdest Du empfehlen 1), wenn man seinen Server abdichten will? Bleiben da nur noch chroot, Virtualisierung oder jails übrig?

1) Mich interessieren in diesem Zusammenhang vor allem auch gute Lesetipps, die helfen nicht einfach blöd zu sterben.

lord_pinhead
RSAC
Posts: 830
Joined: 2004-04-26 15:57

Re: phpSecInfo: Probleme mit curl und CGI: force_redirect

Post by lord_pinhead » 2007-11-05 23:15

Alleine der Verbund aus fcgi und mod_sec reicht aus um jegliche Bedenkten auszuschalten.
Ausser du hast Zeit und Lust dich mit Xen auseinander zu setzen, aber dann ist nix mehr mit Confixx und co.

Lighttpd bringt von Haus aus die möglichkeit eines Chroots mit, zusammen mit grsec im Kernel dürfte das auch schon sehr ausbruchssicher sein. Sofern du natürlich die Lust hast dich mit Lighttpd zu beschäftigen. Wobei ich ein Chroot beim Apachen schon vermisse.