Das Satz uid Problem
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
Verzicht: Unsere Web site ist
nicht zu der Information verantwortlich, die durch diesen Artikel
enthalten wird. Dieser Artikel reflektiert keineswegs die
Ansichten, die Meinungen, die Gedanken oder den Glauben des
Artikelverzeichnisstabes.
Übersetzung Nachricht: Der Artikel "das
Satz uid Problem" wurde mit einem automatisierten Übersetzungsdienst
übersetzt. Wir entschuldigen herzlichst uns für alle mögliche
Übersetzung Störungen, die auftraten. Danke für das
Verstehen.