in2itiv
Aktives Mitglied
Thread Starter
- Dabei seit
- 10.10.2003
- Beiträge
- 26.587
- Reaktionspunkte
- 1.640
heise.de / 22.01.2007
"Anfängerfehler in Mac OS X
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 weit 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:
Man ruft in einem Setuid-Kontext keine Shell-Skripte auf. Das lässt sich fast immer irgendwie ausnutzen, um sich dessen Rechte anzueignen.
In einem Setuid-Kontext bereinigt man grundsätzlich die Umgebung. Insbesondere über die Pfad-Variable könnte sonst ein Angreifer eigene Programme unterschieben.
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.
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."
"Anfängerfehler in Mac OS X
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 weit 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:
Man ruft in einem Setuid-Kontext keine Shell-Skripte auf. Das lässt sich fast immer irgendwie ausnutzen, um sich dessen Rechte anzueignen.
In einem Setuid-Kontext bereinigt man grundsätzlich die Umgebung. Insbesondere über die Pfad-Variable könnte sonst ein Angreifer eigene Programme unterschieben.
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.
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."