Executive brief
The iskorotkov/avro library, a tool used by Go applications to process Avro-formatted data, contains several integer handling flaws. An attacker can send a specially crafted data stream that causes the application to crash or consume excessive resources, leading to a denial-of-service. In some specific configurations on 32-bit systems, this could also lead to data being processed incorrectly by selecting the wrong data types during decoding.
Technical details
Multiple integer-related vulnerabilities exist in the Avro decoder. On 32-bit platforms, 64-bit values from the wire format are narrowed to 32-bit integers before bounds-checking, allowing attackers to bypass 'MaxSliceAllocSize' and 'MaxByteSliceSize' limits. Additionally, cumulative-size arithmetic in array and map decoders is prone to signed integer overflow on all platforms, where a running total can wrap to a negative value and bypass allocation caps. Other sub-issues include a panic caused by negating 'math.MinInt' in block-header handling and a 'make' panic when processing negative block sizes in Object Container Files (OCF). These flaws collectively provide a denial-of-service primitive and, in the case of union index narrowing, potential logic errors in data interpretation. The issues are fixed in version 2.33.0.
Affected products
- iskorotkov avro < 2.33.0
- hamba avro/v2 <= 2.31.0
Timeline
- 2026-05-11: advisory: GitHub advisory published by maintainer
- 2026-05-29: disclosed: CVE-2026-46384 published