Was sind die weltweit beschreibbaren Verzeichnisse standardmäßig?

14

In einem Standard - Linux - Dateisystem, sind , welche diese gemeinsamen Verzeichnisse Welt beschreibbare standardmäßig ?

 /tmp 
 /etc
 /var 
 /proc 
 /bin 
 /boot
 /....
 ....

Warum sind sie weltweit beschreibbar? Stellt das ein Sicherheitsrisiko dar?

Abdennour TOUMI
quelle

Antworten:

16

Die einzigen von FHS vorgeschriebenen Verzeichnisse, die allgemein von der Welt beschreibbar sind, sind /tmpund/var/tmp . In beiden Fällen sind sie zum Speichern temporärer Dateien vorgesehen, die von jedem erstellt werden können.

Ebenfalls häufig ist /dev/shm, als ein tmpfs (Dateisystem von RAM gesichert), für schnellen Zugriff auf mittelgroße Daten zwischen Prozessen gemeinsam genutzt, oder einfach nur Erstellen von Dateien , die beim Neustart zerstört werden garantiert werden.

Es kann auch ein /var/mailoder /var/spool/mailund manchmal andere Spoolerverzeichnisse geben. Diese werden verwendet, um E-Mails vor der Verarbeitung vorübergehend zurückzuhalten. Sie sind nicht immer von der Welt beschreibbar, abhängig von den verwendeten Werkzeugen. Wenn dies der Fall ist, können Dateien dort von Benutzerprogrammen zur Verarbeitung durch Dämonen erstellt werden.

Bei all diesen Verzeichnissen ist normalerweise das Sticky-Bit ( t) gesetzt, was bedeutet, dass nur der Eigentümer einer Datei oder des Verzeichnisses die darin enthaltenen Dateien verschieben oder löschen kann.

Jedes Programm, das als Benutzer ausgeführt wird, kann Dateien in diesen Verzeichnissen erstellen, und es ist Sache des Erstellers, das Richtige zu tun, was die Sicherheit seiner Daten angeht. Es gibt kein spezielles allgemeines Sicherheitsproblem außer jemandem, der möglicherweise das Dateisystem ausfüllt, aber viel Spielraum für ein Programm, um es falsch zu machen.

Es wurden einige Schritte in Richtung dienstspezifischer /tmpVerzeichnisse unternommen . Dies vermeidet einige der potenziellen Fehler, die auftreten können. Daher ist es für das Programm nicht so wichtig, fehlerfrei zu sein, wenn es das Verzeichnis verwendet.


Sie finden die weltweit beschreibbaren Verzeichnisse auf Ihrem System unter:

find / -maxdepth 3 -type d -perm -777
Michael Homer
quelle
8

/tmp, /var/tmpUnd /var/locksind welt beschreibbaren standardmäßig. Möglicherweise sind Symlinks wie /usr/tmp→ vorhanden /var/tmp, um die Kompatibilität mit älteren Anwendungen zu gewährleisten.

/tmpund /var/tmpweltweit beschreibbar, da sie von jedem Benutzer für die temporäre Speicherung verwendet werden sollen. /var/lockEs ist von der Welt aus beschreibbar, sodass jeder Prozess, der als Benutzer ausgeführt wird, Sperrdateien an einem zentralen Ort erstellen kann.

Gibt es ein Sicherheitsrisiko? Nein, aber irgendwie ja.

Die Berechtigungen für alle diese Verzeichnisse sind 1777, wobei das führende Bit1 das Sticky-Bit ist . Das bedeutet, dass, während jeder eine Datei in diesen weltweit beschreibbaren Verzeichnissen erstellen kann, nur der Eigentümer seine eigenen Dateien löschen kann (und natürlich auch der Root-Benutzer).

Das mögliche Sicherheitsrisiko kann durch unsichere temporäre Dateierstellung entstehen. Da diese Verzeichnisse für alle kostenlos sind, müssen Benutzer Vorkehrungen treffen, um sicherzustellen, dass die von ihnen erstellten Dateien tatsächlich neue Dateien sind, anstatt eine vorhandene Datei oder einen Symlink zu öffnen, der möglicherweise von einem böswilligen Benutzer dort abgelegt wurde. Wenn Dateien mit geeigneten Techniken wie open(…, O_EXCL)oder erstellt werden mkstemp(3), wird dieses Risiko vermieden.

200_erfolg
quelle
1
Auf modernen Systemen ist einer dieser Kompatibilitätssymlinks /var/lock/run/lock
camh
2

/tmp

Es ist riskant, da Sie zusätzlichen Code hinzufügen müssen, um es sicher zu verwenden. Offensichtlich wird dies übersehen.

Ein aktuelles Beispiel ist Steve Kemp. http://blog.steve.org.uk/sometimes_reading_code_makes_you_scream_.html

./mgmt/tools/SysAPI.cc:  tmp = fopen("/tmp/shadow", "w");
./mgmt/tools/SysAPI.cc:    system("/bin/mv -f /tmp/shadow /etc/shadow");

Wenn Sie (der Angreifer) / tmp / shadow vor der zweiten Zeile ersetzen, müssen Sie das Kennwort aller ersetzen. (Ich schätze, der Angriff erfordert, dass Sie die Datei vor der ersten Zeile erstellen und die Datei für die Welt beschreibbar machen.)

Mit Systemd on Linux können solche Schwachstellen durch Isolieren von / tmp für viele Systemdienste verringert werden. (Ausgenommen solche, die "/ tmp als Speicherort für IPC-Sockets und andere Kommunikationsprimitive missbrauchen").

In Fedora Linux - http://fedoraproject.org/wiki/Features/ServicesPrivateTmp

Systembeschreibung - http://0pointer.de/blog/projects/security.html

sourcejedi
quelle
"Ich denke, der Angriff erfordert, dass Sie die Datei vor der ersten Zeile erstellen" - in der Tat. Wenn die Datei noch nicht vorhanden ist, wird sie in der ersten Zeile als aktiver Benutzer (vermutlich root) erstellt, und ein anderer böswilliger Benutzer hat keine Berechtigung, sie vor der zweiten Zeile zu ersetzen. Wenn die Datei bereits vorhanden ist, wird sie fopenüberschrieben, die Berechtigungen werden jedoch nicht zurückgesetzt, sodass der böswillige Benutzer weiterhin Änderungen vornehmen kann. Ein böswilliger Benutzer hätte auch etwas ln -s /bin/bash /tmp/shadowvor der ersten Zeile tun können, sodass eine wichtige Systembinärdatei überschrieben würde.
HDV
2

Mit können Sie weltweit beschreibbare Verzeichnisse finden

find / -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print

Für Dateien ändern Sie den Typ auf f

Für Symlinks geben Sie an l

So setzen Sie ein klebriges Bit:

find / -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print0| xargs -0 chmod +t
Jithinsha
quelle