Hallo, Bernhard Walle:
`whoami` oder `/usr/bin/whoami`
wird geblockt, weil ich vorher explizit das PATH-Enviroment setzen muß.
Ist auch richtig so.
Nein. Richtig ist es, wenn "/usr/bin/whoami" immer ausgeführt wird. Richtig ist es, wenn "whoami" ausgeführt wird, falls der User, als der der Webserver läuft, /usr/bin" im Pfad hat. Falsch ist, daß perl sich weigert einen Befehl auszuführen, für den es eigentlich keine Restriktion gibt, weil er noch eigene obendrauf setzt. Will sagen: Wenn su httpd whoami funktioniert, dann hat #!/usr/bin/perl `whoami` auch zu funktionieren.
Da ist für mich irgendwann Schluß, das ist keine Security mehr, das ist Paranoia. Das Script gehört root, das muss als Sciherheitseinschränung
Seit wann ist root eine Sicherheitseinschränkung? Es ist doch ein CGI-Skript, also soll es doch im Browser ausgeführt werden können.
CGI-Scripte werden nicht im Browser ausgeführt, sondern durch ein Modul des Webservers. Wenn ich als Verwalter: - vorsätzlich suidperl installiert habe - mit den dazu nötigen Rechten das Script root:root übereignet habe - suid gesetzt habe (Was alles nicht trivial ist, sprich: Von normalen Usern durchführbar), dann langt das. Da hat der Befehlsinterpreter nicht noch irgendwelche Überprüfungen am Code vorzunehmen, was letztlich dazu führt, daß ich Zeit im Netz verbringen muß, um herauszufinden, wie man das jetzt wieder abschaltet.
Wenn jemand über das Internet in den Rechner einbricht und soweit kommt, daß er einem Script root-Rechte geben kann, dann braucht er den fehlenden Taint-Modus nicht mehr ausnutzen, er ist dann bereits root.
Er braucht doch nur im Webbrowser Dein CGI aufrufen?
Dann läuft das Script als root. Das ist ja beabsichtigt und soll so sein. Das ist aber keine Sicherheitslücke, die würde nur entstehen, wenn ich meine Scripte nicht anständig programmiere.
Was kannst Du den nicht machen mit dem Taint Modus?
Siehe oben: Ich greife auf Befehle zu, die in der Bash funktionieren, und Perl baut mir wieder "Wenn" und "Aber" davor.
Ist es so schwer, den $PATH zu setzen? Aber hier ging es nicht um eigene Skripte, die mal zum testen da sind sondern um Skripte, die im Web veröffentlicht werden und auf die _jeder_ zugreifen kann! Für ein Testskript, das ich eh in 2 min wieder lösche, würde ich -T auch weglassen.
Es ist technisch gesehen einfach unnötig, $PATH zu setzen, wenn ich `/usr/bin/whoami` aufrufe. Der Pfad wird dafür überhaupt nicht benötigt. Wenn es nur das wäre. Aber ich sehe ja, wie lang "man perlsec" ist und was da alles drin auftaucht... Meiner Meinung nach sollte das System damit zufrieden geben, Dinge auszuführen, die root freigeschaltet hat. Ich werde schon wissen, warum. Wenn ich sehe, daß apache z.B. nicht als root gestartet werden kann, weil die Programmierer das bewusst abgefangen haben, dann werde ich sauer. Naja. Ein Nachteil von Freeware ist, daß man sich nirgendwo beschweren kann. ;-) -- http://www.gesindel.de | Fontlinge | Die Schriftenverwaltung für Windows