(悪用には前提条件あり) ”sudo -e”オプション(sudoedit)の脆弱性(Important: CVE-2023-22809)

01/19/2023に”sudo -e”オプション(sudoedit)の脆弱性(Important: CVE-2023-22809)が公開されました。今回はこちらの脆弱性の概要と、各ディストリビューションの対応について纏めます。

2023/04/12追記:QNAPが本脆弱性に関して「早急にQNAP製品にパッチを当てるように」と警告を出しています。

[過去関連リンク(最新5件)]

CVSS/プライオリティ

修正方法

各ディストリビューションの情報を確認してください。

CVE概要(詳細はCVEのサイトをご確認ください)

  • https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-22809
    • スタックオーバーフローの脆弱性
    • ”sudo -e”又は”sudoedit”が呼び出されると、sudoは非特権ユーザに特権ファイルを編集することが出来るようになります。sudoersポリシファイルで、どのユーザがどのファイルを編集できるかなどを設定できます。望まれる動作としてはsudoersポリシモジュールが”-”の引数で区切られた、編集するファイルとともに実行する引数をsudoのフロントエンドに戻すことです。
      1. sudo フロントエンドは、sudoersモジュールにユーザーが編集するファイルのリスト等とリクエストを送信します。
      2. sudoersモジュールは、 sudoersファイル(またはLDAPから取得されるsudoersの設定ファイル)を確認し、ユーザーがファイルの編集を許可されているかどうかをチェックします。
      3. チェックが成功した場合、sudoers ポリシーモジュールはユーザの環境変数に有るSUDO_EDITOR, VISUAL, EDITORを選択します。SUDO_EDITOR, VISUAL, EDITORがセットされていない場合、sudoersオプションに書かれているエディタが使用されます。
      4. sudoers モジュールは、選択したエディタを含む新しい引数ベクタを構成します。エディタがコマンドラインオプションを含んでいる場合、それは複数の引数に分割されます。
      5. –” セパレータが引数ベクタに追加され、編集するファイルの後に追加されます。この引数ベクタはsudoフロントエンドに戻されます。
      6. sudo フロントエンドは、”–”セパレーターを使用して、どのファイルを編集するかを判断します。元々のユーザを所有者としてファイルの一時コピーが作成されます。
      7. sudo フロントエンドは、テンポラリファイルパスに続く、”–”セパレータで区切られた全ての要素を新しい引数ベクタとして加えます。
      8. 新しい引数ベクタが呼び出し元のユーザとして実行されます。テンポラリファイルは元の場所にコピーされ、テンポラリのバージョンは削除されます。
    • ここで、ユーザ指定のEDITORに”–”引数が含まれている場合、脆弱性が存在します。これにより、sudoフロントエンドがEDITORの”–”引数の後の全てをファイルとして編集するため、sudoersポリシで許可されていない場合でも編集が出来てしまいます。

影響

このバグを悪用するには、悪意の有るユーザがsudoeditを実行できるようにsudoersファイルが構成されている必要があります。sudoeditにアクセスが出来ないユーザは影響を与えることが出来ません。

迂回策

sudoers ファイルに次の行を追加することで、ユーザー指定のエディターが sudoedit によって使用されないようにすることができます。

Defaults!sudoedit    env_delete+="SUDO_EDITOR VISUAL EDITOR"

特定のファイルを編集するときにエディターを制限するには、Cmnd_Alias を使用できます。次に例を示します。

Cmnd_Alias              EDIT_MOTD = sudoedit /etc/motd
Defaults!EDIT_MOTD      env_delete+="SUDO_EDITOR VISUAL EDITOR"
user                    ALL = EDIT_MOTD

主なディストリビューションの対応方法

詳細は、各ディストリビューションの提供元にご確認ください

対処方法

各ディストリビューションの案内に従い、アップデートを行ってください。全てのRed Hat製品でパッチが行き渡っているかを確認するには、Red Hat SatelliteKatello、Spacewalk等を使うと管理が便利でしょう。

[参考]

タイトルとURLをコピーしました