JINI Security & Scalability JINI Security Hans-Peter Rötheli & Christian Gloor
Inhalt zJINI-Beispielumgebung zKommunikation zWas darf fremder Code? Exploits Folgerungen
Seminarraum mit Printer z Printer sucht Lookupservice, discovery (1) z Lookup Service sendet Referenz auf http-Server (2) z Printer lädt lookup.jar (3,4) und registriert sich damit, join (5)
PDA kommt hinzu z Pda: discovey, join z Pda fragt nach Printer (1) z Lookup Service gibt Referenz (2) z Pda lädt Code aus Printer (3,4) z Kommunikation direkt (5)
RMI z PDA ruft remote procedure auf Parameter gehen übers Netz z Service verarbeitet Resultat geht übers Netz
Serialization, Code Base z Objekt wird serialisiert und übertragen z 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
Was darf fremder Code? zAuf das Netz zugreiffen? Portscans Interne Angriffe Daten weitersenden z Auf die HD zugreiffen? User-Rechte Daten manipulieren Daten weitersenden
Security Manager zjava -Djava.security.policy=policy grant { permission java.security.AllPermission, ; }
Nur bestimmte Aktivitäten zgrant { permission java.net.SocketPermission , connect,accept; }
Von bestimmter Herkunft zgrant codebase { permission java.security.AllPermission,; }
Basierend auf Signatur grant signedBy chgloor { permission java.security.AllPermission,; }
Überblick zGeladener Code kann Böses anrichten Aktionen einschränken Herkunftabhängige Erlaubnis Signaturabhängige Erlaubnis
Denial of Service Device kann sich mehrmals anmelden y1000 Printer im Büro? Client kann nichtexistente Devices anmelden yWelches ist das richtige? SYN-Flood yLookup Service überlastet
Falscher http-Server z http-Server ist gefälscht yDNS yRouter ySwitch beliebiger Code wird geladen und ausgeführt Server-Zertifikat
Fake Service z Neuer Service mit identischer ID z Loadbalancing z Codebase identisch und signiert Serialisiertes Objekt verschieden Signatur der Serialisierten Objekte
Fremder Lookup-Service z Zusätzlicher Lookup- Service im Netz z Loadbalancing z Neue, eigene Services werden angeboten Neuer Printer sendet Daten über Internet Nur bekannte Lookup Services benutzen
Netzwerkzugriff zDevice hat keine Permissions, Daten zu senden. zDevice generiert Objekt, gibt in Codebase gefälschten URL an: RMI Class Loader versucht Code zu laden und sendet somit Daten an Server
Probleme mit Signatur zClient ist in fremdem Netz und kennt keine Signaturen yPrinter im Hotel, Seminarraum etc. zCAs belegen nur Herkunft, nicht Inhalt der Codestücke yJeder kann ein Zertifikat lösen bei Verisign zLange Vertrauensketten funktionieren nicht
Überblick zDenial of Service möglich zCode Base nicht authentiziert zLookup Service nicht authentiziert zProbleme mit Signaturen zGrundlegende 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 zScott Oaks & Henry Wong, JINI in an nutshell, OREILLY 2000 zCrichton, Davis, Woodcock, When to trust mobile objects, Oxford University 1999 zHasselmeyer, Kehr, Voss, Trade-offs in an Secure JINI Service Architecture, TU Darmstadt 2000