Einige Programme benötigen eng begrenzten Zugriff, den ihre Aufrufer gewöhnlich nicht besitzen. Bei einer ausführbaren regulären Datei kann das Set-User-ID-Bit bewirken, dass ein neuer Prozess die Benutzer-ID des Dateieigentümers als effektive Benutzer-ID erhält. Das Programm kann dann Vorgänge ausführen, die für diese Identität autorisiert sind, und zugleich Informationen über den Aufrufer behalten.
Berechtigungen · Lektion 5
Setuid
Erfahre, wie sich das Set-User-ID-Modusbit auf ausführbare Programme auswirkt und warum es eine sorgfältige Sicherheitsprüfung erfordert.
Setuid ist keine allgemeine Anweisung, ein Programm „als root auszuführen“. Seine Wirkung hängt vom Eigentümer der ausführbaren Datei, vom Betriebssystem, vom Dateisystem und seinen Einhängeoptionen sowie davon ab, wie das Programm seine Zugangsdaten verwaltet.
Setuid erkennen
Auf Systemen, die eine setuid-fähige ausführbare Datei passwd verwenden, kann eine ausführliche Auflistung so aussehen:
$ ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 68248 Jan 10 09:30 /usr/bin/passwd
Das kleingeschriebene s an der Ausführungsposition des Eigentümers bedeutet, dass sowohl setuid als auch die Ausführungsberechtigung des Eigentümers gesetzt sind. Wenn setuid vorhanden ist, aber die Ausführungsberechtigung des Eigentümers fehlt, zeigt ls -l an dieser Stelle ein großgeschriebenes S an.
Gehe nicht davon aus, dass jede Distribution denselben Modus oder denselben Authentifizierungsaufbau besitzt. Prüfe das tatsächliche System, statt dich auf das Beispiel zu verlassen.
Was zeigt ein kleingeschriebenes s an der Ausführungsposition des Eigentümers an?
Die Änderung der Zugangsdaten verstehen
Wenn der Kernel setuid bei der Ausführung berücksichtigt, erhält der neue Prozess gewöhnlich eine effektive Benutzer-ID, die sich aus dem Eigentümer der ausführbaren Datei ableitet. Bei einem root gehörenden Programm kann dies von root autorisierten Zugriff gewähren, allerdings nur während der Programmausführung und nur über die Vorgänge, die sein Code tatsächlich ausführt.
Dieser Mechanismus kann einem sorgfältig geschriebenen Programm ermöglichen, eine Anfrage zu validieren und eine begrenzte Änderung an geschützten Zuständen vorzunehmen. Ein lokales Werkzeug zur Passwortänderung kann beispielsweise kontrollierten Zugriff auf Authentifizierungsdaten benötigen, die gewöhnliche Benutzer nicht direkt bearbeiten dürfen. Moderne Implementierungen stützen sich außerdem auf PAM, Dateisperren, Richtlinien und weitere Schutzmaßnahmen; setuid allein erklärt nicht den gesamten Arbeitsablauf.
Welche Identität wird bei einer berücksichtigten setuid-Datei hauptsächlich vom Dateieigentümer übernommen?
Das Bit setzen und entfernen
Setze setuid symbolisch mit:
$ sudo chmod u+s myfile
In oktaler Schreibweise trägt setuid 4 zu einer führenden Ziffer für besondere Bits bei:
$ sudo chmod 4755 myfile
Hier setzt die führende 4 setuid, während 755 die gewöhnlichen Bits für Eigentümer, Gruppe und andere festlegt. Entferne setuid mit chmod u-s myfile, ohne den restlichen Modus zu ändern.
Welcher führende oktale Wert steht für das besondere setuid-Bit?
Setuid als sicherheitskritisch behandeln
Ein Fehler in einem privilegierten setuid-Programm kann zu einem Weg für Rechteausweitung werden. Solche Programme müssen Eingaben validieren, die als vertrauenswürdig behandelte Umgebung und Dateipfade kontrollieren, unsicheres Verhalten bei Unterprozessen vermeiden, privilegierten Code minimieren und erhöhte Zugangsdaten so früh wie möglich ablegen.
Linux berücksichtigt setuid bei interpretierten Skripten gewöhnlich nicht, weil eine sichere Umsetzung Probleme mit Race Conditions und Interpretern mit sich bringt. Mit nosuid eingehängte Dateisysteme unterdrücken außerdem die Wirkung von setuid und setgid. Bevorzuge engere Mechanismen wie durch Dienste vermittelte Vorgänge, sorgfältig begrenzte sudo-Richtlinien oder Capabilities, wenn sie zur Anforderung passen.
Füge niemals einer beliebigen Shell, einem Interpreter oder einem kopierten Programm experimentell setuid auf einem gemeinsam genutzten System hinzu. Prüfe bestehende setuid-Dateien und übe ausschließlich in einer isolierten, entbehrlichen Umgebung.
Welchen Zweck hat das Einhängen eines Dateisystems mit nosuid?
Lektion abgeschlossen
Sie haben Setuid abgeschlossen
Du kannst nun setuid erkennen und seine Auswirkungen auf Zugangsdaten und Sicherheit erklären.
Finde
soderSan der Ausführungsposition des Eigentümers.Setze die setuid-Ausführung mit der effektiven Benutzeridentität des Eigentümers der ausführbaren Datei in Beziehung.
Setze oder entferne das Bit mit symbolischen oder oktalen
chmod-Modi.Behandle jede privilegierte ausführbare Datei als sicherheitskritischen Code.
Lernfortschritt speichern
Erstellen Sie ein kostenloses Konto, um diese Lektion zu speichern und auf jedem Gerät weiterzulernen.
Kostenloses Konto erstellen