Cloudanix VulnDB

CVE-2024-36114

High · 8.6

CVSS

8.6

EPSS

0.5%

Published

May 29, 2024

CISA due date

—

Cloudanix analysis

Monitor only SSVC: Track

A flaw in a Java library used for compressing and decompressing data can make programs crash or reveal private information when they process certain inputs from outside sources.

Exploitation
Remote Unauthenticated
Attacker needs
None
Complexity
Low
Impact
Data Exposure
Component
Library
Class
Memory Corruption
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

The vulnerability permits out-of-bounds memory access in LZ4, LZO, Snappy, and Zstandard decompressors because sun.misc.Unsafe is used without additional bounds checks, allowing reads or writes outside provided byte arrays or buffers and resulting in JVM crashes or memory disclosure.

Why it matters to the business

Services handling untrusted compressed data can suffer sudden process termination that disrupts availability or unintended exposure of process memory contents that may contain sensitive information.

How an attack unfolds

An attacker supplies specially crafted compressed input to any Java application using a vulnerable Aircompressor version for decompression; the library performs unsafe memory operations that either terminate the JVM or leak adjacent memory regions.

How to fix it

Upgrade to Aircompressor 0.27 or newer containing commit e139a31be059855a5a70f6994a4ecaa0adbbea7a; no workarounds are available.

How to confirm the fix worked

Confirm the deployed library version is 0.27 or later; retest decompression routines with previously crashing inputs to verify stability and absence of memory disclosure.

Typical attack path

  1. Locate Java applications or services that depend on Aircompressor for decompression of external data
  2. Generate input that triggers out-of-bounds access in one of the four supported decompressors
  3. Deliver the malicious payload through the normal data ingestion path
  4. Trigger JVM crash for denial of service or inspect leaked memory for sensitive content

How to detect it

Review application and JVM logs for sudden crashes or access-violation errors during decompression of external data; correlate with spikes in CPU or memory anomalies on affected hosts.

What your security team should do

  • Immediately update all Aircompressor usages to the fixed version
  • Identify and prioritize services that accept compressed data from untrusted sources
  • Add runtime monitoring for unexpected JVM terminations during decompression

The record

Aircompressor is a library with ports of the Snappy, LZO, LZ4, and Zstandard compression algorithms to Java. All decompressor implementations of Aircompressor (LZ4, LZO, Snappy, Zstandard) can crash the JVM for certain input, and in some cases also leak the content of other memory of the Java process (which could contain sensitive information). When decompressing certain data, the decompressors try to access memory outside the bounds of the given byte arrays or byte buffers. Because Aircompressor uses the JDK class `sun.misc.Unsafe` to speed up memory access, no additional bounds checks are performed and this has similar security consequences as out-of-bounds access in C or C++, namely it can lead to non-deterministic behavior or crash the JVM. Users should update to Aircompressor 0.27 or newer where these issues have been fixed. When decompressing data from untrusted users, this can be exploited for a denial-of-service attack by crashing the JVM, or to leak other sensitive information from the Java process. There are no known workarounds for this issue.

Affected packages

