Open Source im professionellen Einsatz
Linux-Magazin 06/2008
© Juri Samsonov, fotolia.com

© Juri Samsonov, fotolia.com

Programme mit Posix Capabilities ausstatten: Endlich per Dateisystem möglich

Grünes Licht für Pcaps

Für Normaluser funktionieren viele Befehle nur, wenn ihnen Set-UID administrative Privilegien verleiht. Doch das ist riskant - ein Bug und etwas Pech genügen, schon ist der User Root. Klug gesetzte Posix Capabilities statt S-Bits beschränken die Zusatzrechte dagegen auf das Nötigste.

667

Ohne Set-UID-Programme läuft kein Linux-System (siehe Kasten "Set-UID-Bit"). Solange jedes mit S-Bit ausgestattete Programm sicher entworfen und programmiert ist, sind S-Bits zwar ein Segen. Sie bergen aber ein erhebliches Risiko: Ein Fehler in einem einzelnen S-Bit-Programm genügt, und ein normaler User kann sich dessen sämtliche Rechte verschaffen, in der Regel also Root werden. Als privilegierter Prozess setzen sich Set-UID-Root-Programme über alle Berechtigungsprüfungen hinweg. Dabei brauchen die meisten Tools bei Weitem nicht alle Privilegien des Root-Rechts.

Set-UID-Bit

Linux führt einen Prozess immer unter der Kennung jenes Benutzers aus, der das Programm startet. Somit gelten die Rechte eines Users für alle seine Aktionen. Dieses über 35 Jahren bewährte Konzept hat Linux von Unix übernommen. Allerdings funktioniert das simple Schema nicht in jedem Fall, zum Beispiel wenn ein User sein Kennwort ändern möchte. Das Passwort steht in »/etc/passwd« oder »/etc/shadow«, beide Dateien sind für einen normalen Benutzer aber nicht schreibbar und nur »/etc/passwd« ist lesbar. Ein pauschales Schreibrecht wäre fatal, denn jeder Anwender und jede Anwendung könnte alle Passwörter ändern.

Unter fremder Flagge

Um das Dilemma zu lösen, erfand Dennis Ritchie, einer der Unix-Väter, das Set-UID-Bit. Die Bell Laboratories meldeten seine Idee 1973 sogar zum Patent an, das sie 1979 unter der Nummer 4 135 240 auch erhielten [1] und später als Public Domain freigaben. Mit dem Set-UID-Bit ist es möglich, dass ein Benutzer einen Prozess erzeugt, der die Rechte des Dateibesitzers, also eines anderen Benutzers, ausübt. Auf Fedora 8 sieht zum Beispiel das Passwort-Programm wie folgt aus:

-rwsr-xr-x 1 root root 25604  5. Apr 2007 /usr/bin/passwd

Die Programmdatei gehört »root« und hat das Set-UID-Bit gesetzt, erkennbar an dem kleinen »s« statt eines »x« an vierter Stelle. Der entstehende Prozess »passwd« hat dank S-Bit effektiv die Rechte des Benutzers »root« (Effective UID), also die Rechte des Besitzers der Programmdatei.

Die Rechte des aufrufenden Users behält er aber bei (Real UID). Dank Saved UID kann der Prozess sogar jederzeit zwischen den Rechten wechseln. Ruft der Benutzer »ralf« den Befehl »passwd« auf, dann lassen sich die Rechteverhältnisse mit dem Befehl »ps -o cmd,pid,ppid,euser,ruser, -U ralf« anzeigen:

CMD          PID  PPID EUSER    RUSER
-bash       2851  2848 ralf     ralf
passwd      2912  2851 root     ralf

Die Ausgabe verrät, dass der Benutzer »ralf« sich angemeldet hat, ihm gehört die Login-Shell »-bash«. Anschließend hat er den Befehl »passwd« aufgerufen. Der läuft mit der realen User-ID (Ruser) »ralf« und der effektiven UID (Euser) »root«. Nun könnte das »passwd«-Tool alle Möglichkeiten von Root nutzen und beispielsweise fremde Passwörter ändern oder die Firewall abschalten.

