Linux Sudoの権限昇格脆弱性に関する技術分析が公開

概要:Sudoの深刻な権限昇格脆弱性「CVE-2025-32463」

セキュリティ研究者チームが、広く利用されているLinuxのsudoユーティリティにおける深刻なローカル権限昇格の脆弱性「CVE-2025-32463」に関する詳細な技術レポートを公開しました。この脆弱性は、sudoのバージョン1.9.14から1.9.17に影響を与え、標準的なsudoアクセスを持つローカル攻撃者が、ツールの--chroot(または-R)機能を悪用することで、完全なroot権限を取得することを可能にします。

脆弱性のメカニズム:--chrootオプションの悪用

問題の核心は、--chroot(または-R)オプションにおけるロジックエラーにあります。通常、chrootはプロセスを特定のディレクトリに限定しますが、sudoはこの限定をユーザー権限のチェックやName Service Switch(NSS)モジュールのロードよりも前に適用します。攻撃者は、ユーザーが制御するchrootディレクトリ内に悪意のある/etc/nsswitch.confファイルを配置することで、NSSの動的モジュールロードを介して、root権限で不正な共有ライブラリ(.so)をロードさせることができます。

攻撃の詳細:NSSモジュールの悪用

この脆弱性は、sudoのソースコードにおける操作の順序に起因します。ターゲットディレクトリでchroot()が呼び出された後も、sudoはrootとして実行されます。その後、ユーザー認証情報を検証するためにgetpwuid()のような関数を呼び出します。NSSはchrootされた/etc/nsswitch.confを読み込み、その内容に基づいてlibnss_malicious.so.2のようなライブラリに対してdlopen()を実行します。これらのモジュールはrootコンテキストでロードされるため、攻撃者が特別に作成したライブラリは、そのコンストラクタで任意のrootレベルのコードを実行できます。この攻撃には、ローカルファイルへの書き込みアクセスと、/tmpのような書き込み可能なディレクトリがあればよく、攻撃は非常に単純かつ壊滅的です。

実証されたエクスプロイト手順

  • 環境設定: /tmp/my_chroot以下にetcおよびlib/x86_64-linux-gnuサブディレクトリを持つディレクトリ構造を作成し、適切な権限を設定します。
  • NSS設定: NSSに「悪意のある」モジュールをロードするよう指示する偽の/tmp/my_chroot/etc/nsswitch.confを追加します。
  • 悪意のあるライブラリ: ロード時にrootシェルを生成するコンストラクタ関数を持つ共有ライブラリをコンパイルします。
  • バグのトリガー: sudo -R /tmp/my_chroot /usr/bin/idを実行して、chroot、NSS解析、およびライブラリのロードを強制し、rootシェルを取得します。

概念実証コードと詳細なアセンブリレベル分析はGitHubで公開されており、straceによるシステムコールトレースから最終的なシェル生成までの各段階が示されています。

影響を受けるシステムと対策

影響を受けるシステムには、Ubuntu 24.04以降、Red Hat 8/9、SUSE、Amazon Linux、および脆弱なsudoリリースを使用しているmacOS Ventura/Sonomaが含まれます。この脆弱性は、chrootエスケープがホストの侵害につながる可能性があるコンテナ化された環境(Docker、Podman)で特に危険です。

推奨される防御策

  • 即座にパッチを適用: sudo 1.9.17p1以降にアップグレードしてください。このバージョンではchroot機能が非推奨となり、NSSロード前に権限チェックが行われます。
  • chrootを無効化: visudoを介して/etc/sudoersDefaults !chrootを追加します。
  • 一時ディレクトリの強化: /tmpnoexec,nosuid,nodevオプションでマウントします。
  • MACポリシーの適用: SELinuxまたはAppArmorを使用してNSSモジュールのロードを制限します。
  • chroot呼び出しの監査: auditdを使用してchrootシステムコールをログに記録し、不審なアクティビティを監視します。

CVE-2025-32463は、一見保護的な機能がどのようにして重大なセキュリティギャップを引き起こすかを示しています。システム管理者は、不正なrootアクセスを防ぐために、直ちにアップデートと緩和策を適用することが強く推奨されます。継続的なコードレビューと責任ある開示は、不可欠なシステムユーティリティを保護するために極めて重要です。


元記事: https://gbhackers.com