220 likes | 355 Views
JINI Security & Scalability. JINI Security. Hans-Peter Rötheli & Christian Gloor. Inhalt. JINI-Beispielumgebung Kommunikation Was darf fremder Code? Exploits Folgerungen. Seminarraum mit Printer. Printer sucht Lookupservice, discovery (1)
E N D
JINI Security & Scalability JINI Security Hans-Peter Rötheli & Christian Gloor
Inhalt • JINI-Beispielumgebung • Kommunikation • Was darf fremder Code? • Exploits • Folgerungen
Seminarraum mit Printer • 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)
PDA kommt hinzu • Pda: discovey, join • Pda fragt nach Printer (1) • Lookup Service gibt Referenz (2) • Pda lädt Code aus Printer (3,4) • Kommunikation direkt (5)
RMI • PDA ruft remote procedure auf • Parameter gehen übers Netz • Service verarbeitet • Resultat geht übers Netz
Serialization, Code Base • Objekt wird serialisiert und übertragen • Parentobjekte werden aus Code Base geladen
Ü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
Auf das Netz zugreiffen? Portscans Interne Angriffe Daten weitersenden Auf die HD zugreiffen? User-Rechte Daten manipulieren Daten weitersenden Was darf fremder Code?
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“;}
Von bestimmter Herkunft • grant codebase “http://www.ethz.ch/“ { permission java.security.AllPermission ““,““;}
Basierend auf Signatur • grant signedBy “chgloor“ { permission java.security.AllPermission ““,““;}
Ü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
Falscher http-Server • http-Server ist gefälscht • DNS • Router • Switch • beliebiger Code wird geladen und ausgeführt • Server-Zertifikat
Fake Service • Neuer Service mit identischer ID • Loadbalancing • Codebase identisch und signiert • Serialisiertes Objekt verschieden • Signatur der Serialisierten Objekte
Fremder 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
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
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