JINI Security & Scalability JINI Security Hans-Peter Rötheli & Christian Gloor Inhalt JINI-Beispielumgebung Kommunikation Was darf fremder Code? Exploits Folgerungen 1
Seminarraum mit Printer Lookup Service Http Server 2 1 5 3 4 Printer sucht Lookupservice, discovery (1) Lookup Service sendet Referenz auf http-server (2) Printer lädt lookup.jar (3,4) und registriert sich damit, join (5) kommt hinzu 1 2 Lookup Service 3 4 5 Pda: discovey, join Pda fragt nach Printer (1) Lookup Service gibt Referenz (2) Pda lädt Code aus Printer (3,4) Kommunikation direkt (5) 2
RMI call data resultat cpu ruft remote procedure auf Parameter gehen übers Netz Service verarbeitet Resultat geht übers Netz Serialization, Code Base call data code base parent cpu Objekt wird serialisiert und übertragen Parentobjekte werden aus Code Base geladen 3
Überblick Discovery mittels Broadcast Parameter gehen ungeschützt übers Netz Resultat geht ungeschützt übers Netz Auf Codebase wird via ungeschütztem http zugegriffen Verschlüsselung einsetzen Was darf fremder Code? Auf das Netz zugreiffen? Portscans Interne Angriffe Daten weitersenden Auf die HD zugreiffen? User-Rechte Daten manipulieren Daten weitersenden 4
Security Manager java -Djava.security.policy= policy grant { permission java.security.allpermission, ; } Nur bestimmte Aktivitäten grant { permission java.net.socketpermission 129.132.200.35, connect,accept ; } 5
Von bestimmter Herkunft grant codebase http://www.ethz.ch/ { permission java.security.allpermission, ; } Basierend auf Signatur grant signedby chgloor { permission java.security.allpermission, ; } 6
Überblick Geladener Code kann Böses anrichten Aktionen einschränken Herkunftabhängige Erlaubnis Signaturabhängige Erlaubnis Denial of Service Device kann sich mehrmals anmelden 1000 Printer im Büro? Client kann nichtexistente Devices anmelden Welches ist das richtige? SYN-Flood Lookup Service überlastet 7
Falscher http-server code base call Netzwerk data code base cpu http-server ist gefälscht DNS Router Switch beliebiger Code wird geladen und ausgeführt Server-Zertifikat Fake Service Lookup Service LAN Boshafter Printer Load Balancing Neuer Service mit identischer ID Loadbalancing Codebase identisch und signiert Serialisiertes Objekt verschieden Signatur der Serialisierten Objekte 8
Fremder Lookup-Service Boshafter Printer Boshafter Lookup Service LAN Load Balancing Lookup Service Zusätzlicher Lookup- Service im Netz Loadbalancing Neue, eigene Services werden angeboten Neuer Printer sendet Daten über Internet Nur bekannte Lookup Services benutzen Netzwerkzugriff Device hat keine Permissions, Daten zu senden. Device generiert Objekt, gibt in Codebase gefälschten URL an: http://fremdedomain.ch/chgloor/s!ch3r3$pw RMI Class Loader versucht Code zu laden und sendet somit Daten an Server 9
Probleme mit Signatur Client ist in fremdem Netz und kennt keine Signaturen Printer im Hotel, Seminarraum etc. CAs belegen nur Herkunft, nicht Inhalt der Codestücke Jeder kann ein Zertifikat lösen bei Verisign Lange Vertrauensketten funktionieren nicht Überblick Denial of Service möglich Code Base nicht authentiziert Lookup Service nicht authentiziert Probleme mit Signaturen Grundlegende Designfehler 10
Folgerungen URL-Basierende Permissions unsicher, daher nur signierten Code ausführen http durch https (SSL) ersetzen Serialisierte Objekte müssen signiert und verschlüsselt werden Aktuelle Implementation von JINI nicht geeignet für Real World Anwendungen Referenzen Scott Oaks & Henry Wong, JINI in an nutshell, O REILLY 2000 Crichton, Davis, Woodcock, When to trust mobile objects, Oxford University 1999 Hasselmeyer, Kehr, Voss, Trade-offs in an Secure JINI Service Architecture, TU Darmstadt 2000 11