Analyse von .NET-Komponenten auch ohne Quellcode Rechte eines Assembly abfragen und ändern

Autor / Redakteur: Dipl.-Ing. Andreas Maslo / Stephan Augsten

Entwickler können die Berechtigungen eines ausführbaren .NET-Programms oder einer eigenständigen .NET-Komponente bereits im Rahmen der Kodierung einschränken. Um die zugewiesenen Berechtigungen für beliebige Assemblies auch ohne verfügbaren Quelltext abzufragen, greifen Sie auf das .NET Framework Konfigurations-Tool zurück. Dieses liefert alle Berechtigungen zurück, die aktuell für ein Assembly zugelassen sind.

Firma zum Thema

( Archiv: Vogel Business Media )

Programme und Komponenten werden unter .NET in so genannte Assemblies übersetzt. Ein Assembly kann eine (Steuerelement-)Bibliothek oder auch ein ausführbares Programm sein. Bibliotheken erhalten standardmäßig das Dateikürzel .dll, ausführbare Programmdateien das Kürzel .exe zugewiesen und präsentieren sich als physikalische Einheiten. Sie enthalten den ausführbaren Programmcode und alle Informationen, die zur Veröffentlichung, Versionierung, Auflösung von Referenzen und zur Absicherung benötigt werden.

Assembly-DLLs unterscheiden sich von dynamischen Verbindungsbibliotheken und von COM-DLLs, obgleich sie das gleiche Dateikürzel haben. Entsprechendes gilt auch für exe-Assemblies, die nur den grundlegenden Datei-Header der Standardprogrammdatei für das systemspezifische Laden enthalten. Assemblies müssen anders als COM-Komponenten nicht über die Systemregistrierung registriert und veröffentlicht werden. In .NET können aufgrund der optimierten Verwaltung mehrere Versionen gleicher Komponenten parallel eingerichtet und auch genutzt werden.

Bildergalerie

Bei den Assemblies wird zudem zwischen privaten und öffentlichen Assemblies unterschieden. Öffentliche Assemblies werden im Global Assembly Cache (GAC) verwaltet, einem globalen Speicherbereich im Windows-Systemverzeichnis. Private Assemblies sind nicht öffentlich und werden einer bestimmten Anwendung dementsprechend über das zugeordnete Programmverzeichnis direkt zugeordnet.

Beispiel für die Rechtezuweisung

Ob ein Assembly eingeschränkte Rechte zugewiesen bekommt, ist abhängig vom Programm beziehungsweise der Komponente und deren interner Kodierung. Um die Sicherheitsberechtigungen für eine Klasse zuweisen zu können, werden zunächst die Namensräume für die entsprechenden Funktionalitäten mit entsprechenden Imports-Anweisungen importiert.

Imports System.SecurityImports System.Security.CodeAccessPermissionImports System.Security.PermissionsImports System.Security.Policy

Mit dem PermissionSetAttribute-Attribut, kann dann einem Assembly dann bereits global ein spezieller Berechtigungssatz zugewiesen werden. Diese Variante der Zuweisung eines Berechtigungssatzes wird als deklarative Syntax bezeichnet. Entsprechende Attribute lassen sich auch gezielt einzelnen Methoden zuordnen. Alternative kann in Methoden auch direkt auf Berechtigungen zugegriffen werden. Die letztgenannte Variante nennt sich imperative Syntax und soll hier nicht näher veranschaulicht werden.

Public Class MySecurityClass…End Class

Wichtig ist an dieser Stelle nur, dass erweiterte Informationen zu den Berechtigungen nur dann ausgewertet werden, wenn diese auch auf Quellcodeebene definiert wurden. Im nachfolgenden wird entsprechend ein Assembly ausgewertet, das intern mit Rechtezuweisungen arbeitet und über die Entwicklungsumgebung bereits erfolgreich übersetzt wurde.

Assembly überprüfen und auswerten

Sie können die Berechtigungen eines Assembly jederzeit über das .NET-Konfigurations-Tool prüfen. Der Aufruf des Programms variiert je nach .NET-Version (vgl. unten verlinkten Praxisbeitrag „Anpassen der Sicherheitsebenen in .NET“).

In .NET 2.0 starten Sie zunächst die SDK-Eingabeaufforderung, geben dann den Befehl mscorcfg.msc ein und bestätigen mit [Enter]. Anschließend wählen Sie im folgenden Dialog in der Strukturansicht den Hierarchiezweig:

.NET Configuration 2.0/Arbeitsplatz/Laufzeitsicherheitsrichtlinie

Beim Klick auf die Verknüpfung „Assemblys auswerten“ startet der gleichnamige Assistent.

Assembly und Überprüfungsart wählen

Im ersten Dialogfeld des Assistenten geben Sie im Textfeld Dateiname zunächst Suchpfad und Name des zu prüfenden Assemblies an. Bei Bedarf können Sie die Datei des Assemblies nach Anwahl der Schaltfläche Durchsuchen auch über einen Dateiauswahldialog anwählen. Anschließend bestimmten Sie, ob die gewährten Berechtigungen des Assemblies oder Codegruppen angezeigt werden sollen.

Wahlweise können Sie die Überprüfung für alle Ebenen, die gesamte Organisation, den lokalen Computer oder auch nur für den aktuellen Benutzer durchführen. Im vorliegenden Beispiel werden gezielt die Berechtigungen für die Richtlinienebene Computer abgefragt. Bestätigen Sie die entsprechenden Eingaben durch Anwahl der Schaltfläche Weiter.

Berechtigungen auswerten

Im folgenden Dialog werden bereits die ermittelten Berechtigungen zusammengestellt. In diesem Zusammenhang werden noch einmal das gewählte Assembly sowie die ausgewertete Ebene angezeigt. Die Berechtigungen, die dem Assembly direkt zugeordnet wurden, werden anhand übergeordneter Bezeichner über ein Listenfeld zusammengestellt.

Berechtigungen im Detail

Im zuvor genannten Listenfeld können Sie jede angeführte Berechtigung anzeigen und offen legen, sofern diese nicht uneingeschränkt ist. Durch Anwahl der Schaltfläche „Berechtigung anzeigen“ lassen sich aber auch die Einstellungen entsprechend der gewählten Richtlinienebene anzeigen. Dazu wird ein untergeordnetes Dialogfeld mit Detailinformationen angezeigt.

Abschluss der Auswertung

Änderungen an den ermittelten Berechtigungen müssen bei Bedarf erneut auf Quelltextebene vorgenommen werden. Beenden Sie den Assistenten und die Auswertung der Assembly-Berechtigungen mit Fertig stellen.

Artikelfiles und Artikellinks

(ID:2005942)