Bug 2215393 (CVE-2023-34453) - CVE-2023-34453 snappy-java: Integer overflow in shuffle leads to DoS
Summary: CVE-2023-34453 snappy-java: Integer overflow in shuffle leads to DoS
Keywords:
Status: NEW
Alias: CVE-2023-34453
Product: Security Response
Classification: Other
Component: vulnerability
Version: unspecified
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Nobody
QA Contact:
URL:
Whiteboard:
Depends On: 2215396 2215397 2215398 2216103 2216104
Blocks: 2215395
TreeView+ depends on / blocked
 
Reported: 2023-06-15 19:28 UTC by Guilherme de Almeida Suckevicz
Modified: 2025-03-17 23:44 UTC (History)
49 users (show)

Fixed In Version: snappy-java 1.1.10.1
Clone Of:
Environment:
Last Closed:
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Product Errata RHSA-2023:5165 0 None None None 2023-09-14 09:51:49 UTC
Red Hat Product Errata RHSA-2023:7700 0 None None None 2023-12-07 14:26:45 UTC

Description Guilherme de Almeida Suckevicz 2023-06-15 19:28:15 UTC
snappy-java is a fast compressor/decompressor for Java. Due to unchecked multiplications, an integer overflow may occur in versions prior to 1.1.10.1, causing a fatal error.

The function `shuffle(int[] input)` in the file `BitShuffle.java` receives an array of integers and applies a bit shuffle on it. It does so by multiplying the length by 4 and passing it to the natively compiled shuffle function. Since the length is not tested, the multiplication by four can cause an integer overflow and become a smaller value than the true size, or even zero or negative. In the case of a negative value, a `java.lang.NegativeArraySizeException` exception will raise, which can crash the program. In a case of a value that is zero or too small, the code that afterwards references the shuffled array will assume a bigger size of the array, which might cause exceptions such as `java.lang.ArrayIndexOutOfBoundsException`.

The same issue exists also when using the `shuffle` functions that receive a double, float, long and short, each using a different multiplier that may cause the same issue.

Version 1.1.10.1 contains a patch for this vulnerability.

References:
https://github.com/xerial/snappy-java/blob/master/src/main/java/org/xerial/snappy/BitShuffle.java
https://github.com/xerial/snappy-java/security/advisories/GHSA-pqr6-cmr2-h8hf
https://github.com/xerial/snappy-java/commit/820e2e074c58748b41dbd547f4edba9e108ad905
https://github.com/xerial/snappy-java/blob/05c39b2ca9b5b7b39611529cc302d3d796329611/src/main/java/org/xerial/snappy/BitShuffle.java#L107

Comment 10 errata-xmlrpc 2023-09-14 09:51:46 UTC
This issue has been addressed in the following products:

  Red Hat AMQ Streams 2.5.0

Via RHSA-2023:5165 https://access.redhat.com/errata/RHSA-2023:5165

Comment 11 errata-xmlrpc 2023-12-07 14:26:43 UTC
This issue has been addressed in the following products:

  Red Hat build of Quarkus 2.13.9

Via RHSA-2023:7700 https://access.redhat.com/errata/RHSA-2023:7700


Note You need to log in before you can comment on or make changes to this bug.