Lucene search

K
rubygemsRubySecRUBY:YAJL-RUBY-2022-24795
HistoryApr 04, 2022 - 9:00 p.m.

Reallocation bug can trigger heap memory corruption

2022-04-0421:00:00
RubySec
rubysec.com
8

0 Low

EPSS

Percentile

0.0%

The 1.x branch and the 2.x branch of yajl
contain an integer overflow which leads to subsequent heap memory corruption
when dealing with large (~2GB) inputs.

Details

The reallocation logic at yajl_buf.c#L64
may result in the need 32bit integer wrapping to 0 when need approaches
a value of 0x80000000 (i.e. ~2GB of data), which results in a reallocation
of buf->alloc into a small heap chunk.

These integers are declared as size_t in the 2.x branch of yajl, which
practically prevents the issue from triggering on 64bit platforms, however
this does not preclude this issue triggering on 32bit builds on which
size_t is a 32bit integer.

Subsequent population of this under-allocated heap chunk is based on the
original buffer size, leading to heap memory corruption.

Impact

We rate this as a moderate severity vulnerability which mostly impacts
process availability as we believe exploitation for arbitrary code
execution to be unlikely.

Patches

Patched in yajl-ruby 1.4.2

Workarounds

Avoid passing large inputs to YAJL

CPENameOperatorVersion
yajl-rubylt1.4.2

0 Low

EPSS

Percentile

0.0%