Java Security. Sicherheit durch Classloader, Security Manager und Co. Prof. Dr. Nikolaus Wulff



Ähnliche Dokumente
Java Security. Sicherheit durch Classloader, Security Manager und Co. Prof. Dr. Nikolaus Wulff

Internet Explorer Version 6

ecaros-update 8.2 Update 8.2 procar informatik AG 1 Stand: DP 02/2014 Eschenweg Weiterstadt

Anleitung zum erstellen einer PDF-Datei aus Microsoft Word

Version 0.3. Installation von MinGW und Eclipse CDT

Task: Nmap Skripte ausführen

Grundlagen der Programmierung APPLETS

SANDBOXIE konfigurieren

Arbeiten mit dem Outlook Add-In

SEP 114. Design by Contract

BSV Software Support Mobile Portal (SMP) Stand

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

Websites mit Dreamweaver MX und SSH ins Internet bringen

Überprüfung der digital signierten E-Rechnung

Kurzanleitung zur Softwareverteilung von BitDefender Produkten...2

25 Import der Beispiele

OP-LOG

Prof. Dr. Uwe Schmidt. 21. August Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)

Backup der Progress Datenbank

Große Übung Praktische Informatik 1

Wichtige Information zur Verwendung von CS-TING Version 9 für Microsoft Word 2000 (und höher)

Folgende Voraussetzungen für die Konfiguration müssen erfüllt sein:

Geschütztes FTP-Verzeichnis erstellen

Step by Step Benutzerverwaltung unter Novell. von Christian Bartl

Pakete dienen dazu, die Software eines Projektes in größere inhaltlich zusammengehörige Bereiche mit eigenem Namen einzuteilen (siehe Java API).

Einführung in die Informatik Tools

GEWAN Anleitung zum Ausschalten der Java- Sicherheitswarnungen unter Windows 7

Loggen Sie sich in Ihrem teamspace Team ein, wechseln Sie bitte zur Verwaltung und klicken Sie dort auf den Punkt Synchronisation.

Informatik Grundlagen, WS04, Seminar 13

Anleitung Captain Logfex 2013

PRAXISMANAGEMENT FÜR DIE ZAHNARZTPRAXIS, MKG - CHIRURGIE UND KLINIK PRO X DENT MKG ZMK UMSTELLUNG DER INSTALLATION AUF NETZLAUFWERK

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Anti-Botnet-Beratungszentrum. Windows XP in fünf Schritten absichern

MetaQuotes Empfehlungen zum Gebrauch von

Leitfaden zur Installation von Bitbyters.WinShutdown

Sicherheitslösung SMS-Code

Anwenden eines Service Packs auf eine Workstation

Betriebssystem Windows - SSH Secure Shell Client

Kurzanleitung: Abonnenten-Import

Sage 200 BI Häufige Fehler & Lösungen. Version

Installation des Authorware Webplayers für den Internet Explorer unter Windows Vista

ICS-Addin. Benutzerhandbuch. Version: 1.0

System-Update Addendum

Benutzerhandbuch - Elterliche Kontrolle

FIREPLACE EXPANDABLE BANNER v1.01

Übung: Verwendung von Java-Threads

OUTLOOK-DATEN SICHERN

Installationsanweisung Gruppenzertifikat

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten

Installationsanleitung

Herzlich willkommen bei der Installation des IPfonie -Softclients!

Über die Internetseite Hier werden unter Download/aktuelle Versionen die verschiedenen Module als zip-dateien bereitgestellt.

Java Reflection. Meta-Programmierung mit der java.lang.reflection API. Prof. Dr. Nikolaus Wulff

Profi cash 10. Electronic Banking. Installation und erste Schritte. Ihre Spezialisten für den elektronischen Zahlungsverkehr und moderne Bezahlsysteme

Benutzerauthentifizierung und Zugriffsschutz mit JAAS

Software-Engineering und Optimierungsanwendungen in der Thermodynamik

SEW Übung EMFText. 1 Aufgabe. 2 Domänenbeschreibung. 3 Installation von Eclipse/EMFText. 4 Schritt-für-Schritt Anleitung. 4.

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Applet Firewall und Freigabe der Objekte

teischl.com Software Design & Services e.u. office@teischl.com

Installation des GeoShop Redirector für Apache (Stand ) ================================================================

lññáåé=iáåé===pìééçêíáåñçêã~íáçå=

4D Server v12 64-bit Version BETA VERSION

Programmieren in Java

Hex Datei mit Atmel Studio 6 erstellen

DOKUMENTATION VOGELZUCHT 2015 PLUS

Lokale Installation von DotNetNuke 4 ohne IIS

Mobile-Szenario in der Integrationskomponente einrichten

Kurzeinstieg in VR-Ident personal

Dokumentation EGVP-Übertmittlungsfehler bei Server-Engpässen Vorgehensweise Seite 1 von 5

Online-Prüfungs-ABC. ABC Vertriebsberatung GmbH Bahnhofstraße Neckargemünd

e-books aus der EBL-Datenbank

EJB Beispiel. JEE Vorlesung 10. Ralf Gitzel

Bedienungsanleitung: Onlineverifizierung von qualifiziert signierten PDF-Dateien

Python SVN-Revision 12

Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler

UpToNet Events and Artists Installation der Testversion und Einrichten einer Demodatenbank

Installationsanleitung LogControl DL-Software

Wissenswertes über LiveUpdate

Prodanet ProductManager WinEdition

Um die Installation zu starten, klicken Sie auf den Downloadlink in Ihrer (Zugangsdaten für Ihre Bestellung vom...)

Hier finden Sie häufig gestellte Fragen und die Antworten darauf.

Step by Step Webserver unter Windows Server von Christian Bartl

Witbox. Anleitung Repetier-Host. Witbox

Der digitale. Workflow Workflow. [PDF-Erstellung aus CorelDraw für Windows]

WOT Skinsetter. Nun, erstens, was brauchen Sie für dieses Tool zu arbeiten:

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

1. Einrichtung der Webshop-Schnittstelle Shopware im orgamax. 2. Shopware Verzeichnisstruktur

Barcodedatei importieren

Installationsanleitung für Upgrade auf Windows 10 (Windows 8.1)

Inhalt... 1 Einleitung... 1 Systemanforderungen... 1 Software Download... 1 Prüfdokumentation... 4 Probleme... 5 Hintergrund... 5

Powermanager Server- Client- Installation

VIDA ADMIN KURZANLEITUNG

Tipps und Tricks zu Netop Vision und Vision Pro

SEMINAR Modifikation für die Nutzung des Community Builders

Import des persönlichen Zertifikats in Outlook 2003

4.1 Download der App über den Play Store

Transkript:

Java Security Sicherheit durch Classloader, Security Manager und Co. Prof. Dr. Nikolaus Wulff

Das Java Sicherheitskonzept Java wurde von Anfang an auf Sicherheit im Internet ausgelegt. Unsicherer Code z. B. ein Virus darf keinen Schaden zufügen und soll möglichst nicht zur Ausführung gelangen. Java Programme werden in einem geschützten Bereich der Sandbox ausgeführt. Classloader Architektur Class Verifizierer Sicherheitseigenschaften der JVM und Sprache Security Manager und API Prof. Dr. Nikolaus Wulff Informatik III 2

Sandbox und JVM remote code trusted sandbox localcode JVM local resources remote or local code JDK 1.x model policy class loader sandbox JVM local resources Java 2 Security Model Prof. Dr. Nikolaus Wulff Informatik III 3

Der ClassLoader Der ClassLoader ist dafür zuständig Bytecode als Class-Dateien zu laden und in der JVM zum Laufen zu bringen. Er schützt die trusted Java Kern Bibliotheken vor dem nachträglich zu ladenen Anwendungscode. Es gibt immer den primären ClassLoader der JVM Runtime (rt.jar) java.lang.classloader. Klassen und somit auch die eigenen ClassLoader werden durch diesen primären ClassLoader geladen. Prof. Dr. Nikolaus Wulff Informatik III 4

