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
github.com
10
reallocation bug
heap memory corruption
yajl
integer overflow
32bit platforms
buffer size
vulnerability
process availability
arbitrary code execution
patched
workarounds
large inputs

CVSS2

5

Attack Vector

NETWORK

Attack Complexity

LOW

Authentication

NONE

Confidentiality Impact

PARTIAL

Integrity Impact

NONE

Availability Impact

NONE

AV:N/AC:L/Au:N/C:P/I:N/A:N

CVSS3

7.5

Attack Vector

NETWORK

Attack Complexity

LOW

Privileges Required

NONE

User Interaction

NONE

Scope

UNCHANGED

Confidentiality Impact

NONE

Integrity Impact

NONE

Availability Impact

HIGH

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

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

Affected configurations

Vulners
Node
rubyyajl-rubyRange≤1.4.2
VendorProductVersionCPE
rubyyajl-ruby*cpe:2.3:a:ruby:yajl-ruby:*:*:*:*:*:*:*:*

CVSS2

5

Attack Vector

NETWORK

Attack Complexity

LOW

Authentication

NONE

Confidentiality Impact

PARTIAL

Integrity Impact

NONE

Availability Impact

NONE

AV:N/AC:L/Au:N/C:P/I:N/A:N

CVSS3

7.5

Attack Vector

NETWORK

Attack Complexity

LOW

Privileges Required

NONE

User Interaction

NONE

Scope

UNCHANGED

Confidentiality Impact

NONE

Integrity Impact

NONE

Availability Impact

HIGH

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H