SUID-Binary

Auch bekannt als:SUID · SGID · Set-User-ID

SUID-Binary: Programm, das mit den Rechten seines Eigentümers statt denen des Aufrufers läuft. SUID-Programme sind auf Unix-Systemen der klassische Weg zur RechteausweitungPrivilege EscalationErlangung höherer Berechtigungen als ursprünglich vorgesehen..

Funktionsweise und Einordnung

Setzt der Eigentümer das Set-User-ID-Bit, startet der Prozess mit der effektiven Benutzerkennung der Datei — bei root-eigenen Programmen also mit vollen Rechten, unabhängig davon, wer sie aufruft. Das ist für Aufgaben wie passwd oder ping beabsichtigt. Sicherheitsrelevant wird es, weil die reale und die effektive Kennung auseinanderfallen: access() prüft mit der realen, open() und fopen() arbeiten mit der effektiven. Programme, die beides mischen, öffnen ein Zeitfenster für eine WettlaufsituationRace ConditionFehler, bei dem das Ergebnis von der zeitlichen Reihenfolge paralleler Vorgänge abhängt..

Bedeutung in der Praxis

Eine Bestandsaufnahme mit find / -perm -4000 gehört in jede Systemprüfung. Häufige Fehler in eigenen SUID-Programmen sind unvollständige Pfadprüfungen ohne Kanonisierung, das Vertrauen in Umgebungsvariablen und Aufrufe externer Programme über eine Shell. Robuste Alternativen sind fein granulierte Capabilities statt vollem root, das dauerhafte Ablegen von Rechten vor dem eigentlichen Dateizugriff und das Mounten von Dateisystemen mit der Option nosuid.

Verwandte Begriffe

  • Privilege EscalationPrivilege EscalationErlangung höherer Berechtigungen als ursprünglich vorgesehen.: Erlangung höherer Berechtigungen als ursprünglich vorgesehen.
  • Least PrivilegeLeast PrivilegeVergibt nur die minimal erforderlichen Berechtigungen für Aufgabe und Zeitraum.: Vergibt nur die minimal erforderlichen Berechtigungen für Aufgabe und Zeitraum.
  • HardeningHardeningReduziert die Angriffsfläche durch sichere Konfiguration und Deaktivierung unnötiger Funktionen.: Reduziert die Angriffsfläche durch sichere Konfiguration und Deaktivierung unnötiger Funktionen.
  • Access ControlAccess ControlRegelt, wer auf welche Systeme, Daten oder Funktionen zugreifen darf.: Regelt, wer auf welche Systeme, Daten oder Funktionen zugreifen darf.