
# cve-2025-32463 - sudo chrootを利用したLinuxにおけるローカル権限昇格(rootへ)
sudo chroot <dir name> <command>
選択したディレクトリ名でコマンドcommandを実行する
この問題は sudo v1.9.14 で導入されました。このバージョンでは、chroot機能が使用される際のマッチング処理コードがアップグレードされました。

この新しい変更により、コマンドchrootのマッチング前にルートディレクトリのIDが変更されるようになりました。具体的な関数はplugins/sudoers/pivot.cに定義されていました。このファイル(現在は削除されています)には、chrootのマッチングロジックを処理するためのpivot_root()およびunpivot_root()関数が定義されていました。これらの2つの関数を呼び出すと、名前サービススイッチ(NSS)操作がトリガーされ、システムが信頼できない環境から/etc/nsswitch.conf設定ファイルをロードすることになります(chrootが現在のルートディレクトリのIDに変更されているためです)。この設定ファイルには、システムがユーザー、グループ、およびホストに関する情報をどのように取得するかを指示する命令が含まれており、複数のソースをリストし、一致する項目が見つかるまで順番に検索します。
/etc/nsswitch.confには多くの行エントリが含まれており、情報を検索する際には行エントリの順序に従って検索が行われます。脆弱性の重要なポイントは:ファイルnsswitch.confでソースを検索する際、ソース名が共有オブジェクトパスの一部として使用されることです。例:ldapソースはlibnss_ldap.soに変換されます。NSS関数がldapソースを使用するとき、このライブラリがロードされます。
攻撃者にとって、pivot_root()とunpivot_root()を呼び出すとNSS操作がトリガーされます。したがって、攻撃者は制御可能なパスにchrootルートディレクトリを構築し、その中に/etc/nsswitch.confファイルと悪意のあるライブラリファイルを含めることができます。名前サービスはカスタムNSSモジュールを指すことができ、このモジュール内で悪意のある共有ライブラリを偽装できます。
攻撃者がsudo -R <fake_root_dir> <command>を実行してchrootモードでコマンドを実行しようとすると、sudoは権限を完全に検証する前にシステムのNSSを呼び出してユーザー/グループ情報を解析し、偽造された/etc/nsswitch.confを読み取り、悪意のあるNSSモジュールを指示します。この時点でsudoプロセスは偽のルートディレクトリに切り替わっており、依然としてroot権限で実行されているため、root権限で攻撃者の悪意のある共有ライブラリコードをロードして実行します。
git clone https://github.com/Spongebob-369/cve-2025-32463.git
cd cve-2025-32463
chmod +x run.sh
./run.sh
# Ubuntuコンテナに入った後
./sudo-chroot.sh
id