Sean Coates hat nicht nur diese Sicherheitslücke eher als Gareth Hayes „entdeckt“, sondern beschreibt zusätzlich sowohl die Ursache als auch eine Lösung.
Die Ursache ist nämlich
Apaches „AcceptPathInfo“-Feature, mit dem auch nur Teile des Pfads für eine erfolgreiche Abbildung auf das Dateisystem dienen können. So reicht in dem genannten Beispiel bereits das „…/php_self.php“ aus, das auf die gleichnamige Datei abgebildet wird. Der Rest wird in der Umgebungsvariable
PATH_INFO gespeichert.
Das Problem hierbei ist wieder einmal der naive Umgang mit den von außen kommenden Benutzereingaben, zu denen auch die URL zählt. Und da
PHP_SELF nicht nur den tatsächlichen Pfad zur Skriptdatei sondern auch den
PATH_INFO-Teil enthält, der wiederum beliebig sein kann (und so auch Schadcode enthalten kann), ist dieser Variablenwert ebenfalls mit Vorsicht zu behandeln.