Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Re: Prozess-Rechte erweitern

2 views
Skip to first unread message

Helmut Waitzmann

unread,
Jan 23, 2019, 7:33:57 PM1/23/19
to
Udo Steinbach <tras...@udoline.de>:

Eine Bitte am Rande: Wenn Du Texte zitierst, also, beim Antworten
stehen lässt, lass bitte auch am Anfang Deiner Antwort die Zeile
stehen, in der steht, wer das zitierte geschrieben hatte. In
Deinem Fall hätte ich erwartet, dass Du die Zeile

»Helmut Waitzmann <nn.th...@xoxy.net

(o. ä.) stehen lässt.)

>Es geht mir gerade nicht ums Programmiertechnische, sondern einen
>Beweggrund von Microsoft (und Linux?), das so zu handhaben.

Das habe ich schon verstanden. Ich hatte aber den Eindruck, dass
Du noch nicht verstanden hattest, dass Hochstufung ein Konzept
ist, das nicht nur dazu dient, sich als Administrator anzumelden.

Deshalb halte ich es für sinnvoll, zunächst die bestehende
Vorgehensweise der Hochstufung bei Windows und POSIX vorzustellen.

>> Das Vergeben der erhöhten Rechte an ein beliebiges einem nicht‐
>> privilegierten Eigentümer gehörendes Programm käme einer
>> Generalvollmacht gleich
>
>Ne, wodurch? Das Token kommt von einem System-Anmeldedialog, mit dem sich
>z.B. root anmeldet, der das Programm ohnehin als root starten darf.

Angenommen, »root« meldet sich an und startet das Programm. Wer
bestimmt dann, was mit dem System geschieht? Wem ist das System
vollständig ausgeliefert?

>War ich so undeutlich?

Nein. Aber vermutlich war ich nicht verständlich genug:

Wenn sich jemand als »root« anmeldet und daraufhin die Möglichkeit
hat, beliebige Programme zu starten, dann hat er eine
Generalvollmacht erlangt: Er kann mit dem System anstellen, was
er will, und niemand – selbst das System nicht – kann ihn mehr
aufhalten.

>Wo ist der sicherheitstechnische Unterschied, ein Programm per "Ausführen
>als" nochmal zu starten oder sich per Dialog oder sonstwie verifizierten
>Zugang ohne neustart hochzustufen?

Wenn auf eine Generalvollmacht hochgestuft wird, dann gibt es in
der Tat keinen sicherheitstechnischen Unterschied: Nach dem
Hochstufen ist das Betriebssystem dem Anwender, der sich mit Hilfe
des Anmeldedialogs zum Allmächtigen gemacht hat, vollständig
ausgeliefert. Ob die vollständige Auslieferung darin besteht,
dass der Anwender ein beliebiges von ihm ausgewähltes laufendes
Programm hochstufen kann oder er nur ein bestimmtes Programm, das
ihm erlaubt, beliebige Programme zu starten, hochgestuft startet,
kommt in Bezug auf die Generalvollmacht auf das gleiche hinaus:
In beiden Fällen kann er sich aussuchen, welche Programme er mit
Administratorrechten laufen lassen will.

Die Überprüfung des Hochstufungswunsches des Anwenders besteht
dann nur aus der Beantwortung der Frage: »Darf der sich zum
Allmächtigen machen?«

Ein viel häufigerer Fall des Hochstufens ist folgender: Dem
Anwender soll nur erlaubt werden, ein bestimmtes Programm, das nur
eine eng begrenzte Aufgabe erfüllt, mit Administratorrechten
laufen zu lassen.

Ein prominentes Beispiel in der POSIX‐Welt ist der X11‐Server, der
mit Hilfe der Grafikkarte den Bildschirm, beispielsweise eine
Kathodenstrahlröhre, ansteuert, von der Tastatur und der Maus
gedrückte Tasten und von der Maus gefahrene Wege erhält.

Kathodenstrahlröhren können zerstört werden, wenn sie mit den
falschen Zeilen‐ oder Spaltenfrequenzen angesteuert werden. Damit
nicht irgend ein vom Benutzer gestartetes Programm die Grafikkarte
so ansteuern kann, dass sie die Kathodenstrahlröhre zerstört, wird
die Grafikkarte so in das System eingebunden, dass normale
Benutzer keine Zugriffsrechte auf sie haben.

Ebenso werden Tastatur und Maus dem direkten Zugriff normaler
Benutzer entzogen, damit niemand mitlauschen kann, was jemand
anderes eintippt.

