| タイトル | Apache Software FoundationのPolarisにおける複数の脆弱性 |
|---|---|
| 概要 | 平易に言えば、Apache Polarisは短期間有効なGCS認証情報を発行することが期待されています。これは単一のテーブルのファイルにのみ有効ですが、細工されたネームスペースやテーブル名によって、これらの認証情報が構成されたバケット全体で有効になってしまう可能性があります。Apache Polarisは、要求されたテーブルのストレージパスへのアクセスを制限することを意図したCEL条件を持つCredential Access Boundary(CAB)を作成することで、Google Cloud Storageのダウンスコープド認証情報を構築しています。関連するCEL文字列はバケット名とテーブルパスから構築されます。このテーブルパスはネームスペースおよびテーブル識別子に由来します。現在のコードでは、そのパスがエスケープされることなくCEL式に挿入されているようです。その結果、単一引用符と他のURI安全なCELの断片を含むネームスペースまたはテーブル識別子が、意図された引用文字列から抜け出しCEL条件の意味を変えてしまう可能性があります。実際のGoogle Cloud Storage上のPolaris 1.4.0に対するプライベートテストでは、Polarisが細工された識別子を受け入れ、CELパス制限が実質的に崩壊した委譲GCS認証情報を返すことが確認されました。これらの委譲認証情報により、別のテーブルのオブジェクトプレフィックスの一覧表示、別のテーブルのメタデータ制御ファイル(IcebergメタデータJSON)の読み取り、別のテーブルのオブジェクトプレフィックス下のオブジェクトの作成および削除、さらには任意のテーブルパスに属さない同一バケット内の無関係な外部プレフィックス下のオブジェクトの一覧表示、読み取り、作成、削除も可能となります。特に重要なのは、この問題が「別のテーブル」に限定されないことです。確認された環境では、Apache Polarisが細工されたテーブルの認証情報を返した時点で、構成されたバケット内のパス制限が事実上無効になりました。実際の影響としては、細工された単一テーブルの一時的認証情報がPolarisが認可しようとしたテーブルよりも広範囲になり、構成されたバケット内で事実上バケット全体に及んでしまいます。現在のGCSテストでは、設定のために広範なカタログ権限を持つPolarisプリンシパルを使用しました。Least-privilegeなPolaris RBACバリアントはまだGCS上でテストされていません。しかし、ストレージ認証情報の広範囲化自体はGCS上で確認されています。 |
| 想定される影響 | 当該ソフトウェアが扱う全ての情報が外部に漏れる可能性があります。 また、当該ソフトウェアが扱う全ての情報が書き換えられる可能性があります。 さらに、当該ソフトウェアが完全に停止する可能性があります。 そして、この脆弱性を悪用した攻撃により、他のソフトウェアにも影響が及ぶ可能性があります。 |
| 対策 | 正式な対策が公開されています。ベンダ情報を参照して適切な対策を実施してください。 |
| 公表日 | 2026年5月4日0:00 |
| 登録日 | 2026年5月14日10:12 |
| 最終更新日 | 2026年5月14日10:12 |
| CVSS3.0 : 緊急 | |
| スコア | 9.9 |
|---|---|
| ベクター | CVSS:3.0/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H |
| Apache Software Foundation |
| Polaris 1.4.1 未満 |
| No | 変更内容 | 変更日 |
|---|---|---|
| 1 | [2026年05月14日] 掲載 |
2026年5月14日10:12 |
| 概要 | In plain terms, Apache Polaris is supposed to issue short-lived GCS credentials Apache Polaris builds Google Cloud Storage downscoped credentials by creating a The relevant CEL string is built from the bucket name and the table path. As a result, a namespace or table identifier containing a single quote and In private testing against Polaris 1.4.0 on real Google Cloud Storage, it was confirmed that Polaris accepted a crafted identifier and returned delegated Those delegated credentials could then: - list another table's object prefix; - read another table's metadata control file (Iceberg metadata JSON); - create and delete an object under another table's object prefix; - and also list, read, create, and delete objects under an unrelated That last point is important. The issue is not limited to "another table". The practical effect is that temporary credentials for one crafted table The current GCS testing used a Polaris principal with broad catalog |
|---|---|
| 公表日 | 2026年5月5日2:16 |
| 登録日 | 2026年5月5日4:07 |
| 最終更新日 | 2026年5月6日4:32 |