Apache Polaris writes metadata to attacker-chosen path (CVE-2026-42812)
CVE-2026-42812
CVE-2026-42812 (CVSS 9.9): Apache Polaris skips storage-location checks on metadata writes, exposing reachable data and metadata. Patch to 1.3.1 or set `allow.unstructured.table.location=false`.
Patch now - CVE-2026-42812 is a critical metadata-path bypass in Apache Polaris (Polaris-based Iceberg catalog) that lets users with table-settings permissions write table metadata to an attacker-chosen storage location and later receive temporary credentials for that unauthorized area. Patched in Polaris 1.3.1; apply the update or the configuration mitigation immediately.
Overview
CVE-2026-42812 affects Apache Polaris when it catalogs tables that use the write.metadata.path table property. This property controls where a table’s metadata files are written — the control files that tell readers which data files belong to the table and which version of the table to read.
When an attacker with ALTER TABLE-style permissions changes only this property (not performing any row-level operations), the commit-time branch that revalidates storage locations is bypassed. Polaris proceeds to write metadata to the attacker-selected path without checking whether that location is permitted by the allowedLocations admin allowlist.
For the full credential-vending variant to work, the catalog must have polaris.config.allow.unstructured.table.location=true and allowedLocations must be broad enough to include the attacker’s chosen target. However, the core defect — skipping the pre-write location check when only write.metadata.path changes — exists regardless of that configuration.
Impact
An attacker who can change table settings can cause Polaris to:
- Write table metadata to an attacker-controlled storage location (the primary defect — not just a credential leak)
- Later receive temporary cloud-storage credentials scoped to that same unauthorized location
- Potentially read, modify, or delete any data and metadata Polaris can reach at that location, including other tables’ prefixes or bucket roots depending on configuration
Severity is CRITICAL with a CVSS score of 9.9 (NETWORK, LOW complexity, LOW privileges required, NO user interaction).
Affected Versions
- Apache Polaris (Polaris-managed Iceberg catalogs) versions prior to 1.3.1
Remediation
Immediate mitigation: Set polaris.config.allow.unstructured.table.location=false in your Polaris catalog configuration. This prevents the persisted / credential-vending attack path.
Complete fix: Upgrade to Polaris 1.3.1 or later, which enforces location validation before the metadata write occurs, even when only write.metadata.path changes.
Review allowedLocations: If you use broad path patterns in your storage allowlist (e.g., entire buckets), narrow them as much as possible to limit the blast radius of any similar bypass.
Security Insight
CVE-2026-42812 follows the pattern seen in CVE-2026-34197 against Apache ActiveMQ, where a catalog or broker control-plane operation bypasses validation that a data-plane operation would receive. The root cause is a persistent class of vulnerability in distributed storage systems: separating the validation logic for “configuration change” from “data mutation” creates a gap that attackers can exploit by choosing the operation that skips the check. For organizations using Iceberg catalogs, this underscores the importance of treating metadata-path controls as security boundaries, not just configuration conveniences.
Further Reading
Never miss a critical vulnerability
Get real-time security alerts delivered to your preferred platform.
Related Advisories
DbGate is cross-platform database manager. In versions 7.1.8 and prior, DbGate's JSON script runner (`POST /runners/start`) allows remote code execution via code injection in the `functionName` parame...
A critical remote code execution (RCE) vulnerability has been reported in PTC Windchill PDMlink and PTC FlexPLM. The vulnerability may be exploited through the deserialization of untrusted data. * ...
PraisonAI is a multi-agent teams system. Prior to version 4.6.34, PraisonAI's MCP (Model Context Protocol) server (praisonai mcp serve) registers four file-handling tools by default — praisonai.rules....
Lack of user input sanitisation in Open Notebook v1.8.3 allows the application user to execute Python code (and subsequently OS commands) on the docker container via Server-Side Template Injection (SS...