Warum darf man keine Umgebungsvariablen mitbringen?

2 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Ganz einfach::

Umgebungsvariablen werden von vielen Dingen genutzt. Wenn wir jetzt mal annehmen, daß die beteiligten Programme keinen Fehler bei der eigentlichen Auswertung machen, so steuern Umgebundsvariablen das Verhalten vieler Prozesse. D.h. es besteht grundsätzlich die Möglichkeit Verhalten zu steuern, oder eben auch zu manipulieren.


sonderdings 
Beitragsersteller
 01.06.2024, 15:15

Also du meinst, einer meiner User setzt eine Umgebungsvariable, die von Dingen, die nicht ihn betreffen, genutzt wird, und greift dadurch in Prozesse ein, in die er nicht eingreifen darf?

KarlRanseierIII  01.06.2024, 15:28
@sonderdings

Im Kern ja.

Machen wir es mal (halbwegs) einfach und treffen folgende Annahmen:

gitolite kann konfiguriert werden im Zuge bestimmter Aktionen Shellskripte auszuführen.

Du schreibst ein Shellskript, das neben gitolite-Informationen auch auf andere Umgebungsvariablen zurückgreift und nimmst an, daß die Angaben vertrauenswürdig sind.

gitolite wiederum vergißt beim Ausführen des Shellskriptes die Umgebung zu prüfen und korrekt zu bereinigen.

-----

Nun setzt der User, obwohl er diese Skript nicht direkt ausführen kann/darf entsprechend die Umgebungsvariablen durch ssh(d) und kann so die Ausführung des Skriptes beeinflussen, ohne daß es im Skript berücksichtigt wurde.

Und jetzt stellen wir uns mal vor, das Skript hat weitreichendere Rechte, die der Nutzer eigentlich nie haben sollte.

Übrigens, auch das Verhalten des dynamischen Linkers kann durch die Umgebugn gesteuert werden.

KarlRanseierIII  01.06.2024, 17:15
@sonderdings

Japp. Beachte vor allem das Zusammenspiel, BAckdoor in liblzma entfaltet Wirkung in sshd und ich meien mich zu entsinnen, daß einige Analysen davon sprachen, daß die Backdoor auch Umgebungsvariablen auswertet.

sonderdings 
Beitragsersteller
 01.06.2024, 19:06
@KarlRanseierIII

Okay, ich kannte die XZ-Geschichte (bzw, seien wir ehrlich, ich konnte mich vage dran erinnern), aber dass da mit Umgebungsvariablen hantiert wurde, war mir nicht bekannt. Dankeschön! :-)

Weil man Umgebungsvariablen auslesen kann. Man kann sich auch alle Variablen ausgeben.


sonderdings 
Beitragsersteller
 01.06.2024, 14:58

Ich weiß. Aber wieso ist das ein Sicherheitsproblem?

Quetschtuete  01.06.2024, 15:01
@sonderdings

Wenn ein Angreifer auf deinem System ist kann er alle Passwörter abreifen die als Umgebungsvariablen definiert sind. Oder andere Konfigs abgreifen

sonderdings 
Beitragsersteller
 01.06.2024, 15:14
@Quetschtuete

Tut mir Leid, ich verstehe es nicht.

  1. Ich habe ein System, auf dem sich Leute per SSH einloggen können.
  2. Ich erlaube, dass SSH-User Umgebungsvariablen setzen können.

Wieso ergibt sich daraus, dass einer von diesen Usern "alle Passwörter abgreifen [kann], die als Umgebungsvariable definiert sind"? Umgebungsvariablen kann man doch anschauen, ganz egal ob man sie auch setzen darf oder nicht.

Und das Problem mit "andere Konfigs abgreifen" verstehe ich ehrlich gesagt auch nicht.