Trotzdem müssen Benutzer ja mit Hilfe der Grafikkarte den
Bildschirm so ansteuern können, dass er beispielsweise die
gewünschten Fenster darstellt, sie müssen von den gedrückten Tasten
der Tastatur und der Maus erfahren.

In der POSIX‐Welt wird das folgendermaßen verwirklicht: Der
X11‐Server ist ein Set‐User‐Id‐Programm, das dem Benutzer »root«,
also dem Allmächtigen, gehört. Das hat zur Folge, dass er, wenn
er gestartet wird – egal, von welchem Benutzer(!) –, unter der
Benutzerkennung »root« läuft. Das gibt ihm die vollen
Zugriffsrechte auf die Grafikkarte, die Tastatur und die Maus (und
sogar das komplette System).

Damit der Kathodenstrahlröhre nichts passiert und auch sonst
nichts Böses angestellt wird, achtet er sorgfältig darauf, nur die
Grafikkarte, die Tastatur und die Maus anzusteuern und dabei die
Grafikkarte nur so anzusteuern, dass beispielsweise die Zeilen‐
und Spaltenfrequenzen zur Kathodenstrahlröhre passen.

Das Hochstufen in der POSIX‐Welt funktioniert also so: Ein
Set‐User‐Id‐Programm kann (im allgemeinen) zunächst von jedem
Benutzer gestartet werden. Dann kümmert sich das
Set‐User‐Id‐Programm selbst darum, dass es vom Anwender nicht
missbraucht werden kann:

* Ist es beispielsweise der X11‐Server, fragt es zwar nach keinem
Passwort mehr, verlangt aber, dass sich der Benutzer bereits an
einer virtuellen Konsole angemeldet hat (damit nur der Benutzer,
der vor dem Rechner sitzt, den Bildschirm einfärben oder die
gedrückten Tasten mitbekommen kann), und erlaubt im Wesentlichen
auch nur, Punkte auf dem Bildschirm einzufärben und Tastatur und
Maus zu beobachten, sonst nichts. Insbesondere startet es nicht
vom Benutzer ausgewählte Programme.

* Ist es beispielsweise das Programm »login«, mit dem man sich auf
einer (virtuellen) Konsole (beispielsweise auch als
Administrator) anmelden und anschließend beliebige Programme
starten kann, fragt es als erstes nach dem Passwort des
gewünschten Benutzers und erlaubt den Start weiterer Programme
erst dann, wenn man das richtige Passwort eingetippt hat.

Das sind also zwei zu unterscheidende Anwendungen der Hochstufung:

* ohne Passwortabfrage ein Programm laufen zu lassen, das penibel
darauf achtet, nichts potentiell Böses zu tun und deshalb nur
ganz eng begrenzte Aufgaben wahrnimmt,

* mit Passwortabfrage eine Generalvollmacht zu erteilen.

Für den Betriebssystemkern ist es unmöglich, einem bereits
laufenden Programm eine Hochstufung zum Administrator zu geben,
dabei aber die Nutzung der Hochstufung einzuschränken (etwa: »Du
darfst damit aber nur die Grafikkarte ansteuern, und auch nur so,
dass die Kathodenstrahlröhre nicht kaputt geht«). Auch kann der
Betriebssystemkern ein Programm nicht vorbeugend untersuchen, um
die Frage zu beantworten, was das Programm alles tun könnte.

Das bedeutet, dass jedes Hochstufen eines vom
Nicht‐Administrator‐Benutzer ausgewählten Programms zum
Administrator potentiell eine Generalvollmacht darstellt: Der
Betriebssystemkern kann dem laufenden Programm nicht ansehen, zu
welchen Untaten es in der Lage ist, noch kann er ihm auf die
Finger klopfen.

Zurück zur Frage »Warum kann man bei Hochstufung nur Programme
starten und nicht bereits laufende hochstufen lassen?«:

Für POSIX heißt die Antwort vermutlich: »Weil es nicht in das
Betriebssystem eingebaut wurde.« Die Generalvollmacht kriegt man
auch damit hin, dass man ein Programm (beispielsweise einen Shell)
startet, das beliebige weitere Programme starten kann. Deshalb
braucht man in den Systemkern keinen weiteren (komplizierteren)
Hochstufungsmechanismus als den der Set‐User‐Id‐Programme
einzubauen, um ans Ziel zu kommen.

Für Windows müssten Andere übernehmen.

Aber das sind Fragen der Konzepte in Betriebssystemkernen.

Crosspost & Followup-To: de.comp.os.unix.misc
0 new messages