Stabsstelle DV-Sicherheit der
Universität Stuttgart (RUS-CERT)
https://cert.uni-stuttgart.de
logo
Meldung Nr: RUS-CERT-893

[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

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

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:

  1. Wechseln zur UID=0 (root):
    $ su
    Password:
    #
    
  2. Anzeigen der aktuellen Privilegien von /bin/su:
    # ls -l /bin/su
    -rwsr-xr-x    1 root     root        23176 Apr  7 17:59 /bin/su
    #
    
  3. Entfernen des setuid-Bits:
    # chmod 755 /bin/su
    #
    
  4. Erneute Überprüfung der Privilegien von /bin/su, um sicherzustellen, daß das setuid-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.
  5. Ausloggen:
    # exit
    $
    

Vulnerability ID

Exploit (Proof of Concept)
Exploitcode ist seit dem 2002-07-19 veröffentlicht:

(og)

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 © 2017 RUS-CERT, Universität Stuttgart, https://cert.uni-stuttgart.de/


https://cert.uni-stuttgart.de/ticker/article.php?mid=893