Eines der ersten RPC-Protokolle wurde von Sun Microsystems entwickelt
und bildet die Grundlage für weitere Dienste (z.B. NFS,NIS). Durch dieses
Protokoll ist es möglich, Anwendungen auf mehrere Rechner zu verteilen. Ein
Client schickt eine Nachricht an einen Server. Der Server führt daraufhin den
entsprechenden RPC-Dienst aus und schickt dem Cliente seine Antwort.
Damit RCP über UDP oder TCP laufen kann, müssen die RPC-Service-Nummern
in die entsprechenden UPD- bzw. TCP-Portnummern übersetzt werden. Diese
Aufgabe übernimmt der portmapper (oder auch rpcbind). Der
Portmapper-Server ist der einzige RPC-Server, dessen UDP- bzw. TCP-Port
festgelegt ist. Ihm wurde die Portnummer 111 zugewiesen [BIF-96].
Die Bedrohungen, die von RPC ausgehen, hängen stark mit den Anwendungen
zusammen, die auf RPC basieren. Clienten, die einen RPC-Server nutzen,
müssen sich gegenüber dem Server authentisieren, damit dieser entscheiden
kann, welche Zugriffsrechte für den jeweiligen Client angewendet werden
müssen. Viele UNIX Impelmentierungen von RCP nutzen dazu AUTH_UNIX,
d.h., jeder RPC-Request enthält die Uid und Gruppennummern des Users, der
die Anfrage an der Server stellt. Diese Informationen sind leicht
zu fälschen und deshalb ist dies eine unsichere Authentisierungsmethode.
Sicherer ist es, Secure RPC zu verwenden. Dabei werden die Daten
verschlüsselt durch DES (Data Encryption Standard) übertragen. Leider
ist dieses Verfahren nicht stark genug, um auch gegen versierte Angreifer
ausreichend Schutz zu bieten, da der verwendete DES-Algorithmus nur
56-bit-Schlüssel verwendet2.7. Daten, die mit dieser
Schlüssellänge verschlüsselt worden sind, können durch Ausprobieren (brute-force-Angriff) mit einem
leistungsstarken PC entschlüsselt werden. [PUIS]
Eine weitere Schwachstelle ist der oben schon erwähnte Portmapper.
Der Portmapper hat einen Aufruf zum Abmelden von Diensten. Dieser kann
für Denial-of-Service-Attacken mißbraucht werden. Darüberhinaus
kann man den Portmapper-Server dazu veranlassen, daß er Informationen über die
angebotenen Dienste preisgibt. Diese sind meist eine extrem nützliche
Planungshilfe für weitere Angriffe. In Tabelle 2.4 ist
der Inhalt einer Portmapper-Tabelle zu sehen. In ihr steht, welche Dienste
mit welchen Versionsnummern angeboten werden und auf welchen Portnummern
sie zu finden sind. Viele Portnummern sind größer als 1024!
2.8
|
Das größte Problem des portmapper ist aber seine Fähigkeit, indirekte RPC-Aufrufe zu ermöglichen. Um den Aufwand einer Anfrage nach der tatsächlichen Port-Nummer, der Antwort und dem eigentlichen RPC-Aufruf zu vermindern, kann der Client den portmapper beauftragen, den RPC-Aufruf an den gewünschten Server weiterzuleiten. Diese weitergeleitete Nachricht trägt aber notwendigerweise die Quelladresse des portmapper. Damit wird es den Applikationen unmöglich, diesen Auftrag von echten lokalen Aufträgen zu unterscheiden und dessen Vertrauenswürdigkeit angemessen zu beurteilen [FSI-96].