Das Satz uid Problem


  Share  
|


Programmierenfehler in stellten-uid Programme sind gewesen eine reale Quelle von Sicherheit Kopfschmerzen ein. Eine einzelne Sicherheit Bohrung in gerade einer stellte-uid Wurzelprogramm kann alle sein ein, die erforderlich ist, damit ein Angreifer Wurzelzugang gewinnt.

Das Problem ist weitverbreitet. Wir sprechen nicht über ein oder zwei lokalisierte Fälle—mehr wie ein Graveyard von defektem einstellten-uid Programme. Wieder überprüfen Sie die SecurityFocus.com Verwundbarkeitdatenbank auf einstellen-uid Probleme—dort sind gewesen Hunderte (Tausenden?)! Das Problem geht, auch nicht nicht—besonders in third-Partei Programme weg. Neu stellenSie Verwundbarkeit werden berichtet Bugtraq auf einer wöchentlichen Grundlage ein.

Das Schreiben sicher stellte-uid Programme kann schwierig sein ein. Gerade weil Sie programmieren können, bildet C Sie einen Sicherheit Gott nicht. Heck, sogar die Sicherheit Götter erhalten es falsch manchmal.

Die C-Sprache ist zum Entwickler von einstellte-uid Marken der Programme C—es zu einfach, oben zu schrauben und die Stalltür zu öffnen recht unversöhnlich. Spezifisch hat der Mangel an den Grenzen, die in C überprüfen, vielen Entwicklern erlaubt, Programme mit Pufferüberlauf zu schreiben.

Jedoch würde es hübscher Lamé sein, damit wir eine Sprache für einstellten-uid Probleme tadeln. Nachdem alle Sicherheit Gefahren von C gut dokumentiert sind,—ist es kaum eine neue Sprache. Leider, ist die größte Quelle von Sicherheit Verwundbarkeit die näive Programmierer, die zusammen Code schlagen, den sie sind sicher denken.

Eine typische UNIX Verteilung versendet mit vielem einstellte-uid die Wurzelakten, die—zwischen 70 und 100 Durchschnitt berechnen. Jetzt läuft nicht jede Linie des Codes notwendigerweise mit Wurzelprivileg, welches—das Privileg durch das Programm über einen Anruf hervorgerufen werden muß einstellte-uid. Aber, selbst wenn die privilegierten Linien des Codes Super sicher geschrieben werden, kann ein wily Angreifer eine Bohrung in ausnutzen nonprivileged Abschnitt des Codes (das heißt, vor dem Anruf stellenSie) ein, mit verheerenden Konsequenzen. Wenn der Angreifer einen Pufferüberlauf ausnutzt und das Programm zwingen kann, um einen Anruf zu bilden einstellte-uid—Hochkonjunktur, Spiel rüber. Jeder möglicher Code, den der Angreifer liefern kann, damit das Programm durchführt, läuft mit Wurzelprivilegien.

Sicherheit-savvy Programmierer werfen weg einstellten-uid Privileg schon in möglichem im Programm.

So die Zahl privilegierten Programmen gegeben, wird der Verwalter überlassen, um zu erwägen: "wo wird die folgende Verwundbarkeit gefunden?" Die Antwort ist, wir einfach wissen nicht. Folglich ist der auf lagerrat jedes möglichen Sicherheit Lehrbuchs, zu entfernen einstellte-uid Spitze von den nicht notwendigen privilegierten Programmen. Dieses ist viel einfacheres besagtes als getan. Wie wissen Sie, was nicht notwendig ist? Sicher, wissen Sie, daß Programme wie passwd Notwendigkeit zu sein einstellen-uid, aber was über alle jene andere? Das Entfernen stellte-uid Spitze muß mit vieler Obacht getan werden ein,—es sei denn Sie eine Menge freie Zeit auf Ihren Händen haben möchten.

Ein klassisches Beispiel von irrelevantem stellte-uid Code (mindestens für die meisten Leute) ist die KCMS (Kodak Farbe Management-System) Suite von Programmen ein. Diese werden während eines vollen anbringen von Solaris und einstellen-uid Wurzel angebracht. Das CERT beratendes CA-1996-15 beschreibt KCMS wie

