Vor geraumer Zeit hat ZDNet die Architektur des Java-Sicherheitsmodells vorgestellt. Dieses Mal geht es um weitere Aspekte der Java-Sicherheit: Sicherheits-Manager, Zugriff-Controller und Zugriffsberechtigungen.
Der Sicherheits-Manager (Security-Manager)
Der Sicherheits-Manager ist eine spezielle Klasse, die angibt, ob eine Klasse Zugriff auf eine bestimmte Ressource hat, etwa über direkten Dateizugriff oder eine Netzwerkverbindung. Um eine solche Entscheidung zu treffen, analysiert der Sicherheits-Manager die Quelle der Anfrage. Falls der Zugriff verweigert wird, löst das einen Ausnahmefehler aus (java.lang.SecurityException). Andernfalls wird der Aufruf wie üblich verarbeitet.
Jeder Prozess der JVM (Java Virtual Machine) erlaubt nur genau einen Sicherheits-Manager. Darüber hinaus lässt sich die JVM so konfigurieren, dass ein Austausch des Sicherheits-Managers nach dessen Erstellung nicht mehr zulässig ist. In diesem Fall existiert er ebenso lange wie die JVM selbst. Viele in Browsern integrierte JVMs erstellen einen einzelnen Sicherheits-Manager, ehe das erste Java-Applet geladen wird. Damit kann das Java-Applet eines Hackers den standardmäßigen Sicherheits-Manager eines Browsers nicht ersetzen. Ein unautorisierter Zugriff auf Systemressourcen wird somit vermieden.
In Java 2 ist das Erstellen eines eigenen Sicherheits-Managers wesentlich einfacher als in den bisherigen Versionen von Java. Denn der standardmäßige Sicherheits-Manager lässt sich konfigurieren. Falls er dann Verwendung finden soll, muss es der JVM mit einer Systemeigenschaft über die Befehlszeile mitgeteilt werden. Das geschieht wie folgt:
java -Djava.security.managerMyApplication java -Djava.security.manager=default MyApplication
Die Klasse java.lang.SecurityManager verkapselt wichtige Features zur Interaktion der Anwendung mit dem Sicherheits-Manager im Gültigkeitsbereich der gerade laufenden JVM. Die Methode java.lang.System.getSecurityManager() liefert eine Referenz auf das aktuelle SecurityManager-Objekt. Falls dieses nicht vorhanden ist, wird ein Null-Wert zurückgegeben. Mit der Methode java.lang.System.setSecurityManager() lässt sich ein eigener Sicherheits-Manager einstellen. Falls die Installation nicht erlaubt ist, wird eine SecurityException ausgelöst.
Die SecurityManager-Klasse enthält viele öffentliche Methoden der Form checkXXX(). Jede Methode überprüft, ob der Zugriff auf eine entsprechende Ressource erlaubt ist. Bei Verweigerung wird wiederum eine SecurityException ausgelöst.
Die Methode checkPermission() kombiniert alle checkXXX()-Methoden. In Java-2-Implementierungen löst jeder Aufruf einer checkXXX()-Methode zugleich einen Aufruf von checkPermission() aus. Die checkPermission()-Methode ruft wiederum dieselbe Methode in der Klasse java.security.AccessController auf.
Die Entwickler arbeiten noch an weiteren „Verfeinerungen“. Windows Insider erhalten nun wohl eine erste Vorschau…
Laut Bitkom-Umfrage werden in jedem dritten Unternehmen in Deutschland private KI-Zugänge genutzt. Tendenz steigend.
2023 erlitten neun von zehn Unternehmen in der DACH-Region Umsatzverluste und Kurseinbrüche in Folge von…
Der Report „Pacific Rim“ von Sophos beschreibt Katz-und-Maus-Spiel aus Angriffs- und Verteidigungsoperationen mit staatlich unterstützten…
NVIDIA DGX SuperPOD soll voraussichtlich Mitte 2025 in Betrieb genommen und für Forschungsberechnungen genutzt werden.
Latrodectus, auch bekannt als BlackWidow, ist auch unter dem Namen LUNAR SPIDER bekannt.