Heim

User Account Control

User Account Control (UAC) ist eine Technologie und Sicherheitsinfrastruktur, wie sie vom Betriebssystem Microsoft Windows Vista eingeführt wurde. Sie soll den Schutz des Systems für den Standardbenutzer erleichtern.

Inhaltsverzeichnis

Überblick

Versionen von Windows, die älter als Windows NT sind beziehungsweise nicht davon abstammen (beispielsweise Windows 3.1, Windows 95, 98 und ME), waren Einzelbenutzersysteme, in denen der Benutzer die volle Systemkontrolle besaß. Windows 2000, XP und das frei verfügbare Linux sind dagegen Mehrbenutzersysteme. Dies macht verschiedene Benutzerrollen und Benutzerrechte sinnvoll.

Allerdings wird bei Windows XP der erste Benutzer automatisch mit Administratorrechten ausgestattet und somit spielen und arbeiten viele Benutzer von Windows XP standardmäßig unter Administratorrechten. Dadurch wird jede Software, auch Schadsoftware, mit Administratorrechten gestartet, sodass diese vollständigen Zugriff auf das System besitzt.

Unglücklicherweise sind viele alte Anwendungen und sogar neue Software nie dafür entwickelt worden, ohne vollständige Administratorrechte zu laufen. Lässt man diese Software dennoch mit eingeschränkten Rechten laufen, so treten Fehler auf oder die Software arbeitet nicht ordnungsgemäß. Somit war es oft gängige Praxis, normale Benutzer mit Administratorrechten auszustatten.

Mit Windows Vista müssen nun alle Aktivitäten, welche die Sicherheit oder Stabilität des Betriebssystems beeinträchtigen könnten, durch einen Administrator (durch Eingabe des entsprechenden Benutzernamens und Passworts) bestätigt werden. Ist der Benutzer schon als Administrator eingeloggt, wird ein Auswahldialog angezeigt, sodass die Aktion verboten werden kann.

Funktionsweise

Wenn sich ein normaler Benutzer in Windows Vista einloggt, wird eine neue Sitzung erstellt und dieser ein Zugangstoken mit den Basisrechten zugeteilt. Somit können von dieser Sitzung aus keine Veränderungen vorgenommen werden, die das gesamte System betreffen. Loggt sich hingegen nun ein Benutzer aus der Administratorgruppe ein, so werden zwei verschiedene Token erstellt. Der eine Token erhält alle Rechte, wie sie typischerweise dem Administrator zugeteilt werden. Der andere (eingeschränkte) Token erhält dagegen nur die Rechte, die auch ein Standardbenutzer erhalten würde.

Benutzeranwendungen, wie beispielsweise der Windows Explorer, werden alle mit dem eingeschränkten Token gestartet, so dass dies effektiv eine eingeschränkte Umgebung unter einem Administratoraccount darstellt. Benötigt nun eine Anwendung erweiterte Rechte, so werden über den UAC-Mechanismus erweiterte Rechte angefordert. Ein Bestätigungsdialog wird angezeigt und sofern die gewünschte Aktion vom Benutzer bestätigt wird, so wird der Prozess mit dem uneingeschränkten Token weitergeführt. Im Modus Secure Desktop erfolgt die Abfrage der Benutzerdaten (Benutzername und Passwort) durch UAC dadurch, dass der gesamte Bildschirm mit Ausnahme des Autorisierungsdialoges abgedunkelt und deaktiviert wird. Dies soll vor spoofing schützen.

Nicht alle allgemeinen Aufgaben, wie beispielsweise das Wechseln der Zeitzone benötigen in Windows Vista Administratorrechte. UAC bietet auch eine Datei- und Registry-Virtualisierung an, so dass schlecht geschriebene Programme dennoch mit Standardrechten lauffähig sind. Des Weiteren wird einer Eingabeaufforderung, welche mit erweiterten Rechten läuft, das Präfix „Administrator“ im Titel vorangestellt, so dass leicht unterscheidbar ist, welche Eingabeaufforderungen mit erweiterten Rechten läuft.

