Benutzerkontensteuerung

Die Benutzerkontensteuerung oder auch User Account Control (UAC) ist eine Technik und Sicherheitsinfrastruktur, die beim Betriebssystem Windows seit Windows Vista eingesetzt wird. Ihr Ziel ist es, den Schutz des Systems für den Standardbenutzer zu verbessern.

Risiko und Bedeutung voller Zugriffsrechte

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ß. Windowssysteme der NT-Linie sind dagegen Mehrbenutzersysteme, so dass verschiedene Benutzerrollen und -rechte vergeben werden können.

Bei Windows XP erhalten die bei der Installation angelegten Benutzerkonten Administratorrechte. Dies führt dazu, dass viele mit Windows XP ausgestattete Rechner standardmäßig mit einem Benutzer, der über volle Administratorrechte verfügt, betrieben werden. Dadurch wird jede Software, auch Schadsoftware, mit Administratorrechten gestartet, so dass diese vollständigen Zugriff auf das System besitzt.

In vielen älteren Anwendungen wurden eingeschränkte Benutzerrechte nicht berücksichtigt, obwohl Microsoft dies in den mit Windows 95 erstmals veröffentlichten "Designed for Windows"-Richtlinien als Minimalanforderung festlegte. Installiert oder startet man solche Software mit eingeschränkten Rechten, treten Fehler auf oder die Software arbeitet nicht ordnungsgemäß. Dieses Problem wurde früher dadurch umgangen, dass normale Benutzer mit Administratorrechten ausgestattet wurden.

Lösung

Die Benutzerkontensteuerung wurde eingeführt, um die Sicherheit von Windowssystemen zu erhöhen.

Bei den Windows-Versionen seit Windows Vista ist die Benutzerkontensteuerung enthalten und funktioniert wie folgt: Ist der Benutzer nicht als Administrator angemeldet, müssen Aktivitäten, die 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 angemeldet, wird ein Auswahldialog angezeigt, so dass die Aktion unterbunden werden kann. Ab Windows 7 kann die UAC zudem in unterschiedlichen Sicherheitsstufen eingestellt werden.

Funktionsweise

Meldet sich ein Benutzer ohne Administratorrechte an, so wird eine neue Sitzung mit den Basisrechten eingerichtet. Somit können von dieser Sitzung aus keine Veränderungen vorgenommen werden, die das gesamte System betreffen. Meldet sich dagegen ein Benutzer aus der Administratorgruppe an, so wird eine neue Session mit zwei Rechtekontexten eingerichtet. Ein Rechtekontext mit eingeschränkten Basisrechten und ein zweiter mit den erweiterten Administratorrechten.

Benutzeranwendungen wie beispielsweise der Windows-Explorer werden mit eingeschränkten Rechten gestartet, so dass effektiv auch unter einem Administratoraccount eine eingeschränkte Umgebung besteht. Benötigt nun eine Anwendung erweiterte Rechte, werden diese über den UAC-Mechanismus angefordert. Ein Bestätigungsdialog wird angezeigt und sofern die gewünschte Aktion vom Benutzer bestätigt wird, wird die Sitzung mit den uneingeschränkten Rechten weitergeführt. In der voreingestellten Betriebsart (Secure Desktop) werden die Benutzerdaten (Benutzername und Passwort) durch UAC dadurch abgefragt, dass der gesamte Bildschirm mit Ausnahme des Autorisierungsdialoges abgedunkelt und deaktiviert wird. Das soll vor Missbrauch schützen (siehe Spoofing).

UAC bietet auch eine Datei- und Registry-Virtualisierung an, so dass nicht dafür vorbereitete Programme dennoch mit eingeschränkten Rechten lauffähig sind. Dateizugriffe von diesen Programmen auf entsprechende Systemordner (z. B. C:\Program Files\) werden umgeleitet nach C:\Users\%USERNAME%\AppData\Local\VirtualStore\. Zugriffe auf die Registry von nicht UAC vorbereiteten Programmen werden nach HKEY_CURRENT_USER\Software\Classes\VirtualStore umgeleitet. Sobald in der Windows Systemsteuerung UAC deaktiviert wird, würden die Programme mit Fehlermeldungen oder Fehlfunktionen reagieren, da die Zugriffe auf die gesperrten Systembereiche nicht mehr umgeleitet werden können.

Im Windows Task Manager kann die Spalte UAC-Virtualisierung eingeblendet werden. Dort kann der Status bzgl. der UAC-Virtualisierung der laufenden Programme bzw. Prozesse abgelesen werden. Programmentwickler sollten die Programme durch die Einbindung der unten stehenden XML-Datei kennzeichnen.

In Programmen, die mit erweiterten Rechten laufen, wird das Präfix „Administrator“ im Titel vorangestellt, so dass das Vorhandensein von erweiterten Rechten für dieses Programm leicht erkennbar ist.

Mit UAC ist es möglich zu bestimmen, dass:

  • Administratoren ihr Passwort wiederholt eingeben müssen (zur Erhöhung der Sicherheit).
  • Der Benutzer Strg + Alt + Entf im Zuge des Authentifikationsprozesses eingeben muss (zur Erhöhung der Sicherheit).
  • Der Admin Approval Mode vollständig ausgeschaltet wird (UAC beim Administrator angezeigt wird).

Anpassung der Benutzerkontensteuerung

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 das einen UAC-Bestätigungsdialog bei Administratoren an und läuft bei Standardbenutzern mit eingeschränkten Rechten. „requireAdministrator“ dagegen fordert in jedem Fall die erweiterten Rechte ein.

Um einen neuen Prozess mit erweiterten Rechten aus einer .NET-Anwendung heraus zu starten, 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 „runas“-Kommando zum Aufruf ShellExecute() hinzugefügt werden.

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

Benutzerkontensteuerung für bestimmte Anwendungen deaktivieren

Für ausgewählte Anwendungen kann die Benutzerkontensteuerung deaktiviert oder für ältere Anwendungen ein Kompatibilitätsmodus dauerhaft festgelegt werden.

Kritik

Microsoft ist sich der teilweisen Ablehnung der UAC durch die Anwender bewusst. So formulierte das Unternehmen die Feststellung „Unter Windows 7 ist UAC jetzt weniger störend“,[1] womit Microsoft die Behinderung der Anwender einräumt.

Einzelnachweise

  1. Artikel auf www.windows.microsoft.com über die Benutzerkontensteuerung in Windows 7 (deutsch)