CVE-2024-47949
May 13, 2025
- Anwendung/Komponente: JetBrains TeamCity
- Betroffene Version: < 2024.07.3
- Score (CVSS 3.1): 7.5 High
- Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
- CWEs:
- CVE: CVE-2024-47949
Im Rahmen eine näheren Analyse von JetBrains TeamCity konnte ich eine Schwachstelle finden.
Beschreibung
TeamCity unterstützt das Erstellen von Backups. Um Backups erstellen zu können, benötigt
ein Nutzer die Berechtigung Change backup settings and control backup process
.
Der Backupdatei muss ein Name vergeben werden. Dabei prüft die Anwendung, dass keine ../
im
Dateinamen enthalten sind:
Leider kann diese Prüfung umgangen werden, sodass dann die ZIP-Datei in ein beliebiges Verzeichnis geschrieben werden kann.
Proof of Concept
Betriebssystem ist Linux. Anstatt Slashes sind Backslashes zu verwenden, d.h. anstatt ../
wird nun ..\
verwendet:
Somit konnte anschließend die Datei in ein beliebiges Verzeichnis geschrieben werden, z.B. nach /temp
, wie in der Shell zu sehen ist:
Lessons learned
Die Auswirkungen sind - isoliert betrachtet - nicht gravierend. Auch wenn es immer schlecht ist, wenn man in beliebige Verzeichnisse schreiben kann (z.B. könnte man Dateien überschreiben, Shells ablegen, sensitive Dateien so ablegen, dass man Zugriff hat), war es mir in kurzen Tests nicht möglich, diese Schwachstelle weiter zu eskalieren. Das heißt jetzt nicht, dass es nicht geht - ggf. könnte es im Zusammenspiel mit weiteren Exploits funktionieren.
Grundsätzlich wird ein Angreifer immer versuchen Prüfungen zu umgehen. Auch “Randbedingungen” sind zu berücksichtigen und auch zu testen.
Hier könnte es sein, dass sich der Entwickler/die Entwicklerin gedanklich in der Linuxwelt befand oder das zwar
mit File.separator
geprüft wurde, aber nicht bedacht, dass Java
die Slashes/Backslashes automatisch
in das richtige Format konvertiert. Beispielsweise liefert
new File("../");
und
new File("..\\");
das gleiche Ergebnis.
Hinweis
Alle Tests wurden auf der eigenen, lokalen Instanz (mittels Docker) durchgeführt sowie mit eigenen, erstellten Test-Nutzerdaten.
Jetbrains hat schnell, konstruktiv und professionell reagiert.
Timeline
- Meldung am 13.09.2024 an JetBrains
- Rückmeldung am 14.09.2024
- Fehler behoben am 24.09.2024
- Patch veröffentlicht am 01.10.2024
- CVE-Eintrag am 08.10.2024 mit CVE-2024-47949
- Release des Blog-Eintrages: 13.05.2025