This is an automated email from the ASF dual-hosted git repository.
okumin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hive.git
The following commit(s) were added to refs/heads/master by this push:
new 386cc3cad05 HIVE-29706: Add AGENTS.md, SECURITY.md, and
THREAT_MODEL.md (#6535)
386cc3cad05 is described below
commit 386cc3cad057eb79c433105a7f48c3433d8d66b5
Author: Jarek Potiuk <[email protected]>
AuthorDate: Thu Jul 9 05:28:19 2026 +0200
HIVE-29706: Add AGENTS.md, SECURITY.md, and THREAT_MODEL.md (#6535)
* Add security threat model (THREAT_MODEL.md) + SECURITY.md / AGENTS.md
discoverability
v0 threat model produced by the ASF Security team via threat-model-producer
(Michael Scovetta rubric, run with Claude Opus) for the PMC to review,
correct,
and own. Wires the AGENTS.md -> SECURITY.md -> THREAT_MODEL.md
discoverability
chain the scan agent follows. Every non-trivial claim is provenance-tagged;
open questions for the PMC are collected in THREAT_MODEL.md section 14.
Generated-by: Claude Opus 4.8 (1M context)
* THREAT_MODEL.md: fold in Hive PMC review answers
Incorporates okumin's PR #6535 review:
- direct Hive Metastore access in scope (HMS enforces caller authz at the
application level; Spark et al. connect directly) -> §3.3/§4/§11a
- UDF/SerDe/TRANSFORM code-execution detail: built-in UDF blacklist
(reflect/reflect2/java_method/in_file), custom UDF/SerDe admin trust,
TRANSFORM disable via DisallowTransformHook -> §7/§8/§11a
- §14 Q1/Q2 promoted to maintainer; Q7/Q9/Q12 annotated PMC-reviewing
Generated-by: Claude Opus 4.8
* Add §14 Q15 — okumin's question on splitting HS2 vs Hive Metastore into
separate threat models (different security models/params)
* THREAT_MODEL.md: fold in okumin's 2026-06-27 review answers
§3/§4/§7 adversaries, trusted deps, query-resource bounding; §14
Q3/Q4/Q5/Q11 marked answered.
Generated-by: Claude Code (Claude Opus 4.7)
* THREAT_MODEL.md: fold in PMC answers to the §14 open questions
Apply the Hive PMC's (okumin) answers to the model's open questions:
promote the resolved §4/§5/§6/§7 claims from (inferred) to (maintainer);
reorganize §8 into HiveServer2 / Web UI / Metastore / Credentials blocks
with the maintainer-supplied parameter names; add the secret-exposure
known non-finding to §11a; record the in-repo model as canonical. Also
update AGENTS.md's primary-boundary line per the PMC's wording.
Generated-by: Claude Code (Claude Opus 4.8)
* Apply suggestions from code review
Co-authored-by: Shohei Okumiya <[email protected]>
* Apply suggestion from @okumin
---------
Co-authored-by: Shohei Okumiya <[email protected]>
---
AGENTS.md | 53 ++++++++
SECURITY.md | 40 ++++++
THREAT_MODEL.md | 407 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 500 insertions(+)
diff --git a/AGENTS.md b/AGENTS.md
new file mode 100644
index 00000000000..fa922c6248e
--- /dev/null
+++ b/AGENTS.md
@@ -0,0 +1,53 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to you under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+# AGENTS.md
+
+## Security
+
+You are helping a security researcher find and report vulnerabilities in
+Apache Hive. Before drafting any report or reaching any conclusion, complete
+these steps.
+
+### Step 1 — Read the threat model
+Read **[THREAT_MODEL.md](THREAT_MODEL.md)**: the trust boundaries (the
+HiveServer2 SQL front door, the Metastore, the query/UDF execution layer), the
+adversaries in and out of scope, and what Hive upholds versus what it leaves to
+the operator.
+
+### Step 2 — Read the security policy
+Read **[SECURITY.md](SECURITY.md)** for how to report.
+
+### Key scoping facts (see THREAT_MODEL.md)
+- The **HiveServer2** SQL front door and directly exposed **Hive Metastore**
+ endpoints are the primary untrusted boundaries; execution clusters and
+ internal service dependencies are assumed to run inside an
operator-controlled
+ perimeter.
+- **UDFs, SerDes, custom InputFormats, and `TRANSFORM` scripts are
+ code-execution by design**, not a sandbox — running authorized code is a
+ feature, not a vulnerability.
+- Transport security (TLS), the choice of authorization model (Ranger /
+ SQL-standard / storage-based), and network isolation are **operator**
+ responsibilities, not engine invariants.
+- Hive does **not** defend against an operator with `root`, the Hadoop
+ superuser, or direct HDFS / metastore-DB access.
+
+### Step 3 — Route the finding
+Route the finding to exactly one disposition in **THREAT_MODEL.md §13**
+(VALID, or one of the `OUT-OF-MODEL` / `BY-DESIGN` dispositions) and cite the
+section that justifies the call. This model is **v0** — open questions for the
+PMC are in §14.
diff --git a/SECURITY.md b/SECURITY.md
new file mode 100644
index 00000000000..bbb3a013e15
--- /dev/null
+++ b/SECURITY.md
@@ -0,0 +1,40 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to you under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+# Security Policy
+
+## Reporting a Vulnerability
+
+Please report suspected security vulnerabilities in Apache Hive **privately**
+to the Hive security list at `[email protected]`, following the
+[Apache Software Foundation security
process](https://www.apache.org/security/).
+Do **not** open public GitHub issues or pull requests for security reports — a
+private report lets the issue be investigated and fixed before disclosure.
+
+## Threat Model
+
+A threat model for Apache Hive is maintained in
+[THREAT_MODEL.md](THREAT_MODEL.md). It describes the trust boundaries (the
+HiveServer2 SQL front door, the Metastore, the query/UDF execution layer), the
+adversaries in and out of scope, the security properties Hive upholds given its
+deployment assumptions versus those left to the operator (transport security,
+authorization-model choice, network isolation, UDF vetting), and the recurring
+non-findings. Triagers of scanner, fuzzer, or AI-generated findings should
+route each through `THREAT_MODEL.md` §13.
+
+This file is **v0** and carries open questions for the Hive PMC in
+`THREAT_MODEL.md` §14.
diff --git a/THREAT_MODEL.md b/THREAT_MODEL.md
new file mode 100644
index 00000000000..a6350cd24bc
--- /dev/null
+++ b/THREAT_MODEL.md
@@ -0,0 +1,407 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to you under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+# Apache Hive — Threat Model (v0 draft)
+
+> **Status:** v0 draft produced by the ASF Security team (Michael Scovetta
+> rubric, run with Claude Opus) for the Apache Hive PMC to review, correct,
+> and own. Every non-trivial claim is provenance-tagged
+> *(documented)* / *(maintainer)* / *(inferred)*; the *(inferred)* tags are
+> the producer's hypotheses and each has a matching question in §14. Written
+> against `master`; revise on a new public-facing surface (a new server
+> endpoint, auth mechanism, file format, or execution engine), not on
+> internal refactors.
+>
+> As of the PMC's 2026-07 review, **this in-repo model is the canonical Hive
+> security model**. Security information scattered across
+> <https://hive.apache.org/> predates it and may be out of date; where they
+> disagree, this document wins. *(maintainer — okumin, §14 Q14)*
+
+## §1 — Purpose and consumers
+
+This document describes the **implicit security contract** between Apache
+Hive and its downstream operators: what Hive assumes about its environment,
+what it upholds given those assumptions, what it leaves to the operator, and
+which "syntactically possible" misuses fall outside the intended design. It
+serves the **integrator/operator** (which threats they own) and the
+**triager** (classifying a scanner/AI/CVE-style finding as valid, out of
+model, or disclaimed by design — cite the section).
+
+## §2 — What Hive is
+
+Apache Hive is a **SQL data-warehouse layer over Apache Hadoop** *(documented:
+README)*. The in-scope component families:
+
+| Component | Role | Primary surface |
+| --- | --- | --- |
+| **HiveServer2 (HS2)** | the SQL front door — accepts queries over a
Thrift/binary or HTTP transport, authenticates the session, compiles +
authorizes + executes | network (the highest-value untrusted boundary)
*(inferred — §14 Q1)* |
+| **Hive Metastore (HMS)** | a Thrift service holding table/partition/schema
metadata + storage locations | network (intra-cluster) *(inferred — §14 Q1)* |
+| **Query compiler + execution** | parse → plan → run on Tez / MapReduce /
Spark; reads/writes HDFS, HBase, object stores | depends on the configured
engine *(documented: README)* |
+| **UDF / SerDe / file-format layer** | user-supplied or built-in functions
and (de)serializers invoked during execution | in-JVM code execution *(inferred
— §14 Q2)* |
+| **JDBC/ODBC drivers + Beeline** | client-side connectors | client trust
domain |
+
+Hive is **not** a standalone secured appliance: it is a clustered service
+deployed behind an operator-controlled perimeter, depending on Hadoop (HDFS,
+YARN), a metastore RDBMS, an external authorization provider (typically Apache
+Ranger in production deployments, though SQL-standard authorization may also be
+used), and a KDC for Kerberos — all treated as trusted dependencies.
+*(maintainer — okumin, §14 Q3)*
+
+## §3 — Adversaries in and out of scope
+
+**In scope**:
+
+1. **Untrusted clients at Hive's service boundaries** — a **SQL client**
+ submitting statements to HiveServer2, and a **client accessing the Hive
+ Metastore through its supported APIs** — attempting to read/modify data
+ outside their authorization, or to reach the host through query features.
+ *(maintainer — okumin, §14 Q4)*
+2. A **network MITM** on the client↔HS2 or HS2↔HMS path, **in scope when TLS
+ (or equivalent transport protection) is enabled**; the operator is
+ responsible for configuring TLS correctly. *(maintainer — okumin, §14 Q4)*
+3. A **direct Metastore (HMS) client.** Some external services (e.g. Apache
+ Spark) connect to the Hive Metastore directly, so HMS is expected to enforce
+ caller authorization at the **application level** — it is not merely an
+ intra-cluster service shielded by a network perimeter. A client reaching HMS
+ outside its authorization is in-model. *(maintainer — okumin, §14 Q1.)*
+
+**Out of scope** *(maintainer — okumin, §14 Q5)*:
+
+4. **An operator with `root` / the Hadoop superuser / direct HDFS or
metastore-DB
+ access.** Anyone who already controls the storage layer or the cluster
+ processes is not an adversary Hive defends against → `OUT-OF-MODEL:
+ adversary-not-in-scope`.
+5. **A trusted authenticated admin** performing an authorized action (creating
a
+ function, changing config, granting a role). A new path to a privilege the
+ principal already holds is `OUT-OF-MODEL: equivalent-harm`.
+6. **Bugs in the dependencies Hive orchestrates** — Hadoop/HDFS, YARN, Tez,
+ the metastore RDBMS, Ranger, the KDC, the JVM. Report upstream →
+ `OUT-OF-MODEL: unsupported-component`.
+
+## §4 — Trust boundaries
+
+- **Client → HiveServer2** is the primary boundary. In a secure, in-model
+ deployment, the operator configures authentication (Kerberos / LDAP / PAM /
+ custom, etc.) and authorization, and statements are checked by the configured
+ authorizer before execution. From HS2's point of view the **SQL
+ text, JDBC connection properties, and session-configuration overrides are all
+ untrusted**; Hive rejects non-acceptable operations through the authorization
+ plugin or through the configured deny lists — `hive.conf.restricted.list`
+ (settings an untrusted user may not change), `hive.conf.locked.list`, and
+ `hive.conf.hidden.list` (secret values an untrusted user may not read).
+ *(maintainer — okumin, §14 Q6)*
+- **HiveServer2 → Metastore** and **HS2 → execution engine / HDFS** are
+ intra-cluster boundaries. The Metastore is protected at the **application
+ level** (it enforces caller authorization), because external services such as
+ Spark talk to HMS directly (§3.3); network isolation is defense-in-depth, not
+ the primary control *(maintainer — okumin, §14 Q1)*. The HS2 → engine / HDFS
+ path is assumed inside an operator-controlled perimeter *(maintainer —
okumin, §14 Q3)*.
+- **`doAs` impersonation:** when enabled, HS2 executes work as the connected
+ end user against HDFS rather than as the Hive service principal; when
+ disabled, all access runs as the Hive principal and authorization is fully
+ delegated to the SQL-layer authorizer. Because the recommended posture uses
+ an authorization plugin (typically Apache Ranger),
**`hive.server2.enable.doAs=false`
+ is the typical / expected configuration**: HS2 enforces authorization itself
+ rather than pushing it down to per-user HDFS permissions. *(maintainer —
+ okumin, §14 Q7)*
+
+## §5 — What Hive upholds (given §3/§4 assumptions)
+
+Given valid input and a secure configuration, Hive is expected to uphold the
+following. **These properties are configuration-dependent** — they hold when
the
+operator has configured authentication, authorization, and transport protection
+per §6/§8, not by default. *(maintainer — okumin, §14 Q8)*
+
+- **Authentication.** HiveServer2 and the Hive Metastore can require clients to
+ authenticate using the configured mechanism (e.g. Kerberos, LDAP), depending
+ on the endpoint.
+- **Authorization scoping.** Requests are authorized as the authenticated Hive
+ session / metastore user through the configured authorization manager
+ (typically Apache Ranger). Decisions are scoped to Hive objects and
operations
+ — databases, tables, partitions, columns, functions, and the relevant
metadata
+ operations.
+- **Metastore authorization.** When the Hive Metastore is directly exposed to
+ clients, metastore-side authorization can be enforced through
+ `HiveMetaStoreAuthorizer` as a pre-event listener, and metadata read/list
+ results can be filtered server-side via the metastore filter hook.
+- **Transport protection.** HiveServer2, the Hive Metastore, and the HS2 Web UI
+ can protect traffic confidentiality and integrity when TLS/SSL is enabled and
+ correctly configured.
+- **Configuration protection.** Sensitive or security-critical configuration
+ values can be restricted, locked, or hidden (§4/§8 deny lists) so untrusted
+ users cannot change security posture at runtime or read secret values.
+- **Credential handling.** Secrets can be externalized through Hadoop
credential
+ providers rather than stored in cleartext configuration files.
+- **Memory safety on well-formed input** to the extent the JVM provides it;
+ Hive is Java, so classic memory-corruption is out of the language model.
+
+Hive does **not** by itself guarantee authorization for a caller who bypasses
+Hive and accesses the underlying storage or metastore database directly; those
+paths must be protected separately by HDFS / object-store / IAM / database
+controls. *(maintainer — okumin)*
+
+## §6 — What Hive leaves to the operator
+
+*(maintainer — okumin, §14 Q9)*
+
+- **Transport security (TLS)** on the HS2, Metastore, and HS2 Web UI endpoints,
+ and the KDC / LDAP server's own security.
+- **Choosing and configuring authentication.** Hive supports several
+ authentication mechanisms, such as Kerberos and LDAP, depending on the
+ endpoint. The operator is responsible for enabling appropriate authentication
+ for all exposed endpoints; otherwise, clients may be accepted without proving
+ an identity.
+- **Choosing and configuring an authorization model.** **Apache Ranger is the
+ primary authorization plugin** for Hive; storage-based and SQL-standard
+ authorization give materially different guarantees. The operator owns the
+ choice (and whether "no authorization configured" is a supported production
+ mode — it is not, for an internet- or multi-tenant-exposed deployment).
+- **Network isolation** of the metastore RDBMS and the execution cluster from
+ untrusted networks.
+- **Vetting UDFs / SerDes / aux JARs.** Adding a function or SerDe is adding
+ code to the execution JVM (see §7).
+
+## §7 — Properties Hive does *not* uphold (by design)
+
+*(maintainer — okumin, §14 Q10: confirmed)*
+
+- **A sandbox around UDFs, SerDes, custom InputFormats, or `TRANSFORM`/script
+ operators.** Code a principal is authorized to register or invoke runs with
+ the privileges of the execution process; this is a feature, not a
+ containment boundary. `BY-DESIGN: property-disclaimed`. The model assumes
+ authentication and authorization are configured; against that baseline
+ *(maintainer — okumin)*:
+ - **Built-in UDFs** are generally safe, but Hive ships a few that allow
+ arbitrary code execution (`reflect`, `reflect2`, `java_method`,
+ `in_file`). A Hive administrator must block these via
+ `hive.server2.builtin.udf.blacklist` (directly or through the
+ authorization plugin); major plugins such as the Ranger authorizer
+ configure this blacklist properly.
+ - **Custom UDFs** — the administrator must restrict, via access policies
+ (e.g. Ranger), who may add UDF jars or register UDFs. Those trusted users
+ are responsible for safe UDFs; Hive cannot guarantee safety when a
+ trusted user adds a compromised UDF.
+ - **SerDe / InputFormat / OutputFormat** — only administrators can install
+ the jars; they are responsible for deploying safe implementations, and
+ Hive trusts them. Hive cannot guarantee safety against a compromised one
+ an admin installs.
+ - **`TRANSFORM`** — in a secure deployment it must be prohibited. Major
+ authorization plugins add
+
`org.apache.hadoop.hive.ql.security.authorization.plugin.DisallowTransformHook`
+ to `hive.exec.pre.hooks`; administrators are responsible for using such a
+ plugin or configuring the hook themselves.
+- **Protection against an operator who controls the underlying storage,
+ metastore DB, or cluster processes** (see §3 item 4).
+- **Resource fairness / DoS protection as a hard guarantee.** Hive accepts
+ arbitrary HiveQL, so bounding the impact of a pathological query is an
+ operator responsibility, not a Hive bug: operators use HiveServer2 limits
+ (e.g. `hive.query.max.length`) and YARN resource pools, and — where stronger
+ isolation than HS2 + YARN can provide is required — separate HS2 instances or
+ separate Hadoop/YARN clusters. *(maintainer — okumin, §14 Q11)*
+
+## §8 — Key configuration levers (load-bearing)
+
+The security posture is configuration-dependent; the levers below are what an
+operator sets to reach the §5 properties. Organized by component per the PMC's
+structure preference (§14 Q15). *(maintainer — okumin, §14 Q12)*
+
+### §8.1 — HiveServer2
+
+- **Authentication:** `hive.server2.authentication` and the more-specific
+ `hive.server2.authentication.*` parameters must be configured properly.
+- **Authorization:** `hive.security.authorization.enabled=true` and
+ `hive.security.authorization.manager` (typically Apache Ranger). With Ranger,
+ `hive.security.authenticator.manager` should be
+ `org.apache.hadoop.hive.ql.security.SessionStateUserAuthenticator` to
authorize
+ as the HS2 session user, and `hive.server2.enable.doAs` is typically `false`.
+- **TLS:** `hive.server2.use.SSL=true` plus the more-specific TLS parameters.
+- **Config protection:** a Hive administrator should protect security-related
+ settings via `hive.conf.restricted.list`, `hive.conf.locked.list`, and
+ `hive.conf.hidden.list` so untrusted users cannot update sensitive settings
or
+ view secret values.
+- **Code-execution levers:** built-in UDF blacklist
+ `hive.server2.builtin.udf.blacklist` blocks the code-exec built-ins
+ (`reflect`, `reflect2`, `java_method`, `in_file`); `DisallowTransformHook` in
+ `hive.exec.pre.hooks` prohibits `TRANSFORM`/script operators. Major
+ authorization plugins (e.g. Ranger) configure both.
+
+Reference:
<https://hive.apache.org/docs/latest/admin/setting-up-hiveserver2/#authenticationsecurity-configuration>
+
+### §8.2 — HiveServer2 Web UI
+
+If the UI port (default `10002`) is exposed to untrusted users:
+
+- **Authentication:** at least one of `hive.server2.webui.use.spnego=true`,
+ `hive.server2.webui.use.pam=true`, or `hive.server2.webui.auth.method=LDAP`
+ (plus the more-specific parameters).
+- **TLS:** `hive.server2.webui.use.ssl=true` plus the more-specific TLS
+ parameters.
+
+### §8.3 — Hive Metastore
+
+If a Hive administrator exposes the Metastore to untrusted users or systems
+(e.g. Spark, Flink):
+
+- **Authentication:** `metastore.authentication` (e.g. `KERBEROS` or `LDAP`)
+ plus the more-specific parameters (`metastore.sasl.enabled`,
+ `metastore.kerberos.*` / `metastore.authentication.*`).
+- **Authorization:** `hive.security.authorization.manager` set to
+ `RangerHiveAuthorizerFactory` (typical), `metastore.pre.event.listeners`
+ including
+
`org.apache.hadoop.hive.ql.security.authorization.plugin.metastore.HiveMetaStoreAuthorizer`,
+ and `metastore.server.filter.enabled=true` with `metastore.filter.hook` set
to
+ the same `HiveMetaStoreAuthorizer` for server-side result filtering.
+- **TLS:** `metastore.use.SSL` plus the more-specific TLS parameters.
+
+### §8.4 — Credentials (all components)
+
+All credentials / secrets should be managed through the Hadoop
+`CredentialProviderAPI`, configured via
`hadoop.security.credential.provider.path`
+(<https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/CredentialProviderAPI.html>).
+Hive does **not** guarantee that the content of `hive-site.xml`,
+`metastore-site.xml`, environment variables, or system properties is never
+exposed — secrets placed there are the administrator's risk (see §11a).
+*(maintainer — okumin)*
+
+## §11a — Known non-findings (seed for scanner/AI triage)
+
+These are the dispositions the PMC has recorded; confirm and extend
+*(maintainer — okumin, §14 Q13)*:
+
+- Hive defaults are not a complete secure-production baseline; some defaults
+ prioritize ease of adoption, compatibility, or trusted/local deployments.
+ Operators are responsible for enabling and correctly configuring
authentication,
+ authorization, transport security, network isolation, and related controls
for
+ internet-exposed or multi-tenant production deployments. `OUT-OF-MODEL:
+ operator responsibility`
+- **"Secrets are exposed in `hive-site.xml` / `metastore-site.xml` /
environment
+ variables / system properties."** By design not a Hive defect — a Hive
+ administrator who stores secrets in those places has chosen the wrong
+ mechanism. Secrets should be managed through the Hadoop
`CredentialProviderAPI`
+ (§8.4). Hive does not guarantee the content of those config surfaces is never
+ exposed. `OUT-OF-MODEL: operator responsibility`. *(maintainer — okumin.)*
+- **"A UDF / `TRANSFORM` script / custom SerDe can run arbitrary code."**
+ By design — registering or invoking code is an authorized operation, not a
+ sandbox escape. `BY-DESIGN`.
+- **"A built-in UDF (`reflect`/`reflect2`/`java_method`/`in_file`) enables code
+ execution."** By design — these are blocked by the administrator via
+ `hive.server2.builtin.udf.blacklist` (Ranger does this). Reachable only when
+ the operator has not configured the blacklist → `OUT-OF-MODEL:
+ operator responsibility`, unless the report shows a
+ *bypass* of a configured blacklist. *(maintainer — okumin.)*
+- **Dependency-tail CVEs** (Hadoop, Log4j, a transitive JAR) surfaced by an
+ SCA scanner against Hive's build — triage upstream unless Hive's own code
+ reaches the vulnerable path with untrusted input.
+
+## §13 — Triage dispositions
+
+A finding is **VALID** only when all hold: the violated property is one Hive
+claims (§5), the attacker is in scope (§3), and the affected code is on an
+in-model surface (§2/§4) reached by untrusted input. Otherwise route to one
+of: `OUT-OF-MODEL: adversary-not-in-scope` · `OUT-OF-MODEL: equivalent-harm` ·
+`OUT-OF-MODEL: unsupported-component` · `OUT-OF-MODEL: operator
responsibility` ·
+`BY-DESIGN: property-disclaimed`.
+
+## §14 — Open questions for the Hive PMC
+
+Grouped in waves; answer inline (a few at a time is fine). Each promotes an
+*(inferred)* tag to *(maintainer)* once confirmed.
+
+**Wave 1 — scope & intended use**
+1. *(Answered — okumin: direct Metastore access **is** in scope; HMS enforces
+ caller authorization at the application level, since external services like
+ Spark talk to it directly. Folded into §3.3 / §4 / §11a.)* ~~Is the in-scope
+ surface "HiveServer2 + the artifacts it compiles/executes", with the
+ Metastore treated as intra-cluster trusted? Or is direct Metastore access in
+ scope?~~
+2. *(Answered — okumin: yes, in scope as code-execution-by-design, with detail
+ on built-in UDF blacklist, custom UDF/SerDe admin trust, and `TRANSFORM`
+ disable via `DisallowTransformHook`. Folded into §7 / §8 / §11a.)* ~~Are
+ UDFs / SerDes / custom InputFormats / `TRANSFORM` scripts in scope as
+ code-execution-by-design (not a sandbox), per §7?~~
+3. *(Answered — okumin: confirmed. Clustered, operator-controlled perimeter;
+ Hadoop, the metastore RDBMS, the authorization provider (typically Ranger in
+ production, SQL-standard also supported), and the KDC are trusted
+ dependencies. Folded into §2 / §4.)* ~~Confirm the assumed deployment:
+ clustered, behind an operator-controlled perimeter, with Hadoop + a
metastore
+ RDBMS + (Ranger or SQL-std auth) + KDC as trusted dependencies.~~
+4. *(Answered — okumin: the primary in-scope adversaries are untrusted clients
+ at Hive's service boundaries — SQL clients submitting to HS2 and clients
+ reaching the Metastore through supported APIs; a network MITM is in scope
+ when TLS / equivalent transport protection is enabled (operator-configured).
+ Folded into §3.1 / §3.2.)* ~~Is the in-scope adversary "a SQL client at the
+ HS2 boundary" (+ a network MITM where TLS is off)? Anything to add?~~
+5. *(Answered — okumin: confirmed. Operators with direct storage / metastore-DB
+ / cluster-process access are trusted and out of scope; authorized actions by
+ trusted admins are out of model. Folded into §3.4 / §3.5.)* ~~Confirm
+ operators with storage/metastore-DB/cluster-process access, and trusted
+ admins doing authorized actions, are out of model.~~
+
+**Wave 2 — trust boundaries & auth**
+6. *(Answered — okumin: from HS2's point of view SQL text, JDBC connection
+ properties, and session config are untrusted; Hive rejects non-acceptable
+ operations via the authz plugin or the deny lists
+ (`hive.conf.restricted.list` / `hive.conf.locked.list` /
+ `hive.conf.hidden.list`). Folded into §4.)* ~~At the client→HS2 boundary,
are
+ SQL text, JDBC connection properties, and session-config overrides all
+ treated as untrusted (subject to the conf whitelist)?~~
+7. *(Answered — okumin: because the recommended posture uses an authorization
+ plugin (Apache Ranger), `hive.server2.enable.doAs=false` is the typical /
+ expected configuration; HS2 enforces authorization itself. Folded into §4 /
+ §8.1.)* ~~Which `doAs` posture is the supported/recommended one, and how
does
+ it change the authorization story?~~
+8. *(Answered — okumin: authentication, authorization scoping, metastore
+ authorization, transport protection, configuration protection, credential
+ handling — all configuration-dependent; no guarantee for callers who bypass
+ Hive and hit storage / the metastore DB directly. Folded into §5.)* ~~What
+ properties does Hive claim to uphold given valid input (auth, authz scoping,
+ others)?~~
+
+**Wave 3 — disclaimed properties & defaults**
+9. *(Answered — okumin: Apache Ranger is the primary authorization plugin; the
+ §6 operator-owned list stands. Folded into §6.)* ~~Confirm the
operator-owned
+ list in §6 (TLS, authz-model choice, network isolation, UDF vetting).~~
+10. *(Answered — okumin: confirmed ("OK"). §7 by-design non-guarantees stand.)*
+ ~~Confirm the by-design non-guarantees in §7.~~
+11. *(Answered — okumin: the operator's job, not a Hive bug — Hive accepts
+ arbitrary HiveQL; operators bound it with HS2 limits (e.g.
+ `hive.query.max.length`) + YARN pools, and separate HS2 instances /
clusters
+ for stronger isolation. Folded into §7.)* ~~Is super-linear resource use /
a
+ hang on a pathological query a bug, or is bounding it the operator's job
+ (YARN queues / HS2 limits)?~~
+12. *(Answered — okumin: supplied the real parameter names + secure-config
+ recipes for HiveServer2, the HS2 Web UI, and the Hive Metastore, plus the
+ Hadoop `CredentialProviderAPI`. Folded into §8.1–§8.4.)* ~~Confirm the real
+ names + shipped defaults of the §8 levers.~~
+13. *(Answered — okumin: secret exposure when an admin stores secrets in
+ `hive-site.xml` / `metastore-site.xml` / env vars / system properties
+ instead of using the Hadoop `CredentialProviderAPI`. Folded into §11a.)*
+ ~~What do scanners/fuzzers/researchers most often report that you consider
a
+ non-finding?~~
+
+**Wave 4 — meta**
+14. *(Answered — okumin: as of today this in-repo model is the canonical page.
+ Some security information is scattered across <https://hive.apache.org/>
and
+ may not be up to date; the in-repo model supersedes it. Reflected in §1.)*
+ ~~Confirm this in-repo model is canonical (vs the cwiki security pages).~~
+15. *(Answered — okumin: keep **one file**, split into clearly-labelled
+ HiveServer2 and Hive Metastore sections rather than two separate files.
+ Applied: §8 is now organized into §8.1 HiveServer2 / §8.2 HS2 Web UI / §8.3
+ Hive Metastore / §8.4 Credentials, and the component boundaries are
labelled
+ in §2/§3/§4. If deeper per-component scope/adversary subsections would
help,
+ say so and we'll extend — the structure is the PMC's call.)* ~~Should HMS
+ get its own separate `THREAT_MODEL.md`?~~