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

[Sun/Solaris] Pufferüberlauffehler in cachefsd
(2002-05-03 16:22:01+00)

Quelle: http://cert.uni-stuttgart.de/archive/bugtraq/2002/04/msg00416.html

Eine Schwachstelle im cachefsd erlaubt Angreifern über eine Netzwerkverbindung beliebigen Programmcode mit root-Rechten auf dem beherbergenden Rechnersystem auszuführen.

Betroffene Systeme

Einfallstor
Speziell formatierter RPC-Request

Auswirkung
Kompromittierung des beherbergenden Rechnersystems über eine Netzwerkverbindung
(remote root compromise)

Typ der Verwundbarkeit
(heap) buffer overflow bug

Gefahrenpotential
sehr hoch
(Hinweise zur Einstufung des Gefahrenpotentials.)

Kontext
CacheFS dient in einer NFS-Umgebung (NFS: Network File System) dazu, die Anbindung von NFS-Clients robust zu machen. Im Falle der temporären Nichtverfügbarkeit des NFS-Servers bedient CacheFS per NFS montierte Filesysteme aus seinem Cache und verhindert so eine Unterbrechung.

Teil dieses Systems ist der Daemon cachefsd, der während der Unterbrechung der Verbindung den Status des NFS-Servers beobachtet und bei Wiedervefügbarkeit die Filesysteme in einen konsistenten Zustand bringt.

Beschreibung
In den Routinen zur Verarbeitung von RPC-Requests im cachefsd existiert ein Pufferüberlauffehler. Durch das Senden speziell formulierter RPC-Requests an den Port, der von cachefsd zum Empfang solcher Requests reserviert wurde, kann ein Angreifer über eine Netzwerkverbindung diesen Fehler dazu ausnutzen, beliebigen Programmcode unter der UID des cachefsd auszuführen. Üblicherweise wird cachefsd mit der UID=root gestartet, so daß eine erfolgreiche Ausnutzung dieser Schwachstelle zur Kompromittierung des beherbergenden Rechnersystems führt. cachefsd wird standardmäßig installiert und durch inetd bei Eintreffen eines entsprechenden RPC-Requests gestartet.

Gegenmaßnahmen
Bisher stehen keine Patches zur Behebung dieser Schwachstelle zur Verfügung.

Workaround
Deaktivierung von cachefsd. Dies kann durch Auskommentieren der ensprechenden Zeile in /etc/inetd.conf geschehen.

  1. Loggen Sie sich als root ein:
    $ su
    Password:
    #
    
  2. Editieren Sie die Datei /etc/inetd.conf
    # vi /etc/inetd.conf
    
  3. Suchen Sie die Zeile
    100235/1 tli rpc/tcp wait root /usr/lib/fs/cachefs/cachefsd  cachefsd
    
    und Kommentieren Sie sie durch Voranstellung eines Doppelkreuzes (#) aus (das vi-Kommando 'i' schaltet in den Einfügemodus)
    # 100235/1 tli rpc/tcp wait root /usr/lib/fs/cachefs/cachefsd  cachefsd
    
    Das Drücken der ESC-Taste verläßt den Einfügemodus.
  4. Speichern Sie die Datei mit dem vi-Kommando ':wq!' ab. Dieses Kommando beendet vi gleichzeitig.
  5. Starten Sie inetd neu und beenden Sie ggf. einen noch laufenden cachefsd:
    • unter Solaris 2.5.1 und 2.6 mit den Kommandos
      # kill -HUP PID_von_inetd
      # kill PID_von_cachefsd
      
      Mittels des Kommandos:
      # ps -ef | grep inetd
      
      bzw.
      # ps -ef | grep cachefsd
      
      kann die PID des jeweiligen Prozesses ermittelt werden.
    • unter Solaris 7 und 8
      # pkill -HUP inetd
      # pkill cachefsd
      
  6. Loggen Sie sich wieder aus:
    # exit
    $
    

Angriffsspuren
Angriffsversuche, die eine Ausnutzung dieser Schwachstelle zum Ziel haben, können SYSLOG-Einträge der folgenden Formen erzeugen:

May  3 16:46:08 victim inetd[600]: /usr/lib/fs/cachefs/cachefsd:
Segmentation Fault - core dumped

May  3 16:46:22 victim last message repeated 8 times 

May  3 16:46:24 victim inetd[600]: /usr/lib/fs/cachefs/cachefsd:
Bus Error- core dumped

[...]
sowie ähnliche Einträge, die dokumentieren, daß cachefsd fehlerhaft beendet wurde. Es sei darauf hingewiesen, daß die Abwesenheit solcher Einträge mitnichten darauf schließen läßt, daß kein Angriff stattgefunden hat.

Vulnerability ID

Weitere Information zu diesem Thema

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


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