Anfängerfehler in Mac OS X

Mac OS X weist elementare Fehler auf, die Entwickler schon seit über zwanzig Jahren nicht mehr machen sollten. So lässt sich ein Setuid-Programm ausnutzen, um Root-Rechte zu erlangen, weil es ohne Sicherheitsvorkehrungen ein Shell-Skript startet.

In Pocket speichern vorlesen Druckansicht 624 Kommentare lesen
Lesezeit: 2 Min.

Setuid-Programme sind auf Unix-Systemen ein Standardmechanismus, um bestimmte Aktivitäten mit anderen Rechten als denen des angemeldeten Benutzers auszuführen, der seit über zwanzig Jahren zum Einsatz kommt. Genauso lange ist bekannt, dass dies ein Sicherheitsrisiko darstellt und welche minimalen Sicherheitsvorkehrungen man dabei zu treffen hat. Dies scheint sich jedoch noch nicht zu den Entwicklern von Mac OS X herumgesprochen zu haben. So verwenden die Systemeinstellungen das Hilfsprogramm writeconfig, das als Setuid-Root-Programm immer mit den Rechten des Administrators läuft. Dies ruft unter anderem das Shell-Skript /sbin/service auf, welches wiederum launchctl startet. Dabei werden gleich mehrere elementare und altbekannte Sicherheitsregeln außer Acht gelassen:

  1. Man ruft in einem Setuid-Kontext keine Shell-Skripte auf. Das lässt sich fast immer irgendwie ausnutzen, um sich dessen Rechte anzueignen.
  2. In einem Setuid-Kontext bereinigt man grundsätzlich die Umgebung. Insbesondere über die Pfad-Variable könnte sonst ein Angreifer eigene Programme unterschieben.
  3. Shell-Skripte, die in einem administrativen Kontext zum Einsatz kommen, sollten externe Programme immer mit absoluten Pfadnamen starten, um sicherzustellen, dass es nicht versehentlich ein falsches Programm ausführt.
  4. Setuid-Programme sind als besonders verwundbarer Punkt einer speziellen Prüfung zu unterziehen.

In diesem Fall kann sich ein lokales Programm unter Mac OS X Root-Rechte verschaffen, indem es die Systemeinstellungen mit einer speziellen Pfad-Variable öffnet. Ob dies die Mitwirkung des Anwenders erfordert, ist bislang nicht ganz klar – bisherige Demonstrationen kommen jedenfalls nicht ohne aus.

Doch das ist sekundär. Viel beunruhigender als das konkrete Problem ist die Tatsache, welch elementare Sicherheitskonzepte bei der Entwicklung von Mac OS X offenbar außer Acht gelassen wurden. Wirklich alarmierend ist, dass dieses Problem der internen Qualitätssicherung entgangen ist. Denn Setuid-Programme sind die erste Anlaufstelle für jeden, der auf einem System nach Sicherheitslücken sucht, derartige Fehler sind recht einfach aufzuspüren. Es ist durchaus naheliegend, dass Mac OS X weitere ähnliche Fehler aufweist. Ein kurzer Test von heise Security erbrachte jedenfalls, dass writeconfig drei weitere Shell-Skripte aufruft.

Um sich vor diesem konkreten Problem zu schützen, genügt es, oben in /sbin/service eine Zeile wie:

export PATH="/bin:/sbin:/usr/sbin:/usr/bin"

einzufügen, die eine saubere Pfad-Variable definiert.

Siehe dazu auch:

(ju)