Skip to content

bq_connection is free-form and copied into BigQuery connectionId without policy validation #16468

@rdblue

Description

@rdblue

This issue was reported to the private Apache Iceberg security mailing list. The submitter is being kept anonymous because the report was sent to a private list. After review, the issue is not considered a serious vulnerability that needs to be kept private, so it is being filed publicly here for tracking and resolution.

Note: this submission was generated by AI. Please review its claims and source references carefully before acting on them.

Summary

Per-table bq_connection is copied directly into BigQuery
connectionId, letting table creators request any delegable
connection resource unless policy is added externally.

In practice that means a caller who is allowed to create tables can
ask Iceberg to attach any BigQuery connection that the catalog's
BigQuery identity is allowed to delegate. If some of those connections
map to stronger service accounts or broader storage access, the caller
can select a more privileged data path than intended.

Affected Maven coordinates

  • primary shipped client artifact: org.apache.iceberg:iceberg-bigquery

Attacker prerequisites

  • ability to create or update a table with the bq_connection property
  • a deployment where the catalog's BigQuery identity is allowed to
    delegate more than one connection resource and does not enforce its
    own allowlist

Impact

  • In a shared-catalog deployment, an untrusted table creator can
    request any connection resource that the catalog's BigQuery identity
    is allowed to delegate.
  • If some connections map to more privileged service accounts or
    broader storage access, the table creator can bind a table to a
    stronger credential than intended.
  • This is a policy-bypass risk, not because the code fabricates
    permissions, but because it does not constrain which already-delegable
    connection can be attached to a table.

Proof status

I reproduced this locally with a targeted reproducer or exploit.
The observed result matches the trigger and impact described above.

Key source references

  • org.apache.iceberg.gcp.bigquery.BigQueryTableOperations

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions