Bewachter Sandkasten: So funktioniert das Java-Sicherheitsmodell

Die Core Java 2 Security Architecture als Teil der Java-Plattform enthält unter anderem den Bytecode Verifier, Class Loader, Security Manager, Access Controller, Vorrichtungen für die Zugriffsrechte, Tools zur Policy-Beschreibung. Um ihr Ineinandergreifen zu illustrieren, folgt ein Beispiel für die Ausführung des Java-Codes in Komponenten der Core Java 2 Security Architecture.

Der Bytecode Verifier überprüft zunächst, ob der Java-Code der Java Language Specification entspricht. Dazu analysiert er erst den Bytecode-Ablauf und danach eventuelle Verweise auf andere Klassen. Wenn also eine Klasse auf eine Methode einer anderen Klasse zugreift, überprüft der Bytecode Verifier, ob diese als „public“ deklariert ist. Der Bytecode Verifier überprüft in der Regel, ob der Bytecode mit der Sequenz 0xCAFEBABE beginnt, ob verlorene Bytes vorhanden sind, ob final-Klassen fälschlicherweise über Subklassen verfügen, welche Arten von Methodenargumenten vorliegen und so weiter.

Ist alles in Ordnung, übersetzt der Class Loader den Bytecode in Java-Klassen, die daraufhin von der JVM ausgeführt werden. Class Loaders stellen auch sicher, dass nicht vertrauenswürdiger Code andere Java-Programme nicht beeinträchtigt. Es lassen sich verschiedene Policies definieren, die anzeigen, ob eine bestimmte Klasse geladen werden muss. Über den Class Loader und die Java-Standardklassen kann durch ein Entscheidungsrecht für den Security Manager auch festgelegt werden, ob eine Klasse auf bestimmte Systemressourcen zugreifen darf oder nicht.

Der Security Manager ist eine spezielle, vom Entwickler implementierbare Klasse. Sie zeigt an, ob eine Klasse auf eine bestimmte Ressource zugreifen darf (beispielsweise Dateizugriff oder Netzwerkverbindung). Für diese Entscheidung analysiert der Security Manager die Quelle der Anforderung. Bei Ablehnung des Zugriffs wird eine java.lang.SecurityException ausgelöst, ansonsten wird der Aufruf regulär abgewickelt. (Die Einrichtung eines spezifischen Security Manager wird ein zukünftiger Artikel zeigen.)

Mehr Flexibilität in einer Anwendung lässt sich auch durch einen anderen speziellen Mechanismus namens Access Controller erreichen. Die Java-Plattform verfügt über weitere grundlegende Sicherheitsfunktionen wie automatische Speicherverwaltung und starke Datentypisierung. Das ergibt einen robusteren Code und verringert die Anzahl der Speicherfehler und Anfälligkeiten. Die Kontrolle der Zugriffsrechte ist die wichtigste Verbesserung im Java 2-Sicherheitssystem. Das Package java.security enthält die notwendigen Klassen und Schnittstellen für die Core Java 2 Security Architecture.

Page: 1 2 3 4

ZDNet.de Redaktion

Recent Posts

Internet-Tempo in Deutschland: Viel Luft nach oben

Höchste Zeit für eine schnelle Kupfer-Glas-Migration. Bis 2030 soll in Deutschland Glasfaser flächendeckend ausgerollt sein.

23 Stunden ago

Erste Entwickler-Preview von Android 16 verfügbar

Schon im April 2025 soll Android 16 den Status Plattformstabilität erreichen. Entwicklern gibt Google danach…

23 Stunden ago

Kaspersky warnt vor Cyberangriff auf PyPI-Lieferkette

Die Hintermänner setzen KI-Chatbot-Tools als Köder ein. Opfer fangen sich den Infostealer JarkaStealer ein.

2 Tagen ago

Digitale Produkte „cyberfit“ machen

Vernetzte Produkte müssen laut Cyber Resilience Act über Möglichkeiten zur Datenverschlüsselung und Zugangsverwaltung verfügen.

2 Tagen ago

Google schließt schwerwiegende Sicherheitslücken in Chrome 131

Das jüngste Update für Windows, macOS und Linux stopft drei Löcher. Eine Anfälligkeit setzt Nutzer…

2 Tagen ago

Apple schließt Zero-Day-Lücken in iOS, iPadOS und macOS

Zwei von Google-Mitarbeitern entdeckte Schwachstellen werden bereits aktiv gegen Mac-Systeme mit Intel-Prozessoren eingesetzt. Sie erlauben…

2 Tagen ago