08. 04

Als ich einen Eintrag beim Wohnzimmerhostblogger gelesen habe, musste ich schon schlucken.

Dieser Bug ist seit über einem Jahr offen, und das PHP-Team meint es wäre nicht ihr Problem. Kurz zusammengefasst: Unter *IX findet der Zugriff auf eigentlich alles über sogenannte File-Deskriptoren (kurz FD) statt. Wenn Apache als Webserver läuft, hat er nun also einen File-Deskriptor für die IP und den Port, auf dem er lauscht, offen. Damit weiß das Betriebssystem, wohin es Anfragen weiterleiten muss, und der Apache hat eine Art Eingangskanal für die Anfragen. Ein Apache-Modul, so zum Beispiel PHP, hat automatisch als Teil von Apache auch Zugriff auf diese ganzen FDs.

Wenn aus PHP heraus nun ein Programm gestartet wird, sollten diesem diese FDs aber nicht zur Verfügung gestellt werden. PHP räumt hier aber in keiner Weise auf, so dass ein über PHP (mittels system(), exec() oder eines der diversen anderen Kommandos) gestartetes Programm auf diesen FD auch zugreifen kann. Und nicht nur das, es kann ihn sogar übernehmen!

Konkret heisst das, sobald man auf einem System Dateien hochladen kann, kann man damit ein PHP-Skript und ein kleines Programm hochladen. Dieses Programm wird nun über PHP gestartet, und schnappt sich die FDs vom Apache. Und kann nun zum Beispiel Web-Server spielen, ohne dass es von außen zu bemerken ist. Und damit auf den verbreiteten Shared-Hosting-Systemen, die viele Kundenpräsenzen mit einem Apache bedienen, auch die Anfragen an alle anderen Kunden sich unter den Nagel reißen. Und nicht nur das, auf alle Log- und sonstigen Dateien die der Apache offen hat (eventuell auch SSL-Zertifikate o.ä.) kann damit zugegriffen werden

Und nun stellt sich PHP da hin und meint, es wäre nicht ihr Problem. Von mir aus, dann sollten sie sich aber im Zuge einer Behebung doch selber darum sorgen, dass es im Apache oder wo auch immer sie meinen dass das Problem eigentlich herkommt, geschlossen wird. Wie gut, dass ich weder den Apache als Webserver noch PHP als Modul einsetze, da besteht dieses Problem nämlich nicht.

Tags für diesen Artikel:

Trackbacks


Keine Trackbacks

Kommentare

Ansicht der Kommentare: (Linear | Verschachtelt)

Da bist du allerdings nicht der einzige, der schluckt. Alleine die Vorstellung, dass jemand einfach so in den Apache Logs rumschreiben kann, finde ich weniger lustig.

Doch wenigstens scheint sich deine Sorge der SSL-Zertifikate scheint sich nicht zu bestätigen: ein passthru('ls -l /proc/self/fd'); zeigt keine einzige Datei aus /etc/ an.

Danke für diesen Hinweis!
#1 dead_orc (Homepage) am 08.04.2008 22:26
Auf Shared Hosting will man ja auch kein mod_php. Genau aus diesem Grund. Und die PHP-Leute haben da schon recht, dass ist nicht ihr Problem.

Sollte man mal in die Verlegenheit kommen ein Shared Hosting System mit Apache und PHP betreiben zu muessen nimmt man halt einfach SuExec. Damit hat sich die Sache erledigt.

Und PHP performt eh nicht so wahnsinnig, dass man es unbedingt als Modul braucht (grob ueberschlagen ist der Performance-Verlust durch die Nutzung von CGI winzig).
#2 codec am 04.09.2008 10:34

Kommentar schreiben


Die angegebene E-Mail-Adresse wird nicht dargestellt, sondern nur für eventuelle Benachrichtigungen verwendet.

Um maschinelle und automatische Übertragung von Spamkommentaren zu verhindern, bitte die Zeichenfolge im dargestellten Bild in der Eingabemaske eintragen. Nur wenn die Zeichenfolge richtig eingegeben wurde, kann der Kommentar angenommen werden. Bitte beachten Sie, dass Ihr Browser Cookies unterstützen muss, um dieses Verfahren anzuwenden.
CAPTCHA

Pavatar, Gravatar, MyBlogLog, Monster ID, Pavatar Autoren-Bilder werden unterstützt.
HTML-Tags werden in ihre Entities umgewandelt.
BBCode-Formatierung erlaubt