Warum wird "AcceptEnv *" als unsicher angesehen?

12

In /etc/ssh/sshd_configgibt es eine Option namens AcceptEnv, mit der der ssh-Client Umgebungsvariablen senden kann. Ich muss in der Lage sein, eine große Anzahl von Umgebungsvariablen zu senden. Diese ändern sich bei jeder Verbindung vom Client aus, sodass es schwieriger ist, sie in ein Anmeldeskript auf dem Server einzufügen.

Ich habe gelesen, dass "AcceptEnv *"das unsicher ist. Ich möchte verstehen, warum, bevor ich versuche, eine Liste aller Umgebungsvariablen zu erhalten, die so eingestellt werden sollen, dass sie dort abgelegt werden.

Warum wird es als unsicher angesehen? Kann ich ein Beispiel bekommen?

TheDauthi
quelle

Antworten:

11

Durch Aktivieren der Umgebungsverarbeitung können Benutzer in einigen Konfigurationen mithilfe von Mechanismen wie LD_PRELOAD Zugriffsbeschränkungen umgehen.

Nicht alle Versionen der Manpages für sshd_config erwähnen dies. Wenn Ihre Umgebungsvariablen zuvor geändert werden und bestimmte privilegierte Prozesse mit neuen, hier angegebenen Bibliotheken ausgeführt werden, können Probleme auftreten.

Schauen Sie sich http://www.dankalia.com/tutor/01005/0100501004.htm an und suchen Sie nach "LD_PRELOAD Exploit". Entschuldigung, die Seite hat keine Ankerlinks.

Siehe auch diese StackOverflow-Frage: " Was ist der LD_PRELOAD-Trick? "

Das Festlegen von Umgebungsvariablen nach der Verbindung ist in Ordnung. Wenn diese Variablen jedoch vom ssh-Daemon wie von AcceptEnv festgelegt interpretiert werden, können fehlerhafte Dinge auftreten.

Jeff Ferland
quelle
1
Wie unterscheidet es sich davon, wenn die Variablen nach dem Anmelden manuell festgelegt werden?
Joseph Garvin
1
@JosephGarvin, einige Systeme haben eingeschränkte Shells oder erlauben nur einen bestimmten Befehl, so dass "sie" nicht können . Es geht also darum, ein Mittel bereitzustellen, mit dem solche Sicherheitsmaßnahmen umgangen werden können.
Charles Duffy
0

Akzeptieren Sie keine Umgebungsvariablen:

Sehen Sie sich den kürzlich veröffentlichten Shellshock-Exploit an. Wenn Sie Umgebungsvariablen akzeptieren, eröffnen Sie einen wirklich fiesen Exploit.

John Hunt
quelle
1
Sie verbreiten Angst IMO. Wenn Sie so besorgt sind, warum haben sie SSH-Zugang? Übrigens können Sie sie nicht davon abhalten, Umgebungsvariablen festzulegen, sobald sie sich in der Shell befinden oder sogar funktionieren. Bei diesem Exploit geht es um nicht autorisierten Shell-Zugriff über Dinge wie Nginx, nicht um autorisierten Shell-Zugriff.
Jordon Bedwell
Auf jeden Fall akzeptieren Sie mindestens eine Umgebung. Variable mit dem Namen TERM. Es kann gültige Bedürfnisse geben, um andere Variablen wie DRUCKER, HERAUSGEBER, PAGER, ...
ibre5041
@JordonBedwell, nicht jede SSH-Verbindung ist für den Shell-Zugriff autorisiert. Ich habe mehrere Systeme, in denen es Konten gibt, für die die einzige Authentifizierung mit einem SSH-Schlüssel erfolgt, mit dem nur ein einziger spezifischer Befehl ausgeführt werden kann (mit der Identität des Besitzers dieses Schlüssels und anderen Details).
Charles Duffy
... das heißt, ich stimme zu, dass ShellShock ab 2017 hier sehr übertrieben ist. Bei aktuellen Implementierungen erfordert das Generieren einer exportierten Funktion nicht nur die Kontrolle über den Wert einer Umgebungsvariablen , sondern auch über ihren Namen (und der Prozess der Auswertung exportierter Funktionen während des Shell-Starts ist selbst nicht mehr anfällig für Injektionsangriffe).
Charles Duffy