Ist es sicher, eine Root-Shell in einer getrennten Bildschirmsitzung laufen zu lassen?

20

Ich bin neugierig auf die Sicherheit, eine Root-Shell in einer getrennten Bildschirmsitzung laufen zu lassen. Normalerweise mache ich das nie.

Abgesehen von der Gefahr, dass mein Nicht-Root-Benutzerkonto kompromittiert wird (Passwort offengelegt, SSH-Schlüssel kompromittiert, usw.), gibt es andere Arten des Eintritts in eine getrennte, passwortgeschützte Bildschirmsitzung, über die ich mir Sorgen machen sollte, oder einen getrennten Bildschirm Sitzung als inert angesehen werden?

Michael
quelle
Dies ist keine Antwort, weil ich es nicht weiß, aber ich glaube nicht, dass es einen Unterschied zwischen dem, was Sie gesagt haben, und dem Überlassen des Jobs macht sudo.
Phunehehe
7
@phunehehe Es gibt einen Unterschied, da nach Abschluss eines Jobs sudodeaktiviert wird, während eine echte Root-Shell geöffnet bleibt.
Michael

Antworten:

5

Ich denke, es ist ein Sicherheitsproblem, da "Abgesehen davon, dass mein Nicht-Root-Benutzerkonto gefährdet sein kann" ziemlich groß sein kann.

Darüber hinaus bestehen jedoch weitere erhöhte Risiken. Sie haben sich jetzt beispielsweise für einen theoretischen Exploit geöffnet, mit dem Sie Berechtigungen im Bildschirm-Socket-Verzeichnis ändern können ( /var/run/screenauf meinem System, wird aber manchmal /tmpverwendet). Dieser Exploit hat jetzt einen Weg, um root zu werden, den es sonst vielleicht nicht gibt.

sudohat andere Vorteile, wenn Sie sich darin üben können, es für jeden Befehl zu verwenden, anstatt es zu tun sudo su -. Es protokolliert Aktionen (die, es sei denn , Sie aus der Ferne sind die Anmeldung, nicht sinnvoll die Sicherheit erhöhen, aber Ihnen nicht gibt eine Spur von dem, was du hast getan). Und es hilft, Unfälle zu vermeiden, indem für jeden Befehl eine absichtliche Eskalation erforderlich ist, anstatt zu einer vollständig privilegierten Sitzung zu wechseln.

mattdm
quelle
1
Obwohl keine solche Exploits jetzt bekannt ist , werde ich behalten nicht root Shells im Bildschirm offen zu lassen. Risiken für das Benutzerkonto reichen aus. Vielen Dank.
Michael
-1 Wenn ich einen Exploit habe, der Dateiberechtigungen ändern kann, muss ich keinen laufenden Bildschirm hacken. Ich kann mit dem System machen, was ich will.
Let_Me_Be
@Let_Me_Be - es hängt davon ab, welche Dateiberechtigungen Sie mit Ihrem Exploit ändern können. Vielleicht können Sie unter bestimmten Hierarchien nur ein paar bestimmte Dinge tun. Das ist nicht so weit hergeholt.
Mattdm
Bildschirm selbst hat eine große Angriffsfläche. Ich kann keine vollständige Attacke zeigen , aber es gibt deutliche Schwächen.
Gilles 'SO- hör auf böse zu sein'
Korrigieren Sie mich, wenn ich falsch liege, aber die Schnittstelle zur Bildschirm-App besteht über eine Shell-Sitzung (entweder direkt auf der Systemkonsole oder über eine SSH-Sitzung). Soweit mir bekannt ist, handelt es sich nicht um ein Netzwerkprotokoll. Daher ist es so sicher wie Ihre SSH-Sitzung oder Terminalsitzung. Wenn einige Benutzer Zugriff auf die SSH-Sitzung oder Ihren physischen Computer haben, sind alle Wetten deaktiviert. Wenn sie genug Zugriff haben, um unter einem Benutzerkonto auf eine Befehlszeile zuzugreifen, können Sie die Sicherheit Ihres Computers auf jeden Fall wegwerfen.
Unsynchronisiert
10

Wenn Sie in einer Bildschirmsitzung eine Root-Shell haben (getrennt oder nicht, kennwortgeschützt oder nicht) und Ihre screenausführbare Datei nicht setxid ist, kann ein Angreifer, der Ihre Berechtigungen erlangt, Befehle in dieser Shell ausführen. Wenn nichts anderes, können sie dies tun, indem sie den Bildschirmprozess verfolgen .

