Wenn Sie in einer Bildschirmsitzung eine Root-Shell haben (getrennt oder nicht, kennwortgeschützt oder nicht) und Ihre screen
ausfü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␛l
in den Eingabestream der Shell eingefügt. \ek
ist 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[21t
das Terminal seinen Titel über die Standardeingabe der Anwendung meldet ( screen dokumentiert diese Sequenz nicht, implementiert sie jedoch, Sie finden sie CSI Ps ; Ps ; Ps ; t
in 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.
sudo
.