Ecosystem Package Introduced Fixed
Maven io.airlift:aircompressor 0 0.27
Chainguard apache-nifi 0 2.0.0-r0
Chainguard apache-nifi-compat 0 2.0.0-r0
Chainguard apache-nifi-toolkit 0 2.0.0-r0
Chainguard druid 0 32.0.1-r1
Chainguard druid-compat 0 32.0.1-r1
Chainguard pyspark-scala-2.13 0 3.5.1-r6
Chainguard spark-3.5 0 3.5.1-r6
Chainguard spark-3.5-bitnami-compat 0 3.5.1-r6
Chainguard spark-3.5-compat 0 3.5.1-r6
Chainguard spark-3.5-minimal 0 3.5.1-r6
Chainguard spark-3.5-minimal-openjdk-11 0 3.5.1-r6
Chainguard spark-3.5-minimal-openjdk-17 0 3.5.1-r6
Chainguard spark-3.5-minimal-openjdk-8 0 3.5.1-r6
Chainguard spark-3.5-openjdk-11 0 3.5.1-r6
Chainguard spark-3.5-openjdk-17 0 3.5.1-r6
Chainguard spark-3.5-openjdk-8 0 3.5.1-r6
Chainguard spark-3.5-scala-2.12 0 3.5.1-r6
Chainguard spark-3.5-scala-2.12-bitnami-compat 0 3.5.1-r6
Chainguard spark-3.5-scala-2.12-compat 0 3.5.1-r6
Chainguard spark-3.5-scala-2.12-iamguarded-compat 0 3.5.1-r6
Chainguard spark-3.5-scala-2.12-minimal-openjdk-11 0 3.5.1-r6
Chainguard spark-3.5-scala-2.12-minimal-openjdk-17 0 3.5.1-r6
Chainguard spark-3.5-scala-2.12-minimal-openjdk-8 0 3.5.1-r6
Chainguard spark-3.5-scala-2.12-openjdk-11 0 3.5.1-r6
Chainguard spark-3.5-scala-2.12-openjdk-17 0 3.5.1-r6
Chainguard spark-3.5-scala-2.12-openjdk-8 0 3.5.1-r6
Chainguard spark-3.5-scala-2.13 0 3.5.1-r6
Chainguard spark-3.5-scala-2.13-compat 0 3.5.1-r6
Chainguard spark-3.5-scala-2.13-openjdk-11 0 3.5.1-r6
Chainguard spark-3.5-scala-2.13-openjdk-17 0 3.5.1-r6
Chainguard spark-3.5-scala-2.13-openjdk-8 0 3.5.1-r6
Chainguard trino 0 449-r0
Chainguard trino-config 0 449-r0
Chainguard trino-oci-entrypoint 0 449-r0
Chainguard trino-plugin-accumulo 0 449-r0
Chainguard trino-plugin-ai-functions 0 449-r0
Chainguard trino-plugin-atop 0 449-r0
Chainguard trino-plugin-bigquery 0 449-r0
Chainguard trino-plugin-blackhole 0 449-r0
Chainguard trino-plugin-cassandra 0 449-r0
Chainguard trino-plugin-clickhouse 0 449-r0
Chainguard trino-plugin-delta-lake 0 449-r0
Chainguard trino-plugin-druid 0 449-r0
Chainguard trino-plugin-duckdb 0 449-r0
Chainguard trino-plugin-elasticsearch 0 449-r0
Chainguard trino-plugin-example-http 0 449-r0
Chainguard trino-plugin-exasol 0 449-r0
Chainguard trino-plugin-exchange-filesystem 0 449-r0
Chainguard trino-plugin-exchange-hdfs 0 449-r0
Chainguard trino-plugin-faker 0 449-r0
Chainguard trino-plugin-functions-python 0 449-r0
Chainguard trino-plugin-geospatial 0 449-r0
Chainguard trino-plugin-google-sheets 0 449-r0
Chainguard trino-plugin-hive 0 449-r0
Chainguard trino-plugin-http-event-listener 0 449-r0
Chainguard trino-plugin-http-server-event-listener 0 449-r0
Chainguard trino-plugin-hudi 0 449-r0
Chainguard trino-plugin-iceberg 0 449-r0
Chainguard trino-plugin-ignite 0 449-r0
Chainguard trino-plugin-jmx 0 449-r0
Chainguard trino-plugin-kafka 0 449-r0
Chainguard trino-plugin-kafka-event-listener 0 449-r0
Chainguard trino-plugin-kinesis 0 449-r0
Chainguard trino-plugin-kudu 0 449-r0
Chainguard trino-plugin-lakehouse 0 449-r0
Chainguard trino-plugin-ldap-group-provider 0 449-r0
Chainguard trino-plugin-local-file 0 449-r0
Chainguard trino-plugin-loki 0 449-r0
Chainguard trino-plugin-mariadb 0 449-r0
Chainguard trino-plugin-memory 0 449-r0
Chainguard trino-plugin-ml 0 449-r0
Chainguard trino-plugin-mongodb 0 449-r0
Chainguard trino-plugin-mysql 0 449-r0
Chainguard trino-plugin-mysql-event-listener 0 449-r0
Chainguard trino-plugin-opa 0 449-r0
Chainguard trino-plugin-openlineage 0 449-r0
Chainguard trino-plugin-opensearch 0 449-r0
Chainguard trino-plugin-oracle 0 449-r0
Chainguard trino-plugin-password-authenticators 0 449-r0
Chainguard trino-plugin-phoenix5 0 449-r0
Chainguard trino-plugin-pinot 0 449-r0
Chainguard trino-plugin-postgresql 0 449-r0
Chainguard trino-plugin-prometheus 0 449-r0
Chainguard trino-plugin-ranger 0 449-r0
Chainguard trino-plugin-raptor-legacy 0 449-r0
Chainguard trino-plugin-redis 0 449-r0
Chainguard trino-plugin-redshift 0 449-r0
Chainguard trino-plugin-resource-group-managers 0 449-r0
Chainguard trino-plugin-session-property-managers 0 449-r0
Chainguard trino-plugin-singlestore 0 449-r0
Chainguard trino-plugin-snowflake 0 449-r0
Chainguard trino-plugin-spooling-filesystem 0 449-r0
Chainguard trino-plugin-sqlserver 0 449-r0
Chainguard trino-plugin-teradata-functions 0 449-r0
Chainguard trino-plugin-thrift 0 449-r0
Chainguard trino-plugin-tpcds 0 449-r0
Chainguard trino-plugin-tpch 0 449-r0
Chainguard trino-plugin-vertica 0 449-r0
Wolfi apache-nifi 0 2.0.0-r0
Wolfi apache-nifi-compat 0 2.0.0-r0
Wolfi apache-nifi-toolkit 0 2.0.0-r0
Wolfi druid 0 32.0.1-r1
Wolfi druid-compat 0 32.0.1-r1
Wolfi pyspark-scala-2.13 0 3.5.1-r6
Wolfi spark-3.5 0 3.5.1-r6
Wolfi spark-3.5-bitnami-compat 0 3.5.1-r6
Wolfi spark-3.5-compat 0 3.5.1-r6
Wolfi spark-3.5-minimal 0 3.5.1-r6
Wolfi spark-3.5-minimal-openjdk-11 0 3.5.1-r6
Wolfi spark-3.5-minimal-openjdk-17 0 3.5.1-r6
Wolfi spark-3.5-minimal-openjdk-8 0 3.5.1-r6
Wolfi spark-3.5-openjdk-11 0 3.5.1-r6
Wolfi spark-3.5-openjdk-17 0 3.5.1-r6
Wolfi spark-3.5-openjdk-8 0 3.5.1-r6
Wolfi spark-3.5-scala-2.12 0 3.5.1-r6
Wolfi spark-3.5-scala-2.12-bitnami-compat 0 3.5.1-r6
Wolfi spark-3.5-scala-2.12-compat 0 3.5.1-r6
Wolfi spark-3.5-scala-2.12-iamguarded-compat 0 3.5.1-r6
Wolfi spark-3.5-scala-2.12-minimal-openjdk-11 0 3.5.1-r6
Wolfi spark-3.5-scala-2.12-minimal-openjdk-17 0 3.5.1-r6
Wolfi spark-3.5-scala-2.12-minimal-openjdk-8 0 3.5.1-r6
Wolfi spark-3.5-scala-2.12-openjdk-11 0 3.5.1-r6
Wolfi spark-3.5-scala-2.12-openjdk-17 0 3.5.1-r6
Wolfi spark-3.5-scala-2.12-openjdk-8 0 3.5.1-r6
Wolfi spark-3.5-scala-2.13 0 3.5.1-r6
Wolfi spark-3.5-scala-2.13-compat 0 3.5.1-r6
Wolfi spark-3.5-scala-2.13-openjdk-11 0 3.5.1-r6
Wolfi spark-3.5-scala-2.13-openjdk-17 0 3.5.1-r6
Wolfi spark-3.5-scala-2.13-openjdk-8 0 3.5.1-r6
Wolfi trino 0 449-r0
Wolfi trino-config 0 449-r0
Wolfi trino-oci-entrypoint 0 449-r0
Wolfi trino-plugin-accumulo 0 449-r0
Wolfi trino-plugin-ai-functions 0 449-r0
Wolfi trino-plugin-atop 0 449-r0
Wolfi trino-plugin-bigquery 0 449-r0
Wolfi trino-plugin-blackhole 0 449-r0
Wolfi trino-plugin-cassandra 0 449-r0
Wolfi trino-plugin-clickhouse 0 449-r0
Wolfi trino-plugin-delta-lake 0 449-r0
Wolfi trino-plugin-druid 0 449-r0
Wolfi trino-plugin-duckdb 0 449-r0
Wolfi trino-plugin-elasticsearch 0 449-r0
Wolfi trino-plugin-example-http 0 449-r0
Wolfi trino-plugin-exasol 0 449-r0
Wolfi trino-plugin-exchange-filesystem 0 449-r0
Wolfi trino-plugin-exchange-hdfs 0 449-r0
Wolfi trino-plugin-faker 0 449-r0
Wolfi trino-plugin-functions-python 0 449-r0
Wolfi trino-plugin-geospatial 0 449-r0
Wolfi trino-plugin-google-sheets 0 449-r0
Wolfi trino-plugin-hive 0 449-r0
Wolfi trino-plugin-http-event-listener 0 449-r0
Wolfi trino-plugin-http-server-event-listener 0 449-r0
Wolfi trino-plugin-hudi 0 449-r0
Wolfi trino-plugin-iceberg 0 449-r0
Wolfi trino-plugin-ignite 0 449-r0
Wolfi trino-plugin-jmx 0 449-r0
Wolfi trino-plugin-kafka 0 449-r0
Wolfi trino-plugin-kafka-event-listener 0 449-r0
Wolfi trino-plugin-kinesis 0 449-r0
Wolfi trino-plugin-kudu 0 449-r0
Wolfi trino-plugin-lakehouse 0 449-r0
Wolfi trino-plugin-ldap-group-provider 0 449-r0
Wolfi trino-plugin-local-file 0 449-r0
Wolfi trino-plugin-loki 0 449-r0
Wolfi trino-plugin-mariadb 0 449-r0
Wolfi trino-plugin-memory 0 449-r0
Wolfi trino-plugin-ml 0 449-r0
Wolfi trino-plugin-mongodb 0 449-r0
Wolfi trino-plugin-mysql 0 449-r0
Wolfi trino-plugin-mysql-event-listener 0 449-r0
Wolfi trino-plugin-opa 0 449-r0
Wolfi trino-plugin-openlineage 0 449-r0
Wolfi trino-plugin-opensearch 0 449-r0
Wolfi trino-plugin-oracle 0 449-r0
Wolfi trino-plugin-password-authenticators 0 449-r0
Wolfi trino-plugin-phoenix5 0 449-r0
Wolfi trino-plugin-pinot 0 449-r0
Wolfi trino-plugin-postgresql 0 449-r0
Wolfi trino-plugin-prometheus 0 449-r0
Wolfi trino-plugin-ranger 0 449-r0
Wolfi trino-plugin-raptor-legacy 0 449-r0
Wolfi trino-plugin-redis 0 449-r0
Wolfi trino-plugin-redshift 0 449-r0
Wolfi trino-plugin-resource-group-managers 0 449-r0
Wolfi trino-plugin-session-property-managers 0 449-r0
Wolfi trino-plugin-singlestore 0 449-r0
Wolfi trino-plugin-snowflake 0 449-r0
Wolfi trino-plugin-spooling-filesystem 0 449-r0
Wolfi trino-plugin-sqlserver 0 449-r0
Wolfi trino-plugin-teradata-functions 0 449-r0
Wolfi trino-plugin-thrift 0 449-r0
Wolfi trino-plugin-tpcds 0 449-r0
Wolfi trino-plugin-tpch 0 449-r0
Wolfi trino-plugin-vertica 0 449-r0

Related vulnerabilities