Apache Software FoundationのPolarisにおける複数の脆弱性
タイトル Apache Software FoundationのPolarisにおける複数の脆弱性
概要

Apache Icebergでは、テーブルのメタデータファイルは制御ファイルとして機能し、どのデータファイルがテーブルに属し、どのテーブルバージョンをリーダーが読むべきかを伝えます。`write.metadata.path`はオプションのテーブルプロパティであり、Polarisにこれらのメタデータファイルを書き込む場所を指示します。Polaris管理カタログに既に登録されているテーブルに対し、そのプロパティだけを`ALTER TABLE`スタイルの設定変更(行レベルの`INSERT`、`SELECT`、`UPDATE`、`DELETE`ではない)で変更すると、ストレージ場所の再検証を行うはずのコミット時の分岐処理をバイパスしてしまいます。完全な永続化版またはクレデンシャル発行版は、対象のカタログが`polaris.config.allow.unstructured.table.location=true`を有効にしており、`allowedLocations`が攻撃者の指定したターゲットを含むほど幅広く設定されている必要があります。`allowedLocations`は、カタログが使用可能なストレージパスの管理者設定許可リストです。公開されているプロジェクト資料によると、このフラグは単なる実験環境の前提ではなく、実際にサポートされている互換性およびレイアウトモードです。この設定下では、テーブル設定を変更可能なユーザーがApache Polaris自体に新しいテーブルメタデータを攻撃者が指定したアクセス可能なストレージ場所へ書き込ませることが可能です。そして、本来の場所検証処理が走る前にその操作が実行されます。もし後続の具体的なパス検証でも当該場所を受け入れた場合、Polarisは生成されたメタデータパスを保存されたテーブル状態に永続化します。その後のテーブル読み込みやクレデンシャルAPIは、その場所の一時的なクラウドストレージ認証情報を再検証せずに返すことができます。簡単に言うと、Polarisは後に攻撃者指定の領域の一時的ストレージアクセスを付与しうるということです。攻撃者指定の領域は、汚染されたテーブル自身のファイルにとどまらず、広範なストレージプレフィックス、他のテーブルのプレフィックス、構成やプロバイダの挙動次第ではバケットやコンテナのルートまで及ぶ可能性があります。その結果、Polarisが到達可能なあらゆるデータおよびメタデータの漏洩や改ざんの範囲が拡大します。実際の影響は既に議論されたステージド作成型クレデンシャル発行問題と類似し、そのストレージ範囲内のデータやメタデータは露出し、後に書き込み可能な認証情報が発行されれば改変・破壊・削除もされる可能性があります。後の認証情報発行のステップより前であっても、Polaris自身が検証されていない場所にメタデータを書き込みます。したがって、問題の核心は単に後の認証情報発行だけではありません。主要な欠陥は、`write.metadata.path`が変更された場合にPolarisが本来の場所チェックをスキップしてしまう点にあります。`polaris.config.allow.unstructured.table.location=false`の場合、現在のコードレビューによれば、後続の`updateTableLike(...)`検証は通常、危険なパスが永続化される前に不正なメタデータ場所を拒否します。これは永続化や認証情報発行のバリエーションを減少させる可能性がありますが、根本的な欠陥を防止することはできません。つまり、`write.metadata.path`だけが変更された場合、Polarisは本来の書き込み前の場所検証を依然としてスキップしてしまいます。

想定される影響 当該ソフトウェアが扱う全ての情報が外部に漏れる可能性があります。 また、当該ソフトウェアが扱う全ての情報が書き換えられる可能性があります。 さらに、当該ソフトウェアが完全に停止する可能性があります。 そして、この脆弱性を悪用した攻撃により、他のソフトウェアにも影響が及ぶ可能性があります。 
対策

正式な対策が公開されています。ベンダ情報を参照して適切な対策を実施してください。

公表日 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 未満
CVE (情報セキュリティ 共通脆弱性識別子)
CWE (共通脆弱性タイプ一覧)
ベンダー情報
変更履歴
No 変更内容 変更日
1 [2026年05月14日]
  掲載
2026年5月14日10:12

NVD脆弱性情報
CVE-2026-42812
概要

In Apache Iceberg, the table's metadata files are control files: they tell readers
which data files belong to the table and which table version to read.

`write.metadata.path` is an optional table property that tells Polaris
where to
write those metadata files.
For a table already registered in a
Polaris-managed
catalog, changing only that property through an `ALTER TABLE`-style settings
change (not a row-level `INSERT`, `SELECT`, `UPDATE`, or `DELETE`) bypasses
the commit-time branch that is supposed to revalidate storage locations.

The full persisted / credential-vending variant requires the affected
catalog
to have `polaris.config.allow.unstructured.table.location=true`, with
`allowedLocations` broad enough to include the attacker-chosen target.

`allowedLocations` is the admin-configured allowlist of storage paths that
the
catalog is allowed to use. Public project materials suggest that this flag
is a
real supported compatibility / layout mode, not just a contrived lab-only
prerequisite.

In that configuration, a user who can change table settings can cause Apache Polaris
itself to write new table metadata to an attacker-chosen reachable storage
location before the intended location-validation branch runs.

If the later concrete-path validation also accepts that location, Polaris
persists the resulting metadata path into stored table state. Later
table-load
and credential APIs can then return temporary cloud-storage credentials for
the
same location without revalidating it. In plain terms, Polaris can later
hand
out temporary storage access for the same attacker-chosen area.

That attacker-chosen area does not need to be limited to the poisoned
table's
own files. If it is a broader storage prefix, another table's prefix, or,
depending on configuration or provider behavior, even a bucket/container
root,
the resulting disclosure or corruption scope can extend to any data and
metadata Polaris can reach there.

The practical consequences are therefore similar to the staged-create
credential-vending issue already discussed: data and metadata reachable in
that
storage scope can be exposed and, if write-capable credentials are later
issued, modified, corrupted, or removed. Even before that later credential
step, Polaris itself performs the metadata write to the unchecked location.

So the core issue is not only later credential vending.

The primary defect
is
that Polaris skips its intended location checks before performing a
security-
sensitive metadata write when only `write.metadata.path` changes.

When `polaris.config.allow.unstructured.table.location=false`, current code
review suggests the later `updateTableLike(...)` validation usually rejects
out-of-tree metadata locations before the unsafe path is persisted. That may
reduce the persisted / credential-vending variant, but it does not prevent
the
underlying defect: Polaris still skips the intended pre-write location check
when only `write.metadata.path` changes.

公表日 2026年5月5日2:16
登録日 2026年5月5日4:07
最終更新日 2026年5月6日4:32
関連情報、対策とツール
共通脆弱性一覧