Sicherheitsüberlegungen für Hilfstechnologien
Hilfstechnologien sind Anwendungen, die auf dem Windows-Desktop ausgeführt werden und Barrierefreiheitsbenutzern die Interaktion mit dem Betriebssystem und anderen Anwendungen ermöglichen, die auf dem Computer ausgeführt werden, einschließlich Anwendungen auf der Windows Benutzeroberfläche. Hilfstechnologieanwendungen können verwendet werden, indem Sie Informationen aus dem Betriebssystem und anderen Anwendungen abrufen und die Informationen dann so präsentieren, dass sie für den Benutzer zugänglich sind. Eine Hilfstechnologieanwendung kann auch programmgesteuert das Betriebssystem und andere Anwendungen basierend auf der Eingabe des Benutzers "laufwerken".
Die Art von Hilfstechnologieanwendungen erfordert, dass sie Prozessgrenzen überschreiten und Zugriff auf Prozesse haben, die auf einer höheren Integritätsebene (IL) als sie selbst ausgeführt werden. (Eine Hilfstechnologieanwendung wird bei mittlerer IL ausgeführt.) Wenn der Benutzer z. B. versucht, eine Aufgabe auszuführen, die Administratorrechte erfordert, Windows ein Dialogfeld, in dem der Benutzer zur Zustimmung aufgefordert wird, den Vorgang fortzufahren. Dieses Dialogfeld wird an einer höheren IL ausgeführt, um es vor prozessübergreifender Kommunikation zu schützen, sodass schadhafte Software keine Benutzereingabe simulieren kann. Auf ähnliche Weise wird der Desktop-Anmeldebildschirm an einer höheren IL ausgeführt, um zu verhindern, dass andere Prozesse darauf zugreifen.
Hilfstechnologieanwendungen benötigen in der Regel Zugriff auf die Elemente der geschützten Systembenutzeroberfläche oder auf andere Prozesse, die möglicherweise mit einer höheren Berechtigungsebene ausgeführt werden. Daher müssen Hilfstechnologieanwendungen vom System als vertrauenswürdig eingestuft werden und mit speziellen Berechtigungen ausgeführt werden.
Um Zugriff auf höhere IL-Prozesse zu erhalten, muss eine Hilfstechnologieanwendung das UIAccess-Flag im Anwendungsmanifest festlegen und von einem Benutzer mit Administratorrechten gestartet werden.
Hinweis
Zugriffsberechtigungen werden wie folgt eingeschränkt:
- Eine Anwendung ohne UIAccess im Manifest beginnt mit mittlerer IL und kann nicht auf die Prozessbenutzeroberfläche mit erhöhten Rechten ("mittel+" IL) zugreifen.
- Eine Anwendung, die ÜBER UIAccess im Manifest verfügt und von einem Benutzer gestartet wird, der sich nicht in der Administratorgruppe befindet, wird als "mittel+" IL gestartet und kann nicht auf die benutzeroberfläche mit erhöhten Rechten zugreifen (nichts, das als "hohe" IL ausgeführt wird, z. B. Apps, die über einen Rechtsklick -> Als Administrator ausführen) gestartet wurden.
- Eine Anwendung verfügt über Benutzeroberflächenzugriff und wird von einem Administratorbenutzer gestartet und startet als "hohe" IL und kann auf die Benutzeroberfläche mit erhöhten Rechten zugreifen, da sie über dieselbe IL verfügt.
UIAccess reicht nicht aus, damit ein Prozess die IL-Grenze nach oben verschieben kann.
Zusätzlich zum Zugriff auf höhere IL-Prozesse kann eine Hilfstechnologieanwendung mit diesen Berechtigungen jederzeit als oberste Anwendung in der Z-Reihenfolge ausgeführt werden, was bedeutet, dass eine Hilfstechnologieanwendung immer sichtbar und verfügbar sein kann, wenn der Benutzer sie benötigt.
Wichtig
Keines der zuvor aufgeführten Szenarien bietet Zugriff auf die Benutzeroberfläche, die unter der System-IL ausgeführt wird. Dies ist nur möglich, wenn der Prozess im Desktop der Benutzerkontensteuerung (UAC) unter SYSTEM (und System IL) gestartet wird. In diesem Fall hat das Festlegen von UIAccess keine Auswirkungen.
UIAccess-Anforderungen für Hilfstechnologieanwendungen
Eine Hilfstechnologieanwendung ist eine Windows Windows-Desktopanwendung, die mit anderen Prozessen interagiert, die auf dem Desktop und auf der neuen Windows-Benutzeroberfläche ausgeführt werden, um Informationen aus dem System und den Anwendungen zu erhalten. Die Hilfstechnologieanwendung kann dann die Informationen für Benutzer mit Barrierefreiheit bereitstellen.
Eine Hilfstechnologieanwendung erhält Zugriff auf andere Prozesse, indem sie das UIAccess-Flag im Anwendungsmanifest festlegen. Um das UIAccess-Flag zu verwenden, muss eine Hilfstechnologieanwendung die folgenden Anforderungen erfüllen.
- Erfordern, Informationen aus einer anderen Anwendung anzuzeigen, zu interagieren oder widerzuanzeigen, um Informationen für ein Barrierefreiheitsszenario zur Verfügung zu stellen, und/oder
- Erfordert, dass als oberstes Fenster ausgeführt wird, um diese Informationen zu erhalten oder anzuzeigen.
Um UIAccess verwenden zu können, muss eine Hilfstechnologieanwendung:
- Sie müssen mit einem Zertifikat signiert sein, um mit Anwendungen zu interagieren, die auf einer höheren Berechtigungsebene ausgeführt werden.
- Vom System als vertrauenswürdig eingestuft werden. Die Anwendung muss an einem sicheren Speicherort installiert werden, für den eine Eingabeaufforderung zur Benutzerkontensteuerung (User Account Control, UAC) erforderlich ist. Beispiel: der Ordner Programme.
- Erstellen Sie mit einer Manifestdatei, die das flag uiAccess enthält.
UIAccess sollte nicht verwendet werden:
- Von Anwendungen, die keine Hilfstechnologien sind.
- Durch Hilfstechnologieanwendungen, die Informationen oder Benutzeroberflächen anzeigen, die für das Barrierefreiheitsszenario, auf das sie sich besingen, nicht relevant sind.
- Von Anwendungen, die nur über anderen Anwendungen in der neuen Benutzeroberfläche Windows werden sollen.
Hinweis
Anwendungen, die für die neue Windows-Benutzeroberfläche entwickelt wurden, verfügen nicht über UIAccess als verfügbare Option.
Festlegen von UIAccess in der Anwendungsmanifestdatei
Um Zugriff auf die geschützte Systembenutzeroberfläche zu erhalten, müssen Anwendungen mit einer Manifestdatei erstellt werden, die ein spezielles Attribut in der Manifestdatei enthält. Dieses uiAccess-Attribut ist im requestedExecutionLevel-Tag enthalten, wie im folgenden Codebeispiel gezeigt.
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="highestAvailable"
uiAccess="true" />
</requestedPrivileges>
</security>
</trustInfo>
Der Wert des Level-Attributs in diesem Code ist nur ein Beispiel.
UIAccess ist standardmäßig "false". Wenn das Attribut weggelassen wird oder kein Manifest vor liegt, kann die Anwendung keinen Zugriff auf die geschützte Benutzeroberfläche erhalten.
Weitere Informationen zur Windows-Sicherheit, zum Signieren von Anwendungen und zum Erstellen von Manifesten finden Sie unter The Windows Vista and Windows Server 2008 Developer Story: Windows Vista Application Development Requirements for User Account Control (UAC) auf MSDN.