Was führt dazu, dass / proc / <pid> / * -Ressourcen Eigentum von root werden, obwohl die procs als normaler Benutzer gestartet werden?

7

Ich habe festgestellt, dass bei einigen Prozessen, wie z. B. Bash, die gesamten /proc/<pid>/Ressourcen für den Benutzer lesbar sind, der diesen Prozess erstellt hat. Bei anderen Prozessen wie Chrome oder Gnome-Keyring-Daemon sind die meisten /proc/<pid>/Ressourcen jedoch nur über Root verfügbar, obwohl der Prozess selbst dem normalen Benutzer gehört und kein Suid aufgerufen wird.

Ich habe mich ein wenig im Kernel umgesehen und festgestellt, dass das / proc / stuff begrenzt wird, wenn einer Aufgabe ein 'dumpable'-Flag fehlt. Es fällt mir jedoch schwer zu verstehen, unter welchen Szenarien eine Aufgabe nicht dumpumpbar wird (außer im Fall setuid). was nicht für Chrom oder Gnomschlüsselring gilt):

https://github.com/torvalds/linux/blob/164c09978cebebd8b5fc198e9243777dbaecdfa0/fs/proc/base.c#L1532

Möchte mir jemand helfen, den zugrunde liegenden Mechanismus und die Gründe dafür zu verstehen?

Vielen Dank!

Bearbeiten:

Wir haben ein gutes Dokument darüber gefunden, warum Sie Ihren SSH-Agenten (z. B. gnome-keyring-daemon) nicht von Ihrem Benutzer sichern lassen möchten . Ich bin mir immer noch nicht sicher, wie gnome-keyring-daemon ich mich unaufhaltsam machen soll.

https://github.com/torvalds/linux/blob/164c09978cebebd8b5fc198e9243777dbaecdfa0/Documentation/security/Yama.txt#L30

alienth
quelle

Antworten:

7

Linux hat einen Systemaufruf, der das dumpableFlag ändert . Hier ist ein Beispielcode, den ich vor einigen Jahren geschrieben habe:

#include <sys/prctl.h>
...
/* The last three arguments are just padding, because the
 * system call requires five arguments.
 */
prctl(PR_SET_DUMPABLE,1,42,42,42);

Es kann sein, dass gnome-keyring-daemondas dumpableFlag aus Sicherheitsgründen absichtlich auf Null gesetzt wird.

Kasperd
quelle
Ein solcher Anruf sollte sich in der Klemme zeigen, richtig? Alles, was ich dort sehe, ist ein Prctl zu PR_SET_NAME.
Nebenbei bemerkt, in Bezug auf Ihren Beitrag von vor einigen Jahren, glaube ich, dass Sie das fs.suid_dumpableSystem so einstellen können 2, dass Setuid-Binärdateien entleert werden können.
1
Das Dumpable-Verhalten gilt nicht nur für Setuid-Binärdateien, sondern auch für Setcap-Binärdateien. Versuche zu rennen getcap /usr/bin/gnome-keyring-daemon. Es hat wahrscheinlich einige Dateifunktionen.
Matthew Ife
Dies ist, was getcapauf Ubuntu 12.04 sagt:/usr/bin/gnome-keyring-daemon = cap_ipc_lock+ep
Kasperd
1
Dann kann es den Speicher sperren und somit das Dumpable-Flag deaktivieren.
Matthew Ife