JINI Security & Scalability JINI Security Hans-Peter Rötheli & Christian Gloor
Dec 31, 2015
JINI Security & Scalability
JINI Security
Hans-Peter Rötheli & Christian Gloor
Inhalt
JINI-BeispielumgebungKommunikationWas darf fremder Code? Exploits Folgerungen
Seminarraum mit Printer
Lookup Service
Http Server
Jini Printer
1
2
34
5
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
Lookup Service
Jini Printer
12
3
4
5
PDA
Pda: discovey, joinPda fragt nach
Printer (1)Lookup Service
gibt Referenz (2)Pda lädt Code aus
Printer (3,4)Kommunikation
direkt (5)
RMI
Jini PrinterPDA
resultat
call cpudata
PDA ruft remote procedure auf
Parameter gehen übers Netz
Service verarbeitet Resultat geht
übers Netz
Serialization, Code Base
Jini PrinterPDA
call cpudata
codebase
parent
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
Was darf fremder Code?
Auf das Netz zugreiffen?
Portscans Interne Angriffe Daten
weitersenden
Auf die HD zugreiffen?
User-Rechte Daten
manipulieren Daten
weitersenden
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
Jini PrinterPDA
call cpudata
codebase
codebase
Netzwerk
http-Server ist gefälscht DNS Router Switch
beliebiger Code wird geladen und ausgeführt
Server-Zertifikat
Fake Service
Jini Printer
PDA
LAN
Boshafter Printer
Lookup Service
Load
Bal
anci
ng
Neuer Service mit identischer ID
LoadbalancingCodebase identisch
und signiert Serialisiertes Objekt
verschieden Signatur der
Serialisierten Objekte
Fremder Lookup-Service
Jini PrinterPDA
LAN
Boshafter PrinterBoshafter Lookup Service
Lookup Service
Load
Bal
anci
ng
Zusätzlicher Lookup-Service im Netz
LoadbalancingNeue, 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öglichCode Base nicht authentiziertLookup Service nicht authentiziertProbleme mit SignaturenGrundlegende 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