[Generic/GNU findutils] Pufferüberlaufschwachstelle in 'locate'
(2007-06-01 15:19:10.387251+00)
Quelle:
http://archive.cert.uni-stuttgart.de/bugtraq/2007/05/msg00424.html
Eine Pufferüberlaufschwachstelle im Programm locate
der GNU findutils kann von einem Angreifer dazu ausgenutzt werden, beliebigen Programmcode mit den Privilegien des locate
-Prozesses auf dem beherbergenden Rechnersystem auszuführen.
Betroffene Systeme
- GNU findutils 4.2.30 und früher
Nicht betroffene Systeme
- GNU findutils 4.2.31
- GNU findutils 4.2.30 und früher mit entsprechenden Patches
Einfallstor
Manipulation eines Dateinamens, der durch updatedb
indiziert und mittels locate
abgefragt werden kann
Angriffsvoraussetzung
- Möglichkeit der Manipulation von Dateinamen
- durch lokale Benutzer (local)
- durch entfernte Benutzer, wenn die Konfiguration des beherbergenden Rechnersystems dies zulässt, z.B. auf einem FTP-Server, der das Hochladen von Dateien erlaubt (remote)
- Lokaler Benutzer, der das Programm
locate
ausführt locate
-Installation mit altem Datenbankformat ('old-format')
Auswirkung
Ausführung beliebigen Programmcodes mit den Privilegien des locate
aufrufenden Benutzers
(user compromise)
Typ der Verwundbarkeit
Pufferüberlaufschwachstelle
(buffer overflow bug)
Gefahrenpotential
hoch
(Hinweise zur Einstufung des Gefahrenpotentials.)
Kontext
Die GNU Find Utilies sind die Standardwerkzeuge unter Unix-Betriebssystemen und Linux um im Dateisystem zu suchen. Es besteht aus fogenden Programmen:
find
- dient zum interaktiven Durchsuchen von Verzeichnissenupdatedb
- durchwandert das Dateisystem und aktualisiert eine oder mehrere Indexdatenbanken oder legt diese an. Die Datenbanken können im ursprünglichen ("old") oder im derzeit aktuellen LOCATEDB02-Format angelegt werden.locate
- durchsucht die Indexdatenbank und gibt Treffer inklusive des Pfades zum Fundort aus.xargs
- erlaubt das dynamische Übergeben von Argumenten an Kommandos, die zuvor vonstdin
gelesen wurden.xargs
wird sehr häufig benutzt, Ergebnisse desfind
-Kommandos dynamisch weiteren Kommandos als Argument zu übergeben.
findutils
sind standardmäßig bei in GNU/Linux und GNU/Hurd sowie z.T. auch anderen Unix-Betriebssystemen installiert und so konfiguriert, dass eine Indexdatenbank für die Abfrage mit locate
bereitsteht und regelmäßig aktualisiert wird.
Beschreibung
Eine Heap-basierte Pufferüberlaufschwachstelle im Programm locate
der GNU findutils kann von einem Angreifer dazu ausgenutzt werden, beliebigen Programmcode mit den Privilegien des locate
-Prozesses auf dem beherbergenden Rechnersystem auszuführen. Dies sind im Allgemeinen die Privilegien des aufrufenden Benutzers.
Die Schwachstelle tritt auf, wenn locate bei einer Anfrage eine Index-Datenbank im alten LOCATE-Format liest. Dabei werden alleDateinamen in einen Puffer mit einer festen Länge von 1026 Byte gelesen. Längere Dateinamen überschreiben die Puffergrenze und erlauben einem Angreifer, Daten in angrenzende Speicherbereiche zu schreiben.
Prinzipiell sind alle Benutzer, die Dateinamen manipulieren können, in der Lage, die Schwachstelle auszunutzen. Dies sind zunächst alle lokalen Benutzer. Jedoch gibt es Szenarien, bei denen externe, und in besonderen Fällen sogar unauthentifizierte, Benutzer solches vermögen. Dies kann z.B. bei FTP-Servern der Fall sein, die es erlauben Dateien hochzuladen.
Um die Schwachstelle erfolgreich auszunutzen, muss der Angreifer zunächst einen entsprechenden Dateinamen anlegen, und ihn im alten LOCATE-Format indizieren lassen. Letzteres geschieht im allgemeinen automatisch durch einen cron-Prozess mittles des Programms updatedb
, kann aber auch durch dessen manuellen Aufruf bewirkt werden.
Sobald dann ein lokaler Benutzer (vorzugsweise ein Benutzer mit höherern Privilegien als der Angreifer, sonst nützt der ganze Aufwand nichts) das Programm locate
aufruft, wird ein Pufferüberlauf provoziert in dessen Folge durch den Angreifer festgelegte Programmcode mit den Privilegen des aufrufenden Benutzers ausgeführt werden kann.
Durch diese Schwachstelle kann sich ein lokaler Angreifer höhere Privilegien verschaffen und ein entfernter Angreifer z.B. in o.g. FTP-Szenario interaktiven Zugang zu einem verwundbaren System erlangen.
Workaround
- Umstellung der
locate
-Installation auf das LOCATE02-Datenbankformat - Deinstallation von
locate
auf Systemen, die eine externe Manipulation von Dateinamen zulassen
Gegenmaßnahmen
- Installation eines Source-Code-Patches oder
- Installation von GNU findutils 4.2.31
- Installation der entsprechenden GNU findutils-Pakete (Version ab 4.2.31 oder gepatcht) der verschiedenen Distributoren
Vulnerability ID
Weitere Information zu diesem Thema
Revisionen dieser Meldung
- V 1.0 (2007-06-01)
- V 1.1 (2007-06-02):
- Kontext-Abschnitt hinzugefügt
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=1378