[Sun/Solaris] Format-String-Schwachstelle in rpc.rwalld
(2002-05-01 15:21:02+00)
Quelle:
http://cert.uni-stuttgart.de/archive/bugtraq/2002/04/msg00432.html
Ein unter Solaris automatisch aktivierter RPC-Dienst enthält eine Format-String-Schwachstelle, die es einem Angreifer erlaubt, über eine Netzverbindung root
-Rechte zu erlangen.
Betroffene Systeme
- Solaris 2.6, 7, und 8
Einfallstor
Nutzung des rpc.rwalld
-Dienstes. Typischerweise werden für RPC-Dienste UDP-Portnummern im Bereich 32700 bis 33000 dynamisch vergeben. (Anderslautenden Informationen, denen zufolge die Port-Nummer konstant ist, sollte nicht blind vertraut werden.)
Auswirkung
Ein Angreifer kann über eine Netzverbindung root
-Rechte erlangen.
(remote root compromise)
Typ der Verwundbarkeit
format string bug
Gefahrenpotential
sehr hoch
(Hinweise zur Einstufung des Gefahrenpotentials.)
Beschreibung
Der Dienst rpc.rwalld
bietet die Funktionalität des Programms wall
über das Netz an. Dazu wird dieses Programm auf eine RPC-Anfrage hin aufgerufen. Unter Solaris wird die übergegebene Nachricht in unsicherer Weise per Syslog aufgezeichnet, falls der Aufruf des wall
-Programms aus irgend einem Grund fehlschlägt. Dadurch kann ein Angreifer beliebigen Code mit den Rechten des rpc.rwalld
-Prozesses ausführen, typischerweise sind dies root
-Rechte.
Andere rpc.rwalld
-Implementierungen (wie die auf GNU/Linux-Systemen häufig verwendete netkit-rwall
-Fassung) sind von dieser Schwachstelle nicht betroffen.
Feststellen der Verwundbarkeit
Es sind nur Systeme betroffen, die den rpc.rwalld
-Dienst anbieten. Der entsprechende RPC-Dienst trägt den Namen walld
; RPC-Dienste auf dem lokalen System können mit dem Befehl "rpcinfo -p
" angezeigt werden:
Auf einem betroffenen System wird - wie oben - der RPC-Dienst$ rpcinfo -p program vers proto port service [...] 100133 1 tcp 32772 100011 1 udp 32782 rquotad 100008 1 udp 32783 walld 100021 1 udp 4045 nlockmgr 100021 2 udp 4045 nlockmgr 100021 3 udp 4045 nlockmgr [...] $
walld
aufgeführt.
Workaround
- Abschalten des
rpc.rwalld
-Dienstes.Dies kann durch das Auskommentieren der "
walld/1
"-Zeile in/etc/inetd.conf
geschehen. Dazu muß die Zeile
durchwalld/1 tli rpc/datagram_v wait root /usr/lib/netsvc/rwall/rpc.rwalld rpc.rwalld
ersetzt werden. Ferner sollte das zukünftige Ausführen des Programmes durch Entfernen der entsprechenden Bits verhindert werden:#walld/1 tli rpc/datagram_v wait root /usr/lib/netsvc/rwall/rpc.rwalld rpc.rwalld
$ su Password: password # chmod 000 /usr/lib/netsvc/rwall/rpc.rwalld #
Nach diesen Maßnahmen ist ein Reboot nötig. Alternativ kann
inetd
neu gestartet werden (mit "kill -HUP PID_von_inetd
", die PID ist 323 im Beispiel):
Ferner muß geprüft werden, ob der# ps -ef | grep inetd root 323 1 0 Mar 09 ? 1:36 /usr/sbin/inetd -s rusfw 14180 13502 0 15:29:28 pts/15 0:00 grep inetd # kill -HUP 323 #
rpc.rwalld
-Dienst läuft:
Falls das der Fall ist, sollte mit "# ps -ef | grep rpc root 241 1 0 Mar 09 ? 1:13 /usr/sbin/rpcbind root 9736 323 0 21:43:32 ? 0:00 rpc.rwalld #
kill -9 PID_von_rpc.rwalld
" der Prozeß beendet werden, also in diesem Beispiel:# kill -9 9736 #
Gegenmaßnahmen
Einspielen der folgenden Patches von Sun:
Vulnerability ID
Weitere Information zu diesem Thema
Hinweis
Die in diesem Text enthaltene Information wurde für die Mitglieder der Universität Stuttgart recherchiert und zusammengestellt. Die Universität Stuttgart übernimmt keinerlei Haftung für die Inhalte. Dieser Artikel darf ausschließlich in unveränderter Form und nur zusammen mit diesem Hinweis sowie dem folgenden Copyrightverweis veröffentlicht werden. Eine Veröffentlichung unter diesen Bedingungen an anderer Stelle ist ausdrücklich gestattet.
Copyright © 2022 RUS-CERT, Universität Stuttgart, https://cert.uni-stuttgart.de/
https://cert.uni-stuttgart.de/ticker/article.php?mid=803