SecureClassLoader Fertige ClassLoader sind java.security.secureclassloader java.net.urlclassloader URL's können hierbei Internet Resourcen oder auch lokale Dateien und Archive sein. Jeder ClassLoader definiert seinen eigenen Namensraum. So ist es z.b. möglich ein und die selbe Klasse in verschiedenen Versionsständen quasi parallel laufen zu lassen. (Wichtig für 365x24 Anwendungen). Es ist möglich die Klassen unterschiedlicher Domains gegeneinander abzuschotten. Prof. Dr. Nikolaus Wulff Informatik III 5

ClassLoader Eigene Classloader können selbst entwickelt werden, z.b. um Klassen über das Internet zu laden. Typische Funktionen sind: Class findclass(string name) Class loadclass(string name) Class defineclass(string name, byte[] b, int, int) InputStream findresourceasstream(string name) URL findresource(string name) ClassLoader getparent() ClassLoader getsystemclassloader() Prof. Dr. Nikolaus Wulff Informatik III 6

Classloader selbst entwickeln Classloader arbeiten verkettet. Es wird immer zuerst der Elternclassloader gefragt. Nur wenn dieser die Klasse nicht kennt versucht der eigene Classloader die Klasse zu laden. Eigene Classloader können bestimmte Pakete sperren, d.h. eine SecurityException wird geworfen. Zu trusted Packages dürfen keine eigenen Klassen von außerhalb hinzugeladen werden. Z. B. das Laden einer Klasse java.lang.virus in den trusted Bereich wird mit einer SecurityException abgelehnt. Prof. Dr. Nikolaus Wulff Informatik III 7

Der Ladeprozess Das Laden einer Klasse erfordert mehrere Schritte: Loading: Finden und importieren der binären Daten. Linking: Code Verifizierung, Vorbereitung und Auflösung von Abhängigkeiten Verifizierung: sind die Daten korrekt Vorbereitung: Speicher anfordern für Klassenvariablen Auflösen: Symbolische Referenzen werden in konkrete direkte Referenzen innerhalb der JVM aufgelöst. Initialisierung: Java Code zum Setzen von Startwerten für Klassenvariablen wird ausgeführt Prof. Dr. Nikolaus Wulff Informatik III 8

Class File Verifier Hand in Hand mit dem Classloader verläuft die Verifizierung des Bytecodes. Die JVM weiß nicht von welchem Compiler das Class-File kommt. Im Prinzip erstellen Java Compiler gültigen Bytecode. Jedoch ein Angreifer kann einen eigenwilligen Compiler verwenden. Vor dem Ausführen des Bytecodes wird dieser auf gültige Sprungadressen, Auflösung externer Referenzen und Binärkompatibilität etc. überprüft. Prof. Dr. Nikolaus Wulff Informatik III 9

Sicherheitsaspekte der JVM Die JVM selber ist auf Sicherheit ausgelegt: Typkonvertierung per Cast wirft Exceptions. Keine ungültigen Feldindizes. Alle Referenzen werden auf null geprüft. Definierter Speicherzugriff, keine Pointer Arithmetik. Automatische Garbage Collection. All dies trägt wesentlich zu besseren und sicheren Anwendungen bei... Prof. Dr. Nikolaus Wulff Informatik III 10

Der Security Manager ClassLoader schützen die Innenansicht der JVM. Sie stellen Namensbereiche bereit und kapseln ganze Klassen, Pakete und Bibliotheken. Der Securtiy Manger sichert die Außensicht der Sandbox. Für viele potentielle Sicherheitslöcher gibt es eine checkxxx Methode die prüft, ob der augenblickliche Thread Erlaubniss besitzt die Operation XXX auszuführen. So prüfen z. B. checkread und checkwrite, ob der Thread Datei IO Berechtigungen besitzt. Diese Überprüfungen werden immer direkt von der JVM ausgeführt und werfen SecurityExceptions. Prof. Dr. Nikolaus Wulff Informatik III 11

Einige Security Aspekte accept/open socket connection from/to host:port waiting for connections on a local port modify a thread (priority, stop,...) create a new class loader loading/adding classes from specified package create a new process calling System.exit loading a library which calls native code access/modify system properties read/write to a specified file Prof. Dr. Nikolaus Wulff Informatik III 12

