Gibt es Methoden, um zu überprüfen, was Sie tatsächlich aus einem Bash-Skript ausführen?
Sagen Sie Ihr Bash - Skript mehrere Befehle ruft (zum Beispiel: tar
, mail
, scp
, mysqldump
) , und Sie sind bereit , um sicherzustellen , dass tar
die tatsächliche ist, real tar
, was durch die bestimmbar root
Benutzer der Datei und übergeordnetes Verzeichnis Eigentümer und der einzige mit Schreibberechtigungen zu sein und nicht einige /tmp/surprise/tar
mit www-data
oder apache2
als Eigentümer.
Klar, ich weiß über PATH
und über die Umgebung Bescheid , ich bin gespannt, ob dies zusätzlich mit einem laufenden Bash-Skript überprüft werden kann und wenn ja, wie genau?
Beispiel: (Pseudocode)
tarfile=$(which tar)
isroot=$(ls -l "$tarfile") | grep "root root"
#and so on...
which
nicht korrekt angegeben wird, was getan tar
wird, wie von xhienne beantwortet, ls
könnte gehackt werden, um falsche Informationen über die Datei (en) zurückzugeben, falls vorhanden. Auch grep
könnte gehackt werden, um falsche Informationen zurückzugeben; Das könnte vermieden werden, indem stattdessen ein Shell-Matching verwendet wird. Dann könnte die Shell gehackt werden. Und Shell könnte gehackt werden, um von type
Anfang an falsche Ergebnisse zu liefern - oder komplett ersetzt werden, da die Austauschbarkeit der Shell eine wichtige Innovation von Unix im Vergleich zu 50-jährigen Betriebssystemen darstellt. Siehe Ken Thompsons Turing-Adresse von 1984. Es ist Schildkröten den ganzen Weg nach unten.
TE
) mit einer Datenbank mit Signaturen hat (dh umfangreicher als eine MD5-Prüfsumme). Wenn TE aktiv ist UND sich eine Datei in der Datenbank befindet, können Sie wählen ob das Programm ausgeführt wird - oder nur warnt, dass es nicht mit der Datenbank übereinstimmt. Außerdem gibt es zwei weitere Einstellungen: TEP
(Trusted Execution PATH) und TLP
(Trusted LIBrary PATH). Es dürfen nur Programme in TEP ausgeführt und Bibliotheken nur mit geladen werden Das Verzeichnis ist in TLP enthalten. In Linux I gibt es etwas namens "AppArmor", das Ihnen helfen könnte.