---
id: "CVE-2026-92287"
kind: "vulnerability"
aliases: ["CVE-2026-92287"]
title: "Apache Parquet and PyArrow: file-controlled KMS URL can leak tokens to attacker host"
severity: "medium"
cvss: null
epss: null
exploited: false
status: "open"
category: "package"
products: []
ecosystems: []
tags: ["apache-parquet", "encryption", "kms", "package", "pyarrow", "python"]
not_affected_if: ["kms-url-set-in-config", "managed-hosting", "unencrypted-parquet"]
published_at: "2026-10-20T09:17:12+00:00"
first_seen_at: "2026-10-23T21:57:20+00:00"
updated_at: "2026-10-25T05:04:55+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-92287", "first_seen_at": "2026-10-23T21:57:20+00:00"}]
---

# Apache Parquet and PyArrow: file-controlled KMS URL can leak tokens to attacker host

Apache Parquet C++ and PyArrow 4.0.0 through 25.0.1 forward a KMS URL taken from the Parquet file itself to a pluggable KmsClient. If that KmsClient does not validate hosts, a KMS token can be sent to an attacker-chosen server.

_Summary, check and fix written by a model from the sources; labelled as such._

## How to check

- Check the installed `pyarrow` version with `python -c "import pyarrow; print(pyarrow.__version__)"`, affected range 4.0.0 to 25.0.1
- Search code for Parquet decryption using a custom KmsClient implementation and check whether `KmsConnectionConfig` sets a KMS URL explicitly

## Fix

- Upgrade PyArrow and Apache Parquet C++ to `26.0.0` or later, where file-controlled KMS URLs are disabled by default
- On affected versions, set the KMS URL in `KmsConnectionConfig` when reading files, or make the KmsClient validate received KMS URLs

## Timeline

- 2026-10-23T21:57:20+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-92287

## From the sources

Pass-through of unvalidated KMS URLs to KMS clients in Apache C++ Parquet and PyArrow versions 4.0.0 to 25.0.1.




This affects users who read Parquet files and configure Parquet decryption properties with a KmsClient implementation.




On the reader side, the KMS URL can be application-controlled (specified in the KmsConnectionConfig) or file-controlled.
If the user does not leverage application control for this parameter, a file-controlled KMS URL is forwarded to a pluggable KmsClient implementation. 
If the KMS implementation does not perform host validation and makes use of the provided KMS URL, a KMS token can be sent to a malicious host set by an attacker in the file. 




Users are recommended to upgrade to version 26.0.0, which disables this behavior by default and requires that users opt-in to it by enabling the read_kms_url flag in the DecryptionConfiguration. Users of affected versions are recommended to either specify the KMS URL in the KmsConnectionConfig when reading files, or ensure any KmsClient implementations validate received KMS URLs. Users that opt-in to file-controlled KMS URLs in version 26.0.0 and later must ensure KmsClients validate KMS URLs.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
