Könnte ein Benutzer-Space-Prozess einen Root-Subprozess starten?

563
Mehdi Sadeghi

Ich verwende Ubuntu Linux und habe Viber-eigene Software darauf ausgeführt. Heute habe ich eine Datei mit Viber gespeichert und festgestellt, dass sie im Dateisystem mit dem Root- Benutzer als Eigentümer gespeichert wurde . Ich grub nach mehr und mir wurde klar, dass zwei Prozesse laufen, einer unter meinem Benutzernamen und ein anderer unter root. Könnte mir jemand erklären, ob es möglich ist, dass ein Prozess im Benutzerraum einen anderen Unterprozess als Root startet?

Hier sind die Berechtigungen der mit Viber gespeicherten Datei:

mehdix@spielplatz:~/New Folder2$ ls -l total 240 -rw-rw-r-- 1 root root 245455 Okt 9 09:50 saved_with_viber 

und hier ist das Befehlsergebnis 'ps':

mehdix@spielplatz:~$ ps axuf | grep Viber mehdix 23857 0.0 0.0 4444 644 ? S Okt08 0:00 \_ /bin/sh /usr/share/viber/Viber.sh root 23864 0.0 1.8 2794592 146604 ? Sl Okt08 0:17 | \_ /usr/share/viber/Viber mehdix 26484 0.0 0.0 17432 964 pts/5 S+ 09:43 0:00 \_ grep --color=auto Viber mehdix@spielplatz:~$ 

Hier ist die Ausgabe von 'ls -l / usr / share / viber / Viber':

mehdix@spielplatz:~$ ls -l /usr/share/viber/Viber -rwsr-sr-x 1 root root 1733113 Okt 31 2013 /usr/share/viber/Viber 

und hier ist der Inhalt von '/usr/share/viber/Viber.sh':

mehdix@spielplatz:~$ cat /usr/share/viber/Viber.sh #!/bin/sh appname=`basename $0 | sed s,\.sh$,,`  dirname=`dirname $0` tmp="$"  if [ "$" != "/" ]; then dirname=$PWD/$dirname fi  LD_LIBRARY_PATH=$dirname export LD_LIBRARY_PATH 
0
Sicher. SUID nachschlagen. Bob vor 9 Jahren 0
@ Bob Ich verstehe die Situation nicht. Ich bin mir ziemlich sicher, dass ein User-Space-Programm niemals in der Lage sein sollte, irgendetwas als Root auszuführen. Wie kann dann ein Root-Unterprozess gestartet und Dateiberechtigungen als Root markiert werden? Oder irre ich mich völlig? Mehdi Sadeghi vor 9 Jahren 0
Können Sie die Ausgabe von `ls -l / usr / share / viber / Viber` anzeigen und irgendwo` / usr / share / viber / Viber.sh 'posten? Das könnte uns sagen, was los ist ... lemonsqueeze vor 9 Jahren 0

1 Antwort auf die Frage

2
Bob

Sicher. Eine Datei mit dem SUID-Berechtigungsbit wird unter dem Dateieigentümer und nicht unter dem Benutzer ausgeführt, der sie gestartet hat. Eine SUID-Datei, die root gehört, wird unter root ausgeführt.

sudoist ein Beispiel für ein solches Programm. Sie können es von jedem Benutzer aus starten, es wird jedoch unter root ausgeführt und kann weitere Prozesse mit root-Berechtigungen starten.

Wie Sie in Ihrer ls -lAusgabe sehen können, handelt es sich hierbei um die Methode, die hier verwendet wird: Die Datei gehört rootund das SUID-Bit ist gesetzt (wie von sanstelle von xBenutzerausführungsberechtigungen angegeben). Tatsächlich sieht es so aus, als ob auch das SGID-Bit gesetzt ist.

Wenn ich 'sudo' starte, muss ich das root-Passwort angeben, aber beim Starten von Viber gebe ich kein Passwort. Ist das wichtig? Mehdi Sadeghi vor 9 Jahren 0
@MehdiSadeghi Das Passwort wird von der `sudo`-Binärdatei angefordert und verwaltet und hat ** nichts ** mit SUID zu tun - es tritt * auf, nachdem * die Binärdatei unter dem` root'-Benutzer ausgeführt wurde. Die SUID und andere Berechtigungen werden vom Kernel (`exec`) verwaltet. Bob vor 9 Jahren 0