- Benutzerkontensteuerung
-
Die Benutzerkontensteuerung oder auch User Account Control (UAC) ist eine Technik und Sicherheitsinfrastruktur, die bei den Betriebssystemen Microsoft Windows Vista und Windows 7 eingesetzt wird. Sie soll den Schutz des Systems für den Standardbenutzer erleichtern.
Inhaltsverzeichnis
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 erhält das erste auf einem Rechner angelegte Benutzerkonto Administratorrechte. Dies führt dazu, dass viele mit Windows XP ausgestattete Rechner immer mit den vollen Administratorrechten 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 und auch aktuellen Applikationen wurden eingeschränkte Benutzerrechte nicht berücksichtigt. Installiert oder startet man diese Software mit eingeschränkten Rechten, treten Fehler auf oder die Software arbeitet nicht ordnungsgemäß. Somit ist es oft gängige Praxis, normale Benutzer mit Administratorrechten auszustatten. Würde der Windows-Erstbenutzer demnach standardmäßig mit eingeschränkten Rechten ausgestattet sein, würden viele Programme dadurch unbrauchbar, wenn sich der Benutzer nicht eingehend mit der Windows-Benutzerstruktur beschäftigt.
Lösung
Die UAC wurde eingeführt, um die Sicherheit der Systeme zu erhöhen. Das gilt auch für das Anzeigen von Webseiten, die eine potenzielle Sicherheitsgefahr darstellen.
Bei Windows Vista und Windows 7 müssen alle 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. Bei Windows 7 kann die UAC zudem in unterschiedlichen Sicherheitsstufen eingestellt werden.
Kritik
Es wird moniert, dass UAC verschiedene Arbeitsabläufe am Computer verlangsamt, insbesondere das erstmalige Einrichten eines Windows-Vista-Betriebssystems. Es ist jedoch möglich, die UAC-Benachrichtigungen auszuschalten, um beispielsweise ungefährliche Software ohne Rückfragen installieren zu können. Anschließend kann UAC wieder aktiviert werden.
Auch gibt es die Befürchtung, dass ein dauerhaft eingeschaltetes UAC die Benutzer dazu verführt, jeden Dialog blind zu bestätigen. Dieses Verhalten könnte durch den geringen Informationsgehalt der UAC-Meldung gefördert werden. Das würde das System ad absurdum führen.
Funktionsweise
Meldet sich ein Benutzer ohne Administratorrechte auf Windows Vista/7 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 werden ihm alle Administratorrechte, sowie alle Rechte eines Standardbenutzers zugewiesen.
Benutzeranwendungen, wie beispielsweise der Windows-Explorer, werden alle mit eingeschränkten Rechten gestartet, so dass effektiv 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 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).
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 nicht dafür vorbereitete Programme dennoch mit Standardrechten 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 einer Eingabeaufforderung, die mit erweiterten Rechten läuft, wird das Präfix „Administrator“ im Titel vorangestellt, so dass leicht unterscheidbar ist, welche Eingabeaufforderung mit erweiterten Rechten läuft.
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.
Weblinks
- Benutzerkontenschutz – User Account Control – Information von Microsoft TechNet
- Benutzerkontenschutz – User Account Control – UAC für bestimmte Anwendungen deaktivieren
- UAC – The Good and The Bad (Joanna Rutkowska – invisiblethings.org) (englisch)
- What triggers User Account Control prompts? (englisch)
- Security Features vs. Convenience (englisch)
- PsExec, User Account Control and Security Boundaries – Weiterführende Informationen von Mark Russinovich (Microsoft Technet) (englisch).
Wikimedia Foundation.