…ein Satz von Openwindows gefällige API und Bibliotheken, zum der Profile zu verursachen und zu handhaben, die die Farbe Leistung der Monitoren, der Scanner, der Drucker und der Filmausgabeeinheiten beschreiben und steuern können.

So wenn Sie ein Solaris admin sind, haben Sie überhaupt die verwendet? Das einzige mal als ich sie sollte zu den Systemverwaltern demonstrieren benutzt habe, wie leicht Wurzel verglichen werden könnte.

Ein anderes allgemeineres Beispiel ist das Pingprogramm. Ping schickt ein ICMP ECHO-ANTRAG-Paket zu einem ferninstallierten System und wartet eine Antwort (ICMP ECHO-ANTWORT) zur Überprüfung, ob das ferninstallierte System lebendig ist (obgleich nicht notwendigerweise arbeitend). Die Standardimplementierung von Ping erfordert eine rohe Einfaßung, in der Lage zuSEIN, das ICMP ECHO-ANTRAG-Paket zu errichten. Dieses ist eine privilegierte Tätigkeit, weil, Zugang eine zu den rohen Einfaßung Mitteln habend, Sie die kundenspezifischen Pakete herstellen können, die—in den falschen Händen sehr gefährlich sind. So ist der Pingbefehl einstellte-uid Wurzel.

Leider kann das Erlauben des boshaften Anwenderzugriffs zu den scheinbar harmlosen Programmen wie Ping einen Sicherheit Alptraum ergeben. Erinnern Sie sich den an Ping des Todes? Der Pingbefehl hat eine Wahl, hingegen der Benutzer die Größe des gesendeten ICMP Pakets steuern kann. Er fällt aus, daß einige Implementierungen von Ping Benutzern erlauben, sehr große Pingpakete auszusenden, die ferninstallierte Systeme veranlassen haben zusammenzustoßen. War jemand, das das erwartet? Selbstverständlich nicht. Folglich die Notwendigkeit, der wenigen Privileggrundregel zu folgen. Erlauben Sie nur Benutzern, laufen zu lassen, was sie laufen lassen müssen, um ihre Arbeit zu erledigen. Muß jeder Benutzer auf jedem System wirklich in der LageSEIN, Netzdiagnosewerkzeuge laufen zu lassen?

Dann gibt es jenes einstellen-uid Programme, die nicht sogar brauchen zu sein einstellen-uid—gewöhnlich, System Leitung Befehle. StellenSie Spitze ist überflüssig ein, wenn nur Wurzel sie laufen läßt.

Ich berücksichtige nicht irgendwelche Verkäufer, die jede mögliche Anleitung zur Verfügung stellen, oder die genügenden technischen Programmunterlagen, zum eines Verwalters leicht, zu helfen unwesentliches zu kennzeichnen stellten-uid Programme ein.

Glücklicherweise für Solaris und Linux Benutzer, gibt es etwas gute Informationen heraus dort auf der Blockierung hinunter Ihr einstellte-uid Programme.

So wie setzen Sie Aussetzung Ihres Systems zu einstellen-uid Bohrungen herab, die in die Flügel warten?

1. Versuchen Sie die, volle Verteilung anzubringen zu vermeiden—anbringen nur, was Sie benötigen. Dieses ist Sicherheit bestes üblich. Wenn der Code nicht auf Ihrem Festplattenlaufwerk ist, dann können niemand es gegen Sie benutzen. Aber dieses kann hart sein, in einem Druck-gefüllten Klima zu erfüllen, in dem der Fokus auf dem Erhalten von von Sachen Phasen ist. Erinnern Sie einfach, daß sich die Kosten von lockdown Pfosten-leben.

2. Verzeichnen Sie alle set-uid/set-gid Programme über das System. Sie können dies mit den folgenden Befehlen tun:

3. Entdeckung/- Perm - u+s - Druck
4. Entdeckung/- Perm - g+s - Druck

