Hallo Christian!
Hauptverursacher ist IMHO der User mit dem Buggy Script.
Hauptverursacher ist eine konzeptionelle Schwäche in PHP.
Die da wäre? Was ich im Moment mitbekomme, erfolgt ein wirklich großer Teil aktueller Angriffe über awstat - awstat.pl!
Das Problem ist IMHO, dass man weniger können muss um PHP zu schreiben, und entsprechend viele schlechte PHP-Programmierer und damit unsichere PHP-Scripte gibt es.
Warum sollte ich include(), fopen() oder ähnliche _Datei_-Operationen
nutzen, um das zu tun?
Warum nicht? Man kann auch mysql_query() so nutzen, dass eine Sicherheitslücke entsteht - was soll man dagegen machen?
Gäbe es Extra-Funktionen für den Zugriff auf
externe Ressourcen (z. B. über HTTP), dann wären die meisten Probleme
gleich erschlagen.
Ich hoffe sehr, dass es PECL::HTTP noch in PHP 5.1 schafft (beta soll AFAIK heute kommen), das wäre mal sehr viel eleganter als diese nervige Geschichte mit fsockopen(): http://dev.iworks.at/ext-http/http-functions.html.gz
Allerdings verwende ich für sowas schon seit längerem PEAR::HTTP_Request (ist ja quasi auch ein Bestandateil von PHP - ähnlich wie ein CPAN-Modul).
allow_url_fopen habe ich abgeschaltet. Ich finde allow_url_fopen selber schlecht, weil sobald sich irgendwo eine entsprechende, kleine Lücke einschleicht - ob es ein eigenes Script ist oder ein fremdes, oder eine fertige Software - ist ein Angreifer sofort in der Lage eigenen PHP-Code auszuführen. Gut, sagen wir Du nutzt disable_function - es gibt aber noch andere Mittel und Wege fremde Extensions (AFAIR z.B. curl, mssql, oracle...) dazu zu bewegen, Programme auszuführen.
IMHO sollten User nur Prozesse unter eigener UID laufen lassen können (suexec/suphp für CGI), entsprechend sollen User nur die Programme auf der Kommandozeile ausführen können, die sie evtl. benötigen, alles andere nach Möglichkeit entfernen, oder wenigstens chmod (0700).
Allerdings betreue ich keine Server mit fremden Usern und habe da möglicherweise gut Reden ;-)
Grüße
Andreas
SELFHTML Feature Artikel: http://aktuell.de.selfhtml.org/artikel/