phpbar.de logo

Mailinglisten-Archive

[php] mod_php genauso sicher wie cgi_php?

[php] mod_php genauso sicher wie cgi_php?

Markus Dobel dobel_(at)_femu.rwth-aachen.de
Mon, 14 Feb 2000 16:33:59 +0100


Guido Geyermann wrote:
> 
> 1. der webmaster sagt das php als apache-modul laeuft, aber die skripte
> trotzdem
> unter uid's ablaufen.
> nach eingehendem studium des manuals und kristian's 'webserver verstehen
> und tunen'
> bin ich davon ausgegangen das cgi_php zwar die performance-schwaechere,
> aber
> sichere variante ist.
> hat der webmaster keine ahnung oder kann man mod_php auch sicher
> auslegen (bei
> virtual-hosts)?

mod_php kennt den sogenannten safe mode. welche einschraenkungen dabei
entstehen, ist in 

http://www.koehntopp.de/php/faq-3.html#ss3.9

genauer aufgelistet. jedoch vertraut man im safe mode darauf, dass php
in dieser hinsicht fehlerfrei programmiert ist. und das ist leider nicht
wirklich gegeben. kristian hat in letzter zeit zwei bugs gefunden, die
eben luecken im safe mode aufreissen, den einen im zusammenhang mit
popen() (gefixt in 3.0.14) und einen im zusammenhang mit mail() (fix
bekannt und im CVS enthalten, version 3.0.15 steht noch aus).

diese bugs liessen (lassen) es zu, den safe mode zu umgehen. mod_php
laeuft nicht wirklich unter der UID des script owners sondern hat nur
kuenstliche einschraenkungen, die so etwas versuchen nachzubilden. und
diese sind nicht unbedingt als "sicher" zu bezeichnen.

sicherer ist wirklich die cgi-version von php, am besten im usammenhang
mit einer ge-chrooteten verzeichnishierarchie. 

> 2. 'load data infile' und 'load data local infile' besitzen volle
> funktionalitaet,
> was bei 'load data infile' file-priv rechte voraussetzt.
> apache -und mysql-server laufen beide auf der selben maschine, durch die
> file-priv
> rechte koennte man dann doch jede datei einlesen an die der mysql-server
> rechte besitzt.
> stellt dies nicht auch ein risiko dar?

in der tat vorstellbar, wobei ich im moment nicht testen kann, was nun
passiert, wenn man eine x-beliebige datei einliest, die eben keine
SQL-befehle sondern z.b. ein php-script enthalten. mysql wird dieses
file nicht "fressen", sondern mit fehlern um sich schmeissen. da mysql
jedoch auch die zeile wieder ausspuckt, in der der fehler vorkam,
koennte man auf die art wohl wenigstens teilweise andererleuts dateien
lesen.

gruss, markus


php::bar PHP Wiki   -   Listenarchive