127.0.0.1 [10/Jun/1999:13:58:35 +0100] Standard CGI Launch "C:\Eigene Dateien\www\cgi-bin\fred.GIF": CreateProcess failed; error code = 193
Diese Fehlermeldung ist doch sehr aussagekräftig:
Dein CGI-Verzeichnis ist so eingestellt, daß *jeder* Zugriff auf eine URL innerhalb dieses Teilbaums als CGI-Aufruf interpretiert wird.
(Das ist wahrscheinlich bei den meisten "cgi-bin"-Verzeichnissen so.)
Und was macht der arme Webserver, wenn er Dein GIF ansprechen soll? Er versucht, es auszuführen ... mit mäßigem Erfolg, wie man sich denken kann (Create Process failed).
Meiner Meinung nach ist das keine Security-Problematik, sondern es ist eine Frage der Flexibilität für die Autoren von CGI-Anwendungen. Im Prinzip will der Webmaster denen nämlich *nicht* vorschreiben, in welcher Sprache sie ihre Anwendungen zu schreiben haben und welche Endungen die Dateien haben sollen. Alles, was in cgi-bin liegt, ist offensichtlich irgendwas Ausführbares - WIE das funktioniert, wird in den meisten Fällen in Zeile 1 der Datei drin stehen (ggf. magic number "#1" und dahinter der Pfadname eines Interpreters, falls nötig).
Wenn man diesen Freiheitsgrad haben will, dann gibt man dafür einen anderen auf, nämlich das Recht, andere Dateien im selben Verzeichnis aufzuheben.
Die Alternative wäre, in der Konfiguration des Webservers bestimmte Endungen fest mit dem Handler "CGI-Skript" zu verbinden. Bei Apache ist beispielsweise die Endung ".cgi" in dieser Weise vordefiniert; falls in einem Verzeichnis CGI-Anwendungen überhaupt ausgeführt werden dürfen (das wiederum kann man natürlich ein- und ausschalten), dann werden *.cgi-Dateien auch dann als CGI-Anwendungen ausgeführt, wenn NICHT der gesamte Teilbaum als CGI-Teilbaum (Apache: Anweisung "script-alias") definiert wurde.
Fazit: Man kann sich bei der Konfiguration des Webservers entscheiden, was man haben will. Aber eben nicht beides gleichzeitig.