SecurityManager laden Beim Start einer Java Anwendung ist kein SecurityManager geladen. => Alles ist erlaubt! Applets im Webbrowser haben immer einen SecurityManager, z.b. File-IO ist verboten... Eine Anwendung installiert den Manager per System.setSecurityManager(...) Sobald ein SecurityManager geladen ist lässt sich dieser nicht mehr ersetzen, erweitern oder modifizieren. ApplicationServer installieren meist ihren eigenen ClassLoader und SecurityManager. Prof. Dr. Nikolaus Wulff Informatik III 13

Java Policies Die Sicherheitseinstellungen werden meist als Richtlinien von außen spezifiziert. Im Verzeichnis %JRE%/lib/security sind zwei entsprechende Dateien java.policy und java.security zu finden. Diese können und sollten für die jeweiligen eigenen Bedürfnisse innerhalb einer Organisation angepasst werden. Ensprechende Anwendungen müssen beim Start den entspechenden SecurityManager laden... Prof. Dr. Nikolaus Wulff Informatik III 14

Auszug aus java.security # # Class to instantiate as the javax.security.auth.login.configuration # provider. # login.configuration.provider=com.sun.security.auth.login.configfile # # Default login configuration file # #login.config.url.1=file:${user.home}/.java.login.config # # Class to instantiate as the system Policy. This is the name of # the class that will be used as the Policy object. # policy.provider=sun.security.provider.policyfile # The default is to have a single system-wide policy file, # and a policy file in the user's home directory. policy.url.1=file:${java.home}/lib/security/java.policy policy.url.2=file:${user.home}/.java.policy Prof. Dr. Nikolaus Wulff Informatik III 15

Auszug aus java.policy // Standard extensions get all permissions by default grant codebase "file:${{java.ext.dirs}}/*" { permission java.security.allpermission; }; // default permissions granted to all domains grant { // Allows any thread to stop itself using the // java.lang.thread.stop() permission java.lang.runtimepermission "stopthread"; // allows anyone to listen on un-privileged ports permission java.net.socketpermission "localhost:1024-", "listen"; // "standard" properies that can be read by anyone permission java.util.propertypermission "java.version", "read"; permission java.util.propertypermission "java.vendor", "read"; permission java.util.propertypermission "java.vendor.url", "read"; Diese Richtlinien parametriesieren entsprechende Klassen des java.security Pakets. Prof. Dr. Nikolaus Wulff Informatik III 16

Security Werkzeuge Mit dem keytool lassen sich mit verschiedenen Verfahren Verschlüsselungssignaturen erstellen. Jar Bibliotheken werden mit dem jarsigner Werkzeug mit Hilfe dieser Signaturen digital signiert. Richtlinien werden in java.policies hinterlegt. Zum Manipulieren von policy Dateien beinhaltet das JDK das Werkzeug policymanager. Diese Tools ermöglichen einem System Adminstrator seine Sandburg dicht zu machen. Prof. Dr. Nikolaus Wulff Informatik III 17

policymanager Richlinien mit dem policymanager bearbeiten. Prof. Dr. Nikolaus Wulff Informatik III 18

SecurityManager entwickeln Die java.lang.securitymanager Implementierung verwendet die java.policy Datei. SecurityManager ist ein abstrakte Klasse und kann nicht direkt instanziert werden. Viel Code für einen eigenen SecurityManager ist nicht notwendig: System.setSecurityManager( new SecurityManager(){ // no own implementation } ); Diese innere Klasse reicht bereits aus. Es können jedoch auch Methoden explizit überladen werden. Prof. Dr. Nikolaus Wulff Informatik III 19

Eigener SecurityManager public class TestSecurityManager extends SecurityManager { @Override public void checkwrite(string name) throws SecurityException { System.out.println("checkWrite " + name); if (name.startswith("~/") name.charat(0)!='/') { // OK } else { throw new SecurityException("no write grants"); } } } Beispiel für einen einfachen SecurityManager, der nur das Schreiben unterhalb des Home Verzeichnisses erlaubt. Keine besonders gute Implementierung ;-) Prof. Dr. Nikolaus Wulff Informatik III 20