Ich versuche festzustellen, ob unter Linux Umgebungsvariablen für einen Prozess von anderen (nicht als Root ausgeführten) Benutzern beobachtet werden können.
Der unmittelbare Anwendungsfall besteht darin, Geheimnisse in Umgebungsvariablen zu stecken. Dies wird an vielen Stellen im Web als unsicher erörtert, aber ich konnte mich nicht auf den genauen Expositionspunkt in Linux konzentrieren.
Beachten Sie, dass ich nicht darüber spreche, Klartextgeheimnisse in Dateien abzulegen. Beachten Sie auch, dass ich nicht über die Offenlegung des Root-Kontos spreche (ich betrachte den Versuch, Geheimnisse vor einem Gegner mit Root als Nichtstarter zu verbergen).
Diese Frage scheint sich mit meinen zu befassen, mit Kommentaren, die Umgebungsvariablen als völlig sicherheitslos oder einfach nur verschleiert klassifizieren, aber wie greift man darauf zu?
In meinen Tests kann ein nicht privilegierter Benutzer keine Umgebungsvariablen für einen anderen Benutzer über die Prozesstabelle ('ps auxwwe') beobachten. Die Befehle, mit denen Umgebungsvariablen gesetzt werden (z. B. export), sind Shell-Builtins, die es nicht in die Prozesstabelle schaffen, und befinden sich daher nicht in / proc / $ pid / cmdline. / proc / $ pid / environ kann nur von der UID des Prozesseigners gelesen werden.
Möglicherweise besteht die Verwechslung zwischen verschiedenen Betriebssystemen oder Versionen. Verschiedene (aktuelle) Quellen im Web entschlüsseln die Unsicherheit von Umgebungsvariablen, aber meine Stichprobe verschiedener Linux-Versionen scheint zu zeigen, dass dies nicht möglich ist, zumindest nicht bis 2007 (wahrscheinlich weiter, aber ich habe keine Kästchen aktiviert) Hand zum Testen).
Wie kann ein nicht privilegierter Benutzer unter Linux Umgebungsvariablen für die Prozesse eines anderen Benutzers beobachten?