Seltsames Verhalten von Strace und Setuid: Berechtigung unter Strace verweigert, läuft aber nicht normal

4153
James

Das hängt mit dieser Frage zusammen .

Ich habe ein Skript ( fix-permissions.sh), das einige Dateiberechtigungen korrigiert:

#! /bin/bash  sudo chown -R person:group /path/ sudo chmod -R g+rw /path/ 

Und ein kleines c-Programm, um dieses auszuführen setuid:

#include "sys/types.h" #include "unistd.h" int main(){ setuid(geteuid()); return system("/path/fix-permissions.sh"); } 

Verzeichnis:

-rwsr-xr-x 1 root root 7228 Feb 19 17:33 fix-permissions -rwx--x--x 1 root root 112 Feb 19 13:38 fix-permissions.sh 

Wenn ich das tue, scheint alles in Ordnung zu sein und die Berechtigungen werden korrekt korrigiert:

 james $ sudo su someone-else someone-else $ ./fix-permissions 

aber wenn ich strace benutze, bekomme ich:

someone-else $ strace ./fix-permissions /bin/bash: /path/fix-permissions.sh: Permission denied 

Es ist interessant zu bemerken, dass ich die gleiche Berechtigung verweigert habe, die mit einem identischen Setup (Berechtigungen, Programm c) verweigert wurde, jedoch mit einem anderen Skript, auch wenn strace nicht verwendet wird. Ist dies eine Art heureustisches magisches Verhalten in Setuid, das ich aufdecke?

Wie soll ich herausfinden, was los ist?

System ist Ubuntu 10.04.2 LTS, Linux 2.6.32.26-kvm-i386-20101122 # 1 SMP

1

1 Antwort auf die Frage

4
grawity

Linux ignoriert das Setuid- Bit, wenn ein Prozess unter straceoder ähnlichen Programmen ausgeführt wird.

  • Mailingliste für Linux-Kernel, Re: 2.4.16 + strace 4.4 + setuid-Programme :

    Von: Manfred Spraul
    Datum: Do Dez 06 2001 - 12:25:53 EST

    Wenn Sie setuid-Dinge einschränken und das setuid-Bit einhalten möchten, müssen Sie strace als root mit der Option -u ausführen.

    Nein, auch das ist nicht mehr möglich. Setuid wird jetzt immer ignoriert, wenn ein Prozess ptraced ist, auch wenn root ptracing ist. Dies ist der Fix für den neuesten ptrace-Root-Exploit (2.4.1x).

was wahrscheinlich spricht:

Okay, zusammenfassend: `setuid` hat so viele Sicherheitslücken, dass ich einfach nicht erwarten sollte, dass es funktioniert, und ist es überhaupt eine schlechte Idee, es jemals zu benutzen? James vor 13 Jahren 0
@Autopulated: Nein. Mein Beitrag beschreibt nur * einen * Exploit aus dem Jahr 2003, nicht "viele". Und es ist * der unvorsichtige Gebrauch von setuid, nicht das Feature selbst, das zu Sicherheitslücken führt. Sorgfältig geschriebene Programme funktionieren gut. Es ist jedoch am besten, setuid und * insbesondere * in Ihrem Fall "Google Mail-Passwort" (für den ich eine andere Lösung vorgeschlagen habe) zu vermeiden. grawity vor 13 Jahren 0