Red Hat Quayの署名鍵を認証なしで奪える脆弱性、回避策あり
Red Hat Quayに、認証なしで攻撃者の署名鍵を登録でき、非公開イメージの読み書きやタグの置き換えに至る脆弱性が公表されました。/keysに信頼できないクライアントが届く環境では、プロキシでの遮断とログの確認を今すぐ行ってください。
急ぎ度: 至急
CVSS v3は9.8で、認証なしにネットワーク越しで悪用でき、公表は昨日と日が浅い一方、修正版の提供状況はRed Hatの告知で確認する必要があるためです。
関係があるか
Red Hat Quayを運用していて、サービス鍵を扱う/keysエンドポイントに信頼できないクライアントが届く環境が影響を受けます。レジストリを社外に公開している組織は、特に優先して確認してください。
| 製品 | 影響を受ける版 | 修正版 |
|---|---|---|
| Red Hat Quay 3 | CVEの記録に影響ありと記載されています。該当するマイナー版や構成の範囲は、Red Hatのセキュリティ情報で確認してください。 | 修正ビルドへの更新が必要です。版番号と提供状況はRed Hatのセキュリティ情報で確認してください。 |
| Red Hat Quay 5 | CVEの記録に影響ありと記載されています。該当する版の範囲は、Red Hatのセキュリティ情報で確認してください。 | 修正ビルドへの更新が必要です。版番号と提供状況はRed Hatのセキュリティ情報で確認してください。 |
確かめ方
- 1運用中のQuayが3系か5系かを、導入時の記録や管理者向けの画面で確認します。
- 2ロードバランサーやリバースプロキシの設定を見て、
/keysに社外や一般の利用者のネットワークから届くかを確認します。届くなら、影響を受ける構成に当たります。
何が起きたか
Red Hat Quayのサービス鍵の管理機能に不備があり、認証を受けていないクライアントが、レジストリのトークンに署名する鍵を自分のものにすり替えられます。すり替えに成功すると、どのリポジトリ向けのトークンも自由に作れるため、非公開イメージの読み書きやタグの置き換えが可能になります。
原因は、鍵の更新(ローテーション)を受け付けるときの確認が甘いことです。呼び出し元の確認は、承認済みのサービス鍵で署名されたJWTで、想定された発行先(audience)と発行者(issuer)を持っているかどうかだけです。そのトークンが鍵更新のための資格かどうかは見ていません。/v2/authが誰にでも発行する匿名トークンが、この条件を満たしてしまいます。
新しく登録された鍵は承認済みの扱いを引き継ぎ、有効期限なしでも作れます。そのため、この鍵で署名された偽のトークンが、全リポジトリで受け付けられてしまいます。CWEはCWE-1287(入力の型の検証不備)です。Red Hatのセキュリティ担当者が見つけ、CVSS v3 9.8(Critical)を暫定評価として付けています。
攻撃の流れ
-
1
匿名トークン入手
認証なしのクライアントが、レジストリから匿名トークンを受け取ります。
-
2
鍵更新の受理
鍵更新の窓口が、そのトークンを正規の資格と取り違えて受け付けます。
-
3
不正な鍵が承認済みに
攻撃者の署名鍵が、有効期限なしの承認済みサービス鍵として登録されます。
-
4
偽トークンが通用
その鍵で署名したトークンが任意のリポジトリで受理され、読み書きとタグの置き換えが可能になります。
どう悪用されるか
悪用に認証は要りません。ネットワーク越しに、利用者の操作なしで、特別な条件もなく実行できます。前提は、攻撃者のクライアントから/keysエンドポイントに届くことです。Red Hatは、信頼できないクライアントから/keysに届く構成が影響を受けると説明しています。
悪用されると、非公開イメージの内容が読み取られ、イメージの書き込みやタグの置き換えもできます。タグが別のイメージを指すようにされると、そのタグを使って取得する側に、すり替えられたイメージが配られるおそれがあります。CVSSでは機密性・完全性・可用性のすべてが高と評価されています。
今すぐやること
-
1
`/keys`に届く範囲を確認し、届くなら遮断する
ロードバランサーやプロキシの設定を見て、信頼できないクライアントから
/keysに届くかを確認します。届く場合は、修正版の確認より先に遮断します。 -
2
監査ログで不審な鍵の操作を調べる
service_key_rotateとservice_key_deleteのイベントのうち、expiration_dateがnullのものを探します。身に覚えのない承認済みサービス鍵があれば削除します。ただし、削除だけでは持続的な対策になりません。匿名のリクエストで同じ鍵をもう一度登録できるためで、修正ビルドを適用するまでは遮断を続けてください。 -
3
修正ビルドの提供状況を確認して適用する
Red HatのCVE情報ページとBugzillaの記録で、使っているQuayの系統の修正ビルドを確認します。提供されていれば、検証環境で動作を確かめてから本番に適用します。
-
4
不審な鍵が見つかったときはイメージを照合する
怪しい鍵の登録が見つかったら、重要なタグが指すイメージのダイジェストを、ビルドやリリースの記録と照合します。差し替えがあれば、そのイメージを使ったデプロイ先も調べます。
修正版がないあいだのつなぎ
プロキシまたはロードバランサーで/keysへのアクセスを制限し、信頼できる社内のコンポーネントだけが届くようにします。修正ビルドを適用するまで、この制限を外さないでください。
背景
Quayはコンテナイメージを保管して配るレジストリで、ビルドしたイメージを本番のクラスターに届ける途中に置かれます。取得や書き込みの権限は、Quayが発行するトークンで表されます。そのトークンに署名する鍵を管理するのが、今回の脆弱性が関わるサービス鍵の仕組みです。
今回の問題は、特定のアカウントやリポジトリの権限を奪うものではありません。署名鍵の登録を乗っ取る点が重く、鍵を手に入れた側は、リポジトリごとの権限設定とは関係なく、任意のリポジトリ向けトークンを自前で作れます。タグの置き換えも含まれるため、侵害に気づかないまま、デプロイのたびに差し替え後のイメージが配られる状況も考えられます。
よくある質問
Q.CVSS 9.8は確定した評価ですか。
Q.Quayを社内ネットワークだけで使っていれば、対象外と考えてよいですか。
/keysに届く構成が影響を受けるというものです。社内限定でも、社内の端末や他のシステムから届くなら、その端末が侵害された場合に同じ状況になりえます。/keysに届く範囲を実際に確認して判断してください。この記事は、取得元の公開情報をもとに、人が監修しながらAIを活用して執筆しています。執筆と監修は佐々木 航が担い、公開したあとも人が内容を確認しています。誤りに気づいたときは直し、記事の末尾に訂正の行を残します。対応を決める前に、下の原文と参照先も確認してください。
影響パッケージ
| パッケージ | 影響を受ける版 → 修正版 | |
|---|---|---|
| Red HatRed Hat Quay 3 | — | 記載なし |
| Red HatRed Hat Quay 5 | — | 記載なし |
| Red HatRed Hat Quay 3.10 | — | 記載なし |
| Red HatRed Hat Quay 3.14 | — | 記載なし |
| Red HatRed Hat Quay 3.15 | — | 記載なし |
| Red HatRed Hat Quay 3.16 | — | 記載なし |
| Red HatRed Hat Quay 3.18 | — | 記載なし |
| Red HatRed Hat Quay 3.9 | — | 記載なし |
| Red HatRed Hat Quay 3.12 | — | 記載なし |
| Red HatRed Hat Quay 3.17 | — | 記載なし |
| Project Quayquay |
3.9.28 未満→ 3.9.28 3.10.0 以上 3.10.28 未満→ 3.10.28 3.12.0 以上 3.12.24 未満→ 3.12.24 3.14.0 以上 3.14.10 未満→ 3.14.10 3.15.0 以上 3.15.9 未満→ 3.15.9 3.16.0 以上 3.16.7 未満→ 3.16.7 3.17.0 以上 3.17.7 未満→ 3.17.7 3.18.0 以上 3.18.3 未満→ 3.18.3 |
3.9.28 3.10.28 3.12.24 3.14.10 3.15.9 3.16.7 3.17.7 3.18.3 |
原文の説明 取得元が公開している説明をそのまま載せています (多くは英語)。
A flaw was found in Red Hat Quay. An unauthenticated client can obtain an anonymous registry token with an audience it controls, present that token to the service key rotation endpoint, and install its own approved signing key with no expiry. Registry tokens signed with that key are accepted for any repository, allowing read and write access to private images and replacement of repository tags.
出典: CVE.org (CVE Program・cvelistV5) NVD GitHub Advisory
参照URL
- web secalert@redhat.com
- web secalert@redhat.com
- web nvd.nist.gov
- web github.com
- web secalert@redhat.com
- web secalert@redhat.com
- web secalert@redhat.com
- web secalert@redhat.com
- web secalert@redhat.com
- web secalert@redhat.com
- web secalert@redhat.com
- web secalert@redhat.com
- web secalert@redhat.com