Es gibt einige Einstellungen, die im Zusammenhang mit UAC interessant sind. So ist es möglich zu bestimmen, dass:

Kritische Würdigung

Es wird von einigen Leuten davon ausgegangen, dass ein aktiviertes UAC geeignet ist, die Sicherheit des Systems zu erhöhen. Dies gilt insbesondere für das Anzeigen von Webseiten, welche eine potentielle Sicherheitsgefahr darstellen. Auf der anderen Seite gibt es Beschwerden, dass UAC verschiedene Arbeitsabläufe am Computer verlangsamt, insbesondere das erstmalige Einrichten eines Windows-Vista-Systems. Deswegen ist es möglich, die UAC-Benachrichtigungen auszuschalten, um beispielsweise ungefährliche Software automatisch installieren zu können. Das UAC kann anschließend wieder aktiviert werden.

Allerdings gibt es auch die Befürchtung, dass ein dauerhaft eingeschaltetes UAC die Benutzer dazu verführt, jeden Dialog zu bestätigen. Insbesondere, da die Dialoge oft zu wenige oder gar keine Informationen über den aktuellen Vorgang beinhalten. Dies würde das System ad absurdum führen.

Anfordern von erweiterten Rechten

Ein Programm kann erweiterte Rechte auf verschiedene Arten anfordern. Eine Möglichkeit ist es, dass ein Abschnitt requestedPrivileges in einem XML-Dokument, dem Manifest, hinzugefügt wird. Dieses Manifest wird später in die Anwendung eingebunden. Üblicherweise spezifiziert ein Manifest Abhängigkeiten, Visuelle Styles und weitere Eigenschaften des Programmes.

Sicherheitsabschnitt in einem Manifest-Dokument:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <v3:trustInfo xmlns:v3="urn:schemas-microsoft-com:asm.v3">
    <v3:security>
      <v3:requestedPrivileges>
        <v3:requestedExecutionLevel level="highestAvailable" />
      </v3:requestedPrivileges>
    </v3:security>
  </v3:trustInfo>
</assembly>

Wird das Level-Attribut von requestedExecutionLevel auf „asInvoker“ gesetzt, so läuft die Applikation mit dem Token, welcher die Applikation gestartet hat (normalerweise also mit eingeschränkten Rechten). Setzt man das Attribut auf „highestAvailable“, so fordert dies ein UAC-Bestätigungsdialog bei Administratoren an und läuft bei Standardbenutzern mit eingeschränkten Rechten. „requireAdministrator“ hingegen fordert in jedem Fall die erweiterten Rechte ein.

Um einen neuen Prozess mit erweiterten Rechten aus einer .NET-Anwendung heraus zu starten, so kann das Kommando „runas“ verwendet werden.

Ein Beispiel in C#:

System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo.FileName = "C:\\Windows\\system32\\notepad.exe";
proc.StartInfo.Verb = "runas"; // elevate the application
proc.Start();

In COM-Anwendungen kann dasselbe Kommando „runas“ zum Aufruf ShellExecute() hinzugefügt werden.

::ShellExecute(0, "runas", "C:\\Windows\\Notepad.exe", 0, 0, SW_SHOWNORMAL);

Benutzerkontensteuerung für bestimmte Anwendungen deaktivieren

Der nachfolgenden Artikel beschreibt, wie Sie die UAC (User Account Control = Benutzerkontensteuerung) für ausgewählte Anwendungen deaktivieren. Mit der gleichen Anwendung können Sie auch für ältere Anwendungen den Kompatibilitätsmodus dauerhaft festlegen.

Unter der n.g. Seite steht ein reich bebilderte Schritt für Schritt Anleitung (auch als PDF zum Download) bereit http://www.vs-support.com/tipps_tricks/uac.htm