[Compaq/Tru64] Schwachstelle im su-Kommando
(2002-07-24 13:58:23.109452+00)
Quelle:
http://online.securityfocus.com/bid/5272/discussion/
Eine Pufferüberlaufschwachstelle im Kommando su(1)
ermöglicht Benutzern mit interaktivem Zugang zum System, beliebigen Programmcode mit root
-Rechten auszuführen.
Betroffene Systeme
- Compaq Tru64 5.1
- Compaq Tru64 5.1a
- Compaq Tru64 5.0
- Compaq Tru64 5.0a
Einfallstor
interaktive Ausführung des Kommandos su(1)
(interaktiver Kommandozeilenzugang)
Auswirkung
Ausführung beliebigen Programmcodes unter der UID=0 (root)
(local root compromise)
Typ der Verwundbarkeit
buffer overflow bug
Gefahrenpotential
hoch
(Hinweise zur Einstufung des Gefahrenpotentials.)
Kontext
Das Kommando su(1)
dient auf UNIX-Plattformen dazu, die UserID (UID
) zu wechseln um andere Privilegien zu erlangen. Meist wird das Kommando dazu benutzt, von einer niedrig privilegierten UID
auf eine höher privilegierte UID
zu wechseln (z. B. root
) um beispielsweise Systemwartungsarbeiten durchführen zu können. Der su(1)
aufrufende Benutzer muß dabei das entsprechende Paßwort angeben, um die neue UID
annehmen zu können, beim Wechsel auf die UID=0 (root)
beispielsweise muß das root
-Paßwort angegeben werden.
Das Kommando /bin/su
besitzt ein setuid
-Bit und wird dadurch vom System unter der UID=0 (root)
ausgeführt, um den gewünschten Wechsel der UID
ausführen zu können.
Beschreibung
Die Routinen des Kommandos su(1)
weisen eine Pufferüberlaufschwachstelle auf, die von einem Benutzer mit interaktivem Zugang zum beherbergenden Rechnersystem dazu ausgenutzt werden kann, ohne Angabe des entsprechenden Paßwortes beliebigen Programmcode unter der UID=0 (root)
auszuführen und so das beherbergende Rechnersystem zu kompromittieren.
Gegenmaßnahmen
- Derzeit liegen noch keine Patches vor.
Workaround
Als Sofortmaßnahme kann das setuid
-Bit für /bin/su
entfernt werden. Diese Maßnahme führt dazu, daß z. B. Skripten, die dieses Kommando ausführen nur noch unter der UID=0 (root)
gestartet werden können, da su(1)
sonst nicht in der Lage ist, dem aktuellen Benutzer eine andere UID
zuzuweisen.
Mit folgender Kommandosequenz kann das setuid
-Bit für das Kommando su(1)
entfernt werden:
- Wechseln zur
UID=0 (root)
:$ su Password: #
- Anzeigen der aktuellen Privilegien von
/bin/su
:# ls -l /bin/su -rwsr-xr-x 1 root root 23176 Apr 7 17:59 /bin/su #
- Entfernen des
setuid
-Bits:# chmod 755 /bin/su #
- Erneute Überprüfung der Privilegien von
/bin/su
, um sicherzustellen, daß dassetuid
-Bit korrekt entfernt wurde:# ls -l /bin/su -rwxr-xr-x 1 root root 23176 Apr 7 17:59 /bin/su #
Nun sollte, wie in obigem Beispiel, der Buchstabe 's
' an vierter Stelle der Ausgabe des Kommandos 'ls -l /bin/su
' durch ein 'x
' ersetzt worden sein. - Ausloggen:
# exit $
Vulnerability ID
- bugtraq id 5272
Exploit (Proof of Concept)
Exploitcode ist seit dem 2002-07-19 veröffentlicht:
- http://online.securityfocus.com/data/vulnerabilities/exploits/tru64suexploit.c
- http://online.securityfocus.com/data/vulnerabilities/exploits/TRU64_su.pl
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=893