CVE-2023-34454 (Medium) detected in snappy-java-1.1.8.4.jar - autoclosed #2883
Labels
Mend: dependency security vulnerability
Security vulnerability detected by WhiteSource
untriaged
Require the attention of the repository maintainers and may need to be prioritized
CVE-2023-34454 - Medium Severity Vulnerability
Vulnerable Library - snappy-java-1.1.8.4.jar
snappy-java: A fast compression/decompression library
Library home page: https://github.com/xerial/snappy-java
Path to dependency file: /build.gradle
Path to vulnerable library: /home/wss-scanner/.gradle/caches/modules-2/files-2.1/org.xerial.snappy/snappy-java/1.1.8.4/66f0d56454509f6e36175f2331572e250e04a6cc/snappy-java-1.1.8.4.jar
Dependency Hierarchy:
Found in HEAD commit: b4413a769a13ddee13ac168bdb4ef94b4248a169
Found in base branch: main
Vulnerability Details
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 an unrecoverable fatal error.
The function
compress(char[] input)
in the fileSnappy.java
receives an array of characters and compresses it. It does so by multiplying the length by 2 and passing it to the rawCompress` function.Since the length is not tested, the multiplication by two can cause an integer overflow and become negative. The rawCompress function then uses the received length and passes it to the natively compiled maxCompressedLength function, using the returned value to allocate a byte array.
Since the maxCompressedLength function treats the length as an unsigned integer, it doesn’t care that it is negative, and it returns a valid value, which is casted to a signed integer by the Java engine. If the result is negative, a
java.lang.NegativeArraySizeException
exception will be raised while trying to allocate the arraybuf
. On the other side, if the result is positive, thebuf
array will successfully be allocated, but its size might be too small to use for the compression, causing a fatal Access Violation error.The same issue exists also when using the
compress
functions that receive double, float, int, long and short, each using a different multiplier that may cause the same issue. The issue most likely won’t occur when using a byte array, since creating a byte array of size 0x80000000 (or any other negative value) is impossible in the first place.Version 1.1.10.1 contains a patch for this issue.
Publish Date: 2023-06-15
URL: CVE-2023-34454
CVSS 3 Score Details (5.9)
Base Score Metrics:
Suggested Fix
Type: Upgrade version
Origin: GHSA-fjpj-2g6w-x25r
Release Date: 2023-06-15
Fix Resolution: org.xerial.snappy:snappy-java:1.1.10.1
The text was updated successfully, but these errors were encountered: