Skip to content

Variant parsing is vulnerable to memory-DoS and malformed-input crashes #16455

@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

Malformed variant buffers can force large allocations and raw JVM
exceptions before structural validation, turning small
attacker-controlled payloads into a read-time denial of service path.

Affected Maven coordinates

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

Attacker prerequisites

  • Any consumer that parses variant values from untrusted or
    semi-trusted Iceberg content is exposed.
  • The easiest attack is a tiny payload that advertises a very large
    element count or dictionary size.

Impact

  • A malicious variant payload can force large allocations before the
    payload is structurally validated.
  • The same code path can also fail with raw JVM exceptions such as
    NegativeArraySizeException, ArrayIndexOutOfBoundsException, and
    IndexOutOfBoundsException instead of a typed validation failure.
  • In a service that reads attacker-controlled tables or records, this
    is a straightforward availability issue.

Proof status

Source review only. The issue is visible directly from source.

Key source references

  • org.apache.iceberg.variants.Variant
  • org.apache.iceberg.variants.VariantValue
  • org.apache.iceberg.variants.SerializedMetadata
  • org.apache.iceberg.variants.SerializedArray
  • org.apache.iceberg.variants.SerializedObject

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No 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