Da lese ich doch gerade auf heise online einen Beitrag von Peer Heinlein über die Gefahren bei der Benutzung von popen() und proc_open() in PHP.
Empfohlen wird dem umsichtigen Administrator das Deaktivieren von einigen PHP-Funktionen mittels disable_functions:
disable_functions = show_source, system, shell_exec, passthru, exec, phpinfo, popen, proc_open
Wem das nicht reicht und so wie ich in Sachen Sicherheit leicht paranoid ist, der kann mittels disable_functions in der php.ini eine ganze Menge Funktionen deaktivieren, ohne daß es großartig den Betrieb stört (das ist natürlich von Fall zu Fall unterschiedlich):
- phpinfo
- system
- passthru
- popen
- proc_open
- shell_exec
- posix_getegid
- posix_geteuid
- posix_getgid
- posix_getgrgid
- posix_getgrnam
- posix_getgroups
- posix_getlogin
- posix_getpgid
- posix_getpgrp
- posix_getpid
- posix_getppid
- posix_getpwnam
- posix_getpwuid
- posix_getrlimit
- posix_getsid
- posix_getuid
- posix_isatty
- posix_isatty
- posix_mkfifo
- posix_setegid
- posix_seteuid
- posix_setgid
- posix_setpgid
- posix_setsid
- posix_setuid
- posix_strerror
- posix_times
- posix_ttyname
- posix_uname
- get_current_user
- get_defined_constants
- get_extension_funcs
- get_include_path
- get_required_files
- getmygid
- getmyuid
- getmyinode
- getmypid
- getopt
- getrusage
- memory_get_usage
- php_uname
- set_include_path
Bei mir laufen Wordpress, phpMyAdmin, Squirrelmail, Gallery, Sitebar & Co. ohne diese Funktionen ohne Probleme.
{ 6 } Comments
system() und passthru() werden von vielen Scripts benutzt um die ImageMagick-Tools zu benutzen.
memory_get_usage kann auch sehr sinnvoll sein, ausserdem sehe ich da die Vulnerability nicht...
Gallery rennt hier auch ohne Probleme - und das mit ImageMagick.
Bei memory_get_usage() & Co. gehts mir weniger um Verwundbarkeit als um Informationen, die niemanden etwas angehen.
der job von set_include_path lässt sich auch durch ini_set erledigen
Für squirrel benötigten wir auch noch getmypid, sonst klappte nix,
zudem kann ich keine Datei(en ) mehr als Attachment hinzufügen seidem die disable_functions Direktive gesetzt ist(gleiche Funktionen wie oben).
Du nennst zwar shell_exec, hast aber exec vergessen!
http://de.php.net/manual/de/function.exec.php
Das braucht zumindest Gallery, um die imagemagick tools ausführen zu können. Es war sowieso eher als Anregung gedacht, für den Einzelfall muss man sich sowieso jedesmal überlegen, was man deaktiviert und was nicht.