Wenn screen setuid oder setgid ist und die Sitzung getrennt und kennwortgeschützt ist, wird im Prinzip das Bildschirmkennwort benötigt, um Befehle in dieser Shell auszuführen. Wenn dieses Prinzip zutrifft, müsste jemand, der nur Ihr Konto kompromittiert hat, einen Trojaner einrichten und darauf warten, dass Sie das Kennwort eingeben. Die Angriffsfläche (dh die Anzahl der Stellen, an denen aufgrund eines Fehlers oder einer Fehlkonfiguration Probleme auftreten können) ist jedoch unangenehm groß. Zusätzlich zu den grundlegenden Sicherheitsfunktionen des Systems vertrauen Sie auf Folgendes:

  • Bildschirm, um die Passwortprüfung richtig zu machen.
  • Bildschirm, um den Zugriff auf die Sitzung auf andere Weise zu verhindern.
  • Bildschirm, um die Zugriffskontrollmechanismen des Betriebssystems ordnungsgemäß zu verwenden (z. B. Berechtigungen für die Pipes).
  • der Kernel, um die ptrace-Sicherheitsüberprüfungen korrekt durchzuführen (dies ist eine häufige Quelle von Sicherheitslücken).
  • die laufschale macht nichts doofes.
  • eine andere Funktion, um dich nicht zu beißen.

"Ein anderes Feature, um dich nicht zu beißen": Ja, das ist vage. Aber es geht immer um Sicherheit. Sie könnten versucht sein, dies als bloßes Wunschdenken abzulehnen, aber haben Sie wirklich an alles gedacht? Beispielsweise…

Solange Sie auf das Endgerät schreiben können, können Sie Daten in die Eingabe dieser Shell einspeisen. Unter der Standardkonfiguration des Bildschirms auf meinem Computer:

printf '\ekfoo\017bar\e\\' >/dev/pts/33
printf '\e[21t' >/dev/pts/33

Dies wird ␛]lfoobar␛lin den Eingabestream der Shell eingefügt. \ekist die Steuersequenz, mit der eine Anwendung (oder alles, was auf das Endgerät schreiben kann) den Fenstertitel festlegen kann (siehe Abschnitt „Benennen von Fenstern“ im Bildschirmhandbuch ) und \e[21tdas Terminal seinen Titel über die Standardeingabe der Anwendung meldet ( screen dokumentiert diese Sequenz nicht, implementiert sie jedoch, Sie finden sie CSI Ps ; Ps ; Ps ; tin der Liste der xterm-Steuersequenzen . Tatsächlich werden mindestens unter screen 4.0.3 alle Steuerzeichen aus dem gemeldeten Titel entfernt, sodass die Shell liest lfoobar(Vorausgesetzt, ␛]der Angreifer ist nicht an einen Bearbeitungsbefehl gebunden.) Der Angreifer kann also einen Befehl nicht auf diese Weise ausführen, sondern nur einen Befehl wiechmod u+s /bin/sh gefolgt von vielen Leerzeichen und einer wahrscheinlich aussehenden Eingabeaufforderung.

Screen implementiert mehrere andere ähnliche riskante Kontrollsequenzen. Ich weiß nicht, wie groß das Risiko für Sicherheitslücken ist. Aber hoffentlich können Sie jetzt sehen, dass der Schutz, der durch Passwörter für Bildschirmsitzungen geboten wird, nicht so groß ist. Ein dediziertes Sicherheitstool wie sudo weist mit deutlich geringerer Wahrscheinlichkeit Sicherheitslücken auf.

Gilles 'SO - hör auf böse zu sein'
quelle
+1 Hervorragende Antwort. Vielen Dank, dass Sie sich die Zeit genommen haben, alles zu erklären.
Michael
1

Die von screen erstellten Pipes sind nur für den Eigentümer zugänglich, daher sollte dies kein Sicherheitsproblem sein.

Lass mich sein
quelle
5
Sie haben im ersten Teil Ihres Satzes "are" verwendet, wo Sie wahrscheinlich "should be" gemeint haben. Gewöhnen wir uns nicht an, Annahmen zu treffen.
Shadur
1
Äh? Die von screen erstellten Pipes sind nur für den Eigentümer zugänglich (wenn Sie sie nicht manuell ändern).
Let_Me_Be