5. Finden Sie den angegebenen Zweck jedes Programms heraus. Sie sind wahrscheinlich, zu finden, daß einige von ihnen weder Sie total—nicht notwendig sind, noch Ihre Benutzer überhaupt sie würden laufen lassen müssen. So lang, wie diese Programme nicht für System-Bedienung angefordert werden, können sie haben einstellen-uid Spitze entfernt, oder wechselweise kann aller Zugang durch anderen entfernt werden (das heißt, chmod o-rwx Akte).

6. Kennzeichnen Sie einstellen-uid Wurzelprogramme, die nur Wurzel laufen lassen muß und entfernen einstellen-uid Spitze, die—sie nicht brauchen zu sein einstellen-uid, weil Sie sie als Wurzel laufen lassen werden. Es gibt keinen Punkt, wenn man die möglichen Zeitbomben läßt, die herum für jemand zum Spiel mit liegen. Entfernen Sie einstellen-uid Spitze oder zugänglich machen durch andere (irgendein ist gut). Dieses kann viele Programme beseitigen.

7. Kennzeichnen Sie einstellen-uid Programme, die empfindliche System Informationen auslaufen und dadurch das Leben eines Angreifers einfach zum Beispiel—bilden, ps, Oberseite und netstat. Ps und Oberseite zeigen Prozeßinformationen an, einschließlich Befehl-Linie Argumente—können diese Anwendung usernames und Kennwörter enthalten. Sie helfen auch einem Angreifer, Verbrauchmuster zu kennzeichnen, der TIMING von Angriffen unterstützt. Ähnlich deckt netstat Informationen über Ihre Netztopologie (über den - R Schalter) und gegenwärtige Network Connections auf (das heißt, wer mit Ihrem System spricht).

Diese Art der Privatlebenfreigabe kann zu die Klient Systeme führen, die angegriffen werden. Klient Systeme sind weiche Ziele, die "niedrige hängende Frucht" des Netzes. Sie können benutzt werden während Remotekennwortsauganleger (zum Kompromiß erklärt auf mehr Systemen), Vollmächte zum misdirect in Angriff nehmen Untersuchungen, und Rohre zu anderen Netzsegmenten, die direkt unerreichbar sind (das heißt, sie, sind hinter einer Brandmauer oder gebracht nicht direkt) an. Es ist nicht hart, sich die Konsequenzen vorzustellen, wenn das Klient Opfer geschieht, dem Systemverwalterniveau zu gehören.

So stellte-uid Begrenzung Zugang zu "undichtem" Programme über eine ausschließlich Benötigen-zuhaben Grundlage ein. Die seitliche Anzeige soll Ihre Klienten Maschinen sichern, die—sie gegen Sie benutzt werden können!

8. Kennzeichnen Sie einstellen-uid Wurzelprogramme, die nur eine verläßliche Gruppe Benutzer laufen lassen muß (zum Beispiel, Netzbetriebe). Verursachen Sie eine engagierte UNIX Gruppe und schreiben Sie die verläßlichen Benutzer in dieser Gruppe ein. Zunächst ändern Sie die Gruppe, die Besitz von Programme auf diese Gruppe einstellte-uid (ändern Sie nicht den Inhaber zwar, weil das einstellte-uid Anrufausfallen bilden würde). Schließlich und sehr wichtig, entfernen Sie alle Punkte des Zuganges durch anderen (das heißt, chmod o-rwx Akte). Diese schließen Warteschlange- zum Druckenmanagementprogramme, Netzmerkmale und Anwendungsmanagementschnittstellen ein.

9. Kennzeichnen Sie einstellen-uid Wurzelprogramme, die Sie denken, daß niemand überhaupt benötigen. Bevor Sie einstellen-uid Spitze, Sie müssen total überzeugt werden Ihnen entfernen, daß nicht etwas bricht. In den Fällen wie diesen müssen Sie die programs'uses das heißt,—profilieren, um Programmanforderung zu loggen. Eine Annäherung soll eine AUSCERT Verpackung wie die anbringen früh besprochen. Aber hier werden wir nicht die Verpackung für seinen beabsichtigten Zweck benutzen (obgleich es nichts gibt, das Sie von so tun stoppt). Stattdessen werden wir die Verpackung ändern, um einen Anruf zum Blockwindebefehl zu bilden, bevor das reale Programm benannt wird. Dieses ist nicht notwendig, wenn Sie die Revidierung C2 zusammenbauen lassen und protokolliert Anrufe in exec(). Wiederholen Sie Ihre Maschinenbordbücher nach einem Monat und, wenn keine relevante Tätigkeit geloggt worden ist, dann haben Sie vermutlich die genügende Grundlage, zum zu entfernen einstellten-uid Spitze. Sie konnten Ihren Pager an lassen wünschen für eine Weile, zwar.