Solange keine Programmierfehler vorliegen, beschränkt sich »passwd« freilich darauf, das Passwort des aufrufenden Users zu ändern. Um das Risiko zu mindern, haben die Linux-Distributoren in den letzten Jahren den Einsatz der Set-UID-Bits reduziert.

Kampf der Gießkanne

Um der Rechtevergabe nach dem Gießkannenprinzip zu entkommen, haben die Unix-Hersteller Alternativen gesucht. Entstanden sind die Capabilities, die einzeln aufführen, welche Rechte ein Prozess haben kann. Es gab unter den Nummern Posix.6 und später Posix 1003.1e sogar einen Entwurf für einen Standard. Nach 13 Jahren Komitee-Arbeit verwarf das IEEE den Entwurf aber im Jahr 1998 [2]. Dieser Teil der Geschichte lebt heute noch im Namen Posix Capabilities (kurz Pcaps) weiter - und in den Access Control Lists (ACL), die ebenfalls ihre Wurzeln in diesen Arbeiten haben.

Root zerteilt

Seit Kernel 2.2, genauer seit dem 2.1er Entwicklungszyklus, unterteilt Linux das Root-Recht in diskrete Privilegien, über die ein Prozess verfügen kann. Diese Privilegien heißen unter Linux Posix Capabilities oder Pcaps, während Sun sie in Solaris als Privilege bezeichnet. Ein Prozess darf unter Linux sogar die notwendigen Pcaps für einzelne Codeabschnitte aktivieren (auf »effective« setzen) oder abschalten. Sie sind somit für Bugs in anderen Codeteilen nicht nutzbar. Welche Capabilities unter Linux bereitstehen, zeigen Tabelle 1, die Manpage »capabilities(7)« sowie die Kommentare im Header »/usr/include/sys/capability.h« oder in den Kernelsourcen in »/usr/src/linux/include/linux/capability.h«.

Tabelle 1: Posix
Capabilities

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Bitte anklopfen

    Unsichtbare Hintertüren in standfesten Außenmauern verbinden Sicherheit und Freiheit beim Kommunizieren: Wer die Tür und den Code nicht kennt, bemerkt nicht mal, dass es sie gibt.

  • Umweltverschmutzung

    So mancher Admin ist unbeabsichtigt Mitverursacher der eigenen Sicherheitsprobleme, wenn er zu Editor und Compiler greift und Skripte schreibt oder Programme ändert. Dieser Workshop erklärt häufige und gefährliche Fehler im Zusammenhang mit der Prozessumgebung und zeigt, wie es besser geht.

  • Insecurity Bulletin

    Das Tool Docker betreibt Ressourcen-schonende Virtualisierung innerhalb des Betriebssystems. Die so erzeugten Container sind aber nicht ausbruchsicher, wie ein Exploit im Juni gezeigt hat.

  • Verkehrskontrolle

    Grafische Oberflächen mit GTK müssen Entwickler nicht in aufwändigem Spaghetti-Code definieren. Eine ausgefeilte Oberfläche entsteht mit dem GUI-Builder Glade per Drag&Drop. Die Beschreibung im XML-Format lesen Programme zur Laufzeit ein. So entsteht ein Netzwerk-Sniffer mit schöner Oberfläche.

  • Container

    In dem Maße, wie Containerlösungen wie Docker in Unternehmen immer mehr Anwender finden, rücken Sicherheitsaspekte stärker in den Fokus. Schon länger bescheinigen Kritiker Docker Schwächen in diesem Bereich. Doch wo genau hat sich das Projekt verhoben?

comments powered by Disqus

Ausgabe 10/2017

Digitale Ausgabe: Preis € 6,40
(inkl. 19% MwSt.)

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.