CVE-2023-34453
snappy-java's Integer Overflow vulnerability in shuffle leads to DoS
Reported by github_m · Published June 15, 2023
snappy-java is fixed in 1.1.10.1 and 1.1.10.0 (Maven Central)
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.
Fixed versions
Upgrade to a fixed version or later. Language registries are listed first, then Linux distributions, then vendor products.
| Package | Ecosystem | Fixed in |
|---|---|---|
| org.xerial.snappy:snappy-java | Maven Central | 1.1.10.1, 1.1.10.0 |
| druid | Wolfi | 37.0.0-r0 |
| druid | Chainguard | 37.0.0-r0 |
| snappy-java | xerial | 1.1.10.1 |
Risk scores
Affected products
| Vendor | Product | Versions |
|---|---|---|
| xerial | snappy-java | < 1.1.10.1 |
| wolfi | druid | 0 |
| chainguard | druid | 0 |
| xerial | snappy-java | 0 |
| Maven | org.xerial.snappy:snappy-java | 0 |
| chainguard | stargate | 0 |
Timeline
- Jun 15, 2023 CVE Published
- Jun 16, 2023 EPSS Score (30 in total, the first dated here)
- Feb 8, 2024 PoC Published
- Feb 13, 2026 Security Advisory
- Aug 8, 2026 Coalition ESS Score
Query this with the API
The same record, from the CLI:
vulnetix vdb vuln CVE-2023-34453
vulnetix vdb fixes CVE-2023-34453
Or with curl, using the org id and key from your account page:
curl -s -H "Authorization: ApiKey ${VULNETIX_ORG_ID}:${VULNETIX_API_KEY}" \
"https://api.vdb.vulnetix.com/v2/vuln/CVE-2023-34453/fixes/registry"
The Community plan is free and allows 50 queries a day. Get a free API key · API quickstart
References
- https://github.com/xerial/snappy-java/security/advisories/GHSA-pqr6-cmr2-h8hf x_refsource_CONFIRM
- https://github.com/xerial/snappy-java/commit/820e2e074c58748b41dbd547f4edba9e108ad905 x_refsource_MISC
- https://github.com/xerial/snappy-java/blob/05c39b2ca9b5b7b39611529cc302d3d796329611/src/main/java/org/xerial/snappy/BitShuffle.java#L107 x_refsource_MISC
- https://github.com/xerial/snappy-java/blob/master/src/main/java/org/xerial/snappy/BitShuffle.java x_refsource_MISC
- https://nvd.nist.gov/vuln/detail/CVE-2023-34453 advisory
- https://github.com/advisories/GHSA-pqr6-cmr2-h8hf advisory