01/19/2023に”sudo -e”オプション(sudoedit)の脆弱性(Important: CVE-2023-22809)が公開されました。今回はこちらの脆弱性の概要と、各ディストリビューションの対応について纏めます。
2023/04/12追記:QNAPが本脆弱性に関して「早急にQNAP製品にパッチを当てるように」と警告を出しています。
[過去関連リンク(最新5件)]
CVSS/プライオリティ
- CVE-2023-22809
- 影響するバージョン
- 1.8.0 – 1.9.12p1
- 一時情報源
- Priority
- Red Hat: 8.1 Imporntant
- CVSS Score / CVSS Vector
- Red Hat: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
- 影響するバージョン
修正方法
各ディストリビューションの情報を確認してください。
CVE概要(詳細はCVEのサイトをご確認ください)
- https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-22809
- スタックオーバーフローの脆弱性
- ”sudo -e”又は”sudoedit”が呼び出されると、sudoは非特権ユーザに特権ファイルを編集することが出来るようになります。sudoersポリシファイルで、どのユーザがどのファイルを編集できるかなどを設定できます。望まれる動作としてはsudoersポリシモジュールが”-”の引数で区切られた、編集するファイルとともに実行する引数をsudoのフロントエンドに戻すことです。
- sudo フロントエンドは、sudoersモジュールにユーザーが編集するファイルのリスト等とリクエストを送信します。
- sudoersモジュールは、 sudoersファイル(またはLDAPから取得されるsudoersの設定ファイル)を確認し、ユーザーがファイルの編集を許可されているかどうかをチェックします。
- チェックが成功した場合、sudoers ポリシーモジュールはユーザの環境変数に有るSUDO_EDITOR, VISUAL, EDITORを選択します。SUDO_EDITOR, VISUAL, EDITORがセットされていない場合、sudoersオプションに書かれているエディタが使用されます。
- sudoers モジュールは、選択したエディタを含む新しい引数ベクタを構成します。エディタがコマンドラインオプションを含んでいる場合、それは複数の引数に分割されます。
- ”–” セパレータが引数ベクタに追加され、編集するファイルの後に追加されます。この引数ベクタはsudoフロントエンドに戻されます。
- sudo フロントエンドは、”–”セパレーターを使用して、どのファイルを編集するかを判断します。元々のユーザを所有者としてファイルの一時コピーが作成されます。
- sudo フロントエンドは、テンポラリファイルパスに続く、”–”セパレータで区切られた全ての要素を新しい引数ベクタとして加えます。
- 新しい引数ベクタが呼び出し元のユーザとして実行されます。テンポラリファイルは元の場所にコピーされ、テンポラリのバージョンは削除されます。
- ここで、ユーザ指定の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
主なディストリビューションの対応方法
詳細は、各ディストリビューションの提供元にご確認ください
- Debian
- Red Hat Enterprise Linux/CentOS
- Ubuntu
- SUSE/openSUSE
対処方法
各ディストリビューションの案内に従い、アップデートを行ってください。全てのRed Hat製品でパッチが行き渡っているかを確認するには、Red Hat SatelliteやKatello、Spacewalk等を使うと管理が便利でしょう。