10/05/2024にPAM上でのワンタイムパスワードを可能にするOATH Toolkit(pam-oath)に脆弱性(Important: CVE-2024-47191)が公開されました。今回はこちらの脆弱性の概要と、各ディストリビューションの対応について纏めます。
[過去関連リンク(最新5件)]
一次情報源
CVSS/プライオリティ
- CVE-2024-47191
- 影響するバージョン
- OATH Toolkit pam_oath/liboath 2.6.7 – 2.6.11
- Priority/CVSS
- Red Hat: 7.1 Important
- Red Hat: CVSS Vector: CVSS:3.1/AV:L/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-2024-47191
- OATH Toolkit pam_oath usersfileで${HOME}が使われる際に権限昇格の恐れ
- OATH Toolkitにはliboathとpam_oathという2つのコンポーネントがあります。pam_oathは通常root権限で実行され、usersfileパスの設定値はユーザーのOATHシークレット(暗号化HMACキー)を含む、rootが管理・保護するファイルを指すものと想定しています。
- ドキュメントではroot所有の/etc/users.oathを使用して、それに対しchmod go-rw /etc/users.oathを実行することを推奨しています。設計では、認証されていないユーザーによる悪意のある読み取りまたは書き込みを防止するためのファイル権限が設定されているものと想定しています。ファイル権限が正しく設定されているかどうかは、コードによってチェックされません。
- 認証が成功するとファイルはOTPリプレイ攻撃を防止するために書き換えられます。書き換えるためのロジックは、新しく作成された*.lockファイル(同じディレクトリ内)でPOSIX file lockを取得し、新しく作成された*.newファイル(これも同じディレクトリ内)にファイルの内容を書き込むことによって機能します。新しいファイルのオーナーは元のファイルと同じに設定されます。元のusersfileは、新しく作成されたファイルに自動的に置き換えられます。
- しかしusersfileパラメータに${HOME}変数が導入されたことにより、設計上の想定が当てはまらなくなりました。この機能は2021-05-01にリリースされた2.6.7で追加されています。usersfileパラメータで${HOME}が使用される場合、一般的な設定(usersfile=${HOME}/.config/oath.secrets など)ではユーザーが自分の資格情報を管理できるようになります。ファイルのオーナーはシークレットを追加し、ファイルの読み取り/書き込み権限を適切に設定する責任があるユーザーです。
- このセキュリティの問題は簡単に悪用できます。脆弱なバージョンと構成で脆弱性を実証するには、/etc/shadowなどの特権ファイルを指すシンボリックリンクとして$HOME/.config/oath.secrets.new を作成します。ユーザーとして正常にログインすると、pam_oath/liboathはシンボリックリンクをたどり、更新された新しいOATH 資格情報を使用してターゲットファイルを書き換え、そのファイルの所有権をユーザーに設定します。これで、ユーザーは/etc/shadow を変更できるようになります。
- この欠陥が悪用された事例は現時点では確認されていません。
主なディストリビューションの対応方法
詳細は、各ディストリビューションの提供元にご確認ください
- Debian
- Red Hat Enterprise Linux/CentOS
- Ubuntu
- SUSE/openSUSE
対処方法
各ディストリビューションの案内に従い、アップデートを行ってください。