CVE-2024-22851 - Unauthenticated Path Traversal

Erstellt: 30.01.2024

Übersicht

Im Rahmen eines Sicherheitsaudits für einen LiveConfig-Kunden entdeckte Raphael Kuhn von der DriveByte GmbH eine sogenannte Unauthenticated Path Traversal-Schwachstelle in LiveConfig bis Version 2.5.1.

Ursache

Durch den Aufruf eines speziell präparierten Pfadnamens war es möglich, mit den Berechtigungen des LiveConfig-Benutzers (liveconfig) auf Dateien des Servers zuzugreifen. Ursache war eine fehlerhafte Prüfung auf das in dem betroffenen Anwendungsfall erlaubte Basisverzeichnis.

Risiko

Die in LiveConfig integrierte Webserver-Komponente läuft mit den Berechtigungen des Benutzers liveconfig. Somit konnte serverseitig auf alle Dateien lesend zugegriffen werden, für welche der Benutzer liveconfig berechtigt ist. Auf Inhalte von Webspace-Accounts bzw. von anderen Benutzern war kein Zugriff möglich, auch nicht auf den Lizenzkey (liveconfig.key) und das TLS-Zertifikat (sslcert.pem) von LiveConfig.

Wenn LiveConfig mit der voreingestellten SQLite-Datenbank betrieben wurde, war es möglich, durch einen gezielten Angriff auch diese auszulesen. Die Datenbank konnte Kontaktdaten von Kunden enthalten (je nachdem was erfasst wurde). Alle besonders sensiblen Daten (Passwörter, Private Keys, TLS-Zertifikate etc.) sind dort jedoch stark gehashed (PBKDF2) oder verschlüsselt (AES) gespeichert. Nicht mehr benötigte Passwörter (z.B. nach dem erfolgreichen Anlegen von Accounts) werden von LiveConfig unmittelbar aus der Datenbank gelöscht.

Im (unserer Einschätzung nach) “worst case” wäre somit ein Auslesen der gehosteten Domainnamen, Benutzernamen (LiveConfig, FTP, etc.) und ggf. Kontaktdaten möglich (Information Disclosure).

Wenn MySQL als Datenbank-Backend verwendet wurde, war kein Zugriff auf diese Informationen möglich: die Konfigurationsdatei /etc/liveconfig/liveconfig.conf mit den MySQL-Zugangsdaten kann nicht durch den liveconfig-Benutzer gelesen werden.

Betroffen war LiveConfig bis einschließlich Version 2.5.1. Mit Version 2.5.2 (28.11.2017) wurde die fehlerhafte Komponente ersetzt, womit diese Sicherheitslücke nicht mehr ausgenutzt werden konnte. Der Fehler kann somit seit über sechs Jahren als “behoben” betrachtet werden.

DriveByte hat einen CVSS-Score 4.0 von 7.7 (High) berechnet: CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:L/SI:N/SA:N/E:P.

Analyse

Mit folgenden grep-Aufrufen kann geprüft werden, ob entsprechende Zugriffe erfolgreich stattgefunden haben:

cd /var/log/liveconfig
grep '/\.\./' access.log access.log.1 | grep '" 200'
zgrep '/\.\./' access.log*.gz | grep '" 200'

Fazit

Dieser Fehler zeigt wie wichtig es ist, Server immer auf einem aktuellen Stand zu halten. Die Sicherheitslücke ist zwar durch Zufall ans Tageslicht gekommen (auf dem untersuchten System lief tatsächlich LiveConfig 2.2.x), allerdings ist es dem Fleiß und der Erfahrung von DriveByte zu verdanken, dass diese Lücke dort entdeckt wurde.

Im Anschluss an die Meldung haben wir den betroffenen Code sowie ähnliche Komponenten analysiert, konnten aber keine weiteren vergleichbaren Schwachstellen mehr ausmachen.

Dennoch halten wir eine Sicherheitswarnung für angemessen, für den Fall dass noch irgendwo anders solche extrem veralteten Serverinstallationen öffentlich erreichbar sind. Zudem werden wir unsere Anstrengungen verstärken, dass nicht angemeldete Benutzer die genaue LiveConfig-Version nicht herausfinden können, um ein gezieltes Crawling nach bestimmten LiveConfig-Versionen zu erschweren.

Danksagung

Wir möchten Herrn Raphael Kuhn (DriveByte GmbH) für die verantwortungsvolle Veröffentlichung des entdeckten Sicherheitsproblems sowie für die freundliche und offene Kommunikation danken.

  • gemeldet: 06.11.2023 09:50 GMT+1
  • analysiert: 06.11.2023 11:40 GMT+1
  • veröffentlicht: 30.01.2024
  • behoben: 28.11.2017 (commit 584a11418)
  • betroffene Versionen: bis v2.5.1