Buffer Overflow in Zlib::GzipReader ungetc via large input leads to memory corruption
Package
Affected versions
>= 3.2.0, < 3.2.3
>= 3.1.0, < 3.1.2
< 3.0.1
Patched versions
3.2.3
3.1.2
3.0.1
Description
Published by the National Vulnerability Database
Apr 16, 2026
Published to the GitHub Advisory Database
Apr 16, 2026
Reviewed
Apr 16, 2026
Last updated
Jun 8, 2026
Details
A buffer overflow vulnerability exists in
Zlib::GzipReader.The
zstream_buffer_ungetsfunction prepends caller-provided bytes ahead of previously produced output but fails to guarantee the backing Ruby string has enough capacity before the memmove shifts the existing data. This can lead to memory corruption when the buffer length exceeds capacity.Recommended action
We recommend to update the
zlibgem to version 3.2.3 or later. In order to ensure compatibility with bundled version in older Ruby series, you may update as follows instead:You can use gem update zlib to update it. If you are using bundler, please add
gem "zlib", ">= 3.2.3"to your Gemfile.Affected versions
zlib gem 3.2.2 or lower
Credits
calysteon
References
References