10. Sie sollten mit einer Handvoll von jetzt gelassen werden einstellen-uid Wurzelprogramme, daß Sie wesentlich betrachten. Ändern Sie die AUSCERT Verpackung, damit jene Programme sicherstellen, daß übermäßig lang Argumente oder Klimavariablen nicht spezifiziert werden können. Dieses schützt, Sie nicht gegen alle Angriffe aber schützt Sie gegen einiges die allgemeinen.

Klaps sich auf der Rückseite—haben Sie es viel härter gebildet, damit ein Angreifer gegen Ihr System folgt.

Die kluge Wartung, finden Sie, daß Verkäuferflecken annehmen, daß eine Vanille und folglich anbringt clobber Ihre Änderungen ausbessert und verbessert. Lassen Sie immer einen Akte Vollständigkeit Kontrolleur laufen, nachdem Sie Updates angewendet haben, um Änderungen zu kennzeichnen,—denen Weise, Sie Ihre Bemühungen vermeiden, die durch stumme Indexe untergraben werden.

Stellen Sie sicher, daß Sie Unterhalt ein Auge auf Bugtraq, zum mit neuem oben zu halten Belichtungen einstellen-uid, und unterzeichnen Sie zur Alarm-Postsendungliste Sicherheit Ihres Verkäufers, um sicherzugehen, daß Sie über Flecken schnell hören.

Wenn Sie nur haben, einige vertrauten Benutzern auf dem System, Ihnen konnten gereizt werden, das Ganze zu überspringen einstellen-uid Abbauprozeß. Bevor Sie, dieses betrachten: Sie bilden unwittingly das Leben einfacher für einen Remoteangreifer. Wenn ein Angreifer Oberteilzugang zu Ihrer Maschine durch (neue) Großtat irgendein 0-day gewinnt, verwendet sie jede mögliche Verwundbarkeit, die sie finden kann, um sie zu erhöhen Privilegien zu verwurzeln. StellenSie Wurzelprogramme ist an der Oberseite ihrer Liste ein. Wenn Sie hinunter Ihr verriegeln nicht können einstellten-uid Programme, ein Angreifer zögern nicht, wenn Sie dieses gegen Sie wirksam einsetzen.

Verstehen Sie, obwohl, das, das Wurzel gewinnt, nicht immer das attackers'endgame ist, das—sie abhängt von, was sie versuchen, zu erzielen. Z.B. können Sie alle Ihre empfindlichen Firmadaten in einer relationalen Datenbasis speichern, die von einem Benutzer besessen wird, der angerufen wird "datamart." Offenbar muß der Angreifer nur das Dateninhaberkonto (oder die privilegierten Anwendung Konten) zielen um vollen Zugang zur Datenbank zu erhalten. Dieses kann durch das schätzende Kennwort, Sozialtechnik sein, oder die Ausnutzung der Sicherheit Wanzen in stellte-uid Anwendungsprogramme ein. Konzentrieren Sie nicht auf Wurzel zum Ausschluß Ihre Primäranwendung Rechnungsprüfungen.

Anwendersoftware versendet häufig mit set-uid/set-gid Programmen. In meiner Erfahrung neigen diese, mit Problemen weit verbreitet zu sein—ignorieren sie an Ihrer Gefahr. Es ist selten, Sicherheit savvy Anwendung Programmierer zu finden.

dieses ist ein Artikel, der von Andreas Schmidt hinzugefügt wird


Share  

© 2005-2010 E-articles.info All Rights Reserved - Terms and conditions