Cloudanix VulnDB

CVE-2024-25710

Medium · 5.5

CVSS

5.5

EPSS

0.4%

Published

Feb 19, 2024

CISA due date

—

Cloudanix analysis

Next patch cycle SSVC: Track

A flaw in a widely used file-compression library can let a malformed archive make affected applications hang or become unavailable.

Exploitation
Requires User Interaction
Attacker needs
User Interaction
Complexity
Moderate
Impact
Denial Of Service
Component
Library
Class
Denial of service
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

CVE-2024-25710 is an infinite-loop denial-of-service flaw in Apache Commons Compress versions 1.3 through 1.25.0. When vulnerable code attempts to parse a specially crafted compressed archive or archive stream, the parser can enter a loop with no reachable exit condition. This can pin a CPU thread, exhaust worker capacity, and cause the calling application or service to become slow, unresponsive, or unavailable. The flaw does not provide confidentiality or integrity impact by itself; the primary effect is availability loss in software that uses Apache Commons Compress to process untrusted or user-supplied archive content.

Why it matters to the business

Organizations using Apache Commons Compress in applications, build pipelines, document-processing services, malware sandboxes, attachment scanners, or upload workflows may experience service degradation or outages if malformed archives are processed. Although this issue is not listed in CISA KEV, has low EPSS, and has no known mature public exploit signal in the provided data, the library is commonly embedded as a direct or transitive dependency, so exposure can be broader than obvious application inventories indicate.

How an attack unfolds

An attacker identifies an application or workflow that processes archive files using a vulnerable version of Apache Commons Compress. The attacker then submits or causes the system to ingest a malformed archive designed to trigger the infinite-loop condition. Once the vulnerable parser reaches the problematic code path, the processing thread may spin indefinitely or for an excessive period, consuming CPU and tying up application workers. Repeated submissions can amplify the impact, leading to backlog growth, failed requests, degraded upload or scanning functionality, and potential denial of service for dependent systems.

How to fix it

Upgrade Apache Commons Compress to version 1.26.0 or later. For source builds, ensure the dependency includes the upstream fix at commit acaf5642b1e16d872870a4dc4618e46ccd349493 or a later release. Review transitive dependencies in Maven, Gradle, SBT, Ivy, shaded JARs, vendor bundles, and container images because Commons Compress is often embedded indirectly. If using Ubuntu 14.04 LTS packages that include the listed Botan package, apply the fixed package version 1.10.5-1+deb7u1ubuntu0.14.04.1 where relevant, but treat the primary remediation for this CVE as upgrading Apache Commons Compress. If immediate upgrade is not possible, mitigate by restricting archive uploads to trusted users, enforcing strict file size and extraction time limits, isolating archive processing in a resource-constrained worker, applying CPU and wall-clock timeouts, limiting concurrent archive-processing jobs, and rejecting unsupported archive formats.

How to confirm the fix worked

Confirm no deployed application, library bundle, container image, or build artifact contains Apache Commons Compress versions 1.3 through 1.25.0. Validate with dependency tooling such as Maven dependency:tree, Gradle dependencies, SBOM scanners, SCA tools, container image scanners, and direct inspection of packaged JARs for commons-compress version metadata. After upgrading, test archive-processing workflows with normal archives and malformed test cases to verify that processing terminates cleanly, returns controlled errors, and does not produce sustained CPU usage or stuck worker threads. Confirm runtime artifacts load the upgraded library rather than an older shaded or bundled copy.

Typical attack path

  1. Find an application, API, background job, CI/CD task, scanner, or ingestion pipeline that accepts compressed archive input.
  2. Confirm or infer that the target uses Apache Commons Compress versions 1.3 through 1.25.0 directly or through a bundled dependency.
  3. Submit a malformed archive or archive stream that exercises the vulnerable parsing path.
  4. Cause one or more worker threads to enter an infinite or effectively unbounded loop while processing the archive.
  5. Repeat submissions or target high-volume workflows to consume CPU and worker capacity, resulting in service slowdown or denial of service.

How to detect it

To assess possible prior exploitation, review logs and telemetry for symptoms of archive-processing denial of service rather than relying on a unique exploit signature. Examine application logs, upload/API access logs, web server logs, job queue logs, file-ingestion service logs, EDR process telemetry, JVM metrics, thread dumps, and infrastructure CPU metrics. Look for bursts of archive uploads followed by request timeouts, worker starvation, high sustained CPU, queue backlogs, repeated processing of the same archive, or Java threads stuck inside Apache Commons Compress parsing code. Correlate suspicious archive submissions by source IP, user agent, account, file name, MIME type, file hash, request path, and timestamp. If thread dumps are available from the incident window, search for long-running threads whose stack traces reference org.apache.commons.compress classes. Since no specific public exploitation artifacts or payload signatures are derivable from the provided information, detection should focus on behavioral indicators and affected dependency presence.

What your security team should do

  • Prioritize identifying all direct and transitive uses of Apache Commons Compress across applications, build systems, scanning tools, and container images.
  • Upgrade Apache Commons Compress to 1.26.0 or later and redeploy affected applications.
  • Pay special attention to internet-facing upload, attachment-processing, archive-extraction, and file-ingestion services because local library flaws can become remotely triggerable through server-side parsing.
  • Add resource controls around archive processing, including maximum input size, maximum decompressed size, processing timeout, concurrency limits, and worker isolation.
  • Search for shaded or repackaged copies of Commons Compress that may not appear in standard dependency manifests.
  • Monitor for abnormal CPU saturation, stuck archive-processing threads, request timeouts, and repeated malformed archive submissions.
  • Because the issue is not KEV-listed and has low EPSS, treat it as a controlled remediation item unless the vulnerable library is used in exposed upload or ingestion paths, where it should be handled with higher urgency.

The record

Loop with Unreachable Exit Condition ('Infinite Loop') vulnerability in Apache Commons Compress.This issue affects Apache Commons Compress: from 1.3 through 1.25.0. Users are recommended to upgrade to version 1.26.0 which fixes the issue.

Affected packages

Ecosystem Package Introduced Fixed
Maven org.apache.commons:commons-compress 1.3 1.26.0
Chainguard apache-nifi 0 1.26.0-r2
Chainguard apache-nifi 0 2.6.0-r2
Chainguard apache-nifi-compat 0 2.6.0-r2
Chainguard apache-nifi-toolkit 0 2.6.0-r2
Chainguard dependency-track 0 4.10.1-r2
Chainguard dependency-track-bundled 0 4.10.1-r2
Chainguard dotty 0 3.6.2-r0
Chainguard druid-compat 0 34.0.0-r6
Chainguard elasticsearch-8 0 8.13.2-r1
Chainguard elasticsearch-8-bitnami 0 8.13.2-r1
Chainguard elasticsearch-8-config 0 8.13.2-r1
Chainguard elasticsearch-8-iamguarded 0 8.13.2-r1
Chainguard elasticsearch-config 0 8.13.2-r1
Chainguard gradle-8 0 8.7.0-r1
Chainguard hadoop-client-modules 0 3.3.6-r2
Chainguard hive 0 4.0.1-r1
Chainguard hive-compat 0 4.0.1-r1
Chainguard jenkins 0 2.447-r0
Chainguard jenkins-compat 0 2.447-r0
Chainguard jenkins-remoting 0 2.447-r0
Chainguard neo4j 0 5.18.0-r0
Chainguard neo4j-oci-entrypoint 0 5.18.0-r0
Chainguard opensearch-2 0 2.12.0-r1
Chainguard opensearch-2-alerting 0 2.12.0-r1
Chainguard opensearch-2-analysis-icu 0 2.12.0-r1
Chainguard opensearch-2-analysis-kuromoji 0 2.12.0-r1
Chainguard opensearch-2-analysis-nori 0 2.12.0-r1
Chainguard opensearch-2-analysis-phonetic 0 2.12.0-r1
Chainguard opensearch-2-analysis-smartcn 0 2.12.0-r1
Chainguard opensearch-2-analysis-stempel 0 2.12.0-r1
Chainguard opensearch-2-analysis-ukrainian 0 2.12.0-r1
Chainguard opensearch-2-anomaly-detection 0 2.12.0-r1
Chainguard opensearch-2-asynchronous-search 0 2.12.0-r1
Chainguard opensearch-2-cross-cluster-replication 0 2.12.0-r1
Chainguard opensearch-2-crypto-kms 0 2.12.0-r1
Chainguard opensearch-2-custom-codecs 0 2.12.0-r1
Chainguard opensearch-2-discovery-azure-classic 0 2.12.0-r1
Chainguard opensearch-2-discovery-ec2 0 2.12.0-r1
Chainguard opensearch-2-discovery-gce 0 2.12.0-r1
Chainguard opensearch-2-entrypoint-compat 0 2.12.0-r1
Chainguard opensearch-2-geospatial 0 2.12.0-r1
Chainguard opensearch-2-identity-shiro 0 2.12.0-r1
Chainguard opensearch-2-index-management 0 2.12.0-r1
Chainguard opensearch-2-ingest-attachment 0 2.12.0-r1
Chainguard opensearch-2-job-scheduler 0 2.12.0-r1
Chainguard opensearch-2-jre-bcfips 0 2.14.0-r0
Chainguard opensearch-2-jre-bcfips-alerting 0 2.14.0-r0
Chainguard opensearch-2-jre-bcfips-analysis-icu 0 2.14.0-r0
Chainguard opensearch-2-jre-bcfips-analysis-kuromoji 0 2.14.0-r0
Chainguard opensearch-2-jre-bcfips-analysis-nori 0 2.14.0-r0
Chainguard opensearch-2-jre-bcfips-analysis-phonetic 0 2.14.0-r0
Chainguard opensearch-2-jre-bcfips-analysis-smartcn 0 2.14.0-r0
Chainguard opensearch-2-jre-bcfips-analysis-stempel 0 2.14.0-r0
Chainguard opensearch-2-jre-bcfips-analysis-ukrainian 0 2.14.0-r0
Chainguard opensearch-2-jre-bcfips-anomaly-detection 0 2.14.0-r0
Chainguard opensearch-2-jre-bcfips-asynchronous-search 0 2.14.0-r0
Chainguard opensearch-2-jre-bcfips-cross-cluster-replication 0 2.14.0-r0
Chainguard opensearch-2-jre-bcfips-crypto-kms 0 2.14.0-r0
Chainguard opensearch-2-jre-bcfips-custom-codecs 0 2.14.0-r0
Chainguard opensearch-2-jre-bcfips-discovery-azure-classic 0 2.14.0-r0
Chainguard opensearch-2-jre-bcfips-discovery-ec2 0 2.14.0-r0
Chainguard opensearch-2-jre-bcfips-discovery-gce 0 2.14.0-r0
Chainguard opensearch-2-jre-bcfips-geospatial 0 2.14.0-r0
Chainguard opensearch-2-jre-bcfips-identity-shiro 0 2.14.0-r0
Chainguard opensearch-2-jre-bcfips-index-management 0 2.14.0-r0
Chainguard opensearch-2-jre-bcfips-ingest-attachment 0 2.14.0-r0
Chainguard opensearch-2-jre-bcfips-job-scheduler 0 2.14.0-r0
Chainguard opensearch-2-jre-bcfips-k-nn 0 2.14.0-r0
Chainguard opensearch-2-jre-bcfips-mapper-annotated-text 0 2.14.0-r0
Chainguard opensearch-2-jre-bcfips-mapper-murmur3 0 2.14.0-r0
Chainguard opensearch-2-jre-bcfips-mapper-size 0 2.14.0-r0
Chainguard opensearch-2-jre-bcfips-ml-commons 0 2.14.0-r0
Chainguard opensearch-2-jre-bcfips-neural-search 0 2.14.0-r0
Chainguard opensearch-2-jre-bcfips-notifications 0 2.14.0-r0
Chainguard opensearch-2-jre-bcfips-observability 0 2.14.0-r0
Chainguard opensearch-2-jre-bcfips-performance-analyzer 0 2.14.0-r0
Chainguard opensearch-2-jre-bcfips-reporting 0 2.14.0-r0
Chainguard opensearch-2-jre-bcfips-repository-azure 0 2.14.0-r0
Chainguard opensearch-2-jre-bcfips-repository-gcs 0 2.14.0-r0
Chainguard opensearch-2-jre-bcfips-repository-s3 0 2.14.0-r0
Chainguard opensearch-2-jre-bcfips-security 0 2.14.0-r0
Chainguard opensearch-2-jre-bcfips-security-analytics 0 2.14.0-r0
Chainguard opensearch-2-jre-bcfips-sql 0 2.14.0-r0
Chainguard opensearch-2-jre-bcfips-store-smb 0 2.14.0-r0
Chainguard opensearch-2-jre-bcfips-telemetry-otel 0 2.14.0-r0
Chainguard opensearch-2-jre-bcfips-transport-nio 0 2.14.0-r0
Chainguard opensearch-2-k-nn 0 2.12.0-r1
Chainguard opensearch-2-mapper-annotated-text 0 2.12.0-r1
Chainguard opensearch-2-mapper-murmur3 0 2.12.0-r1
Chainguard opensearch-2-mapper-size 0 2.12.0-r1
Chainguard opensearch-2-ml-commons 0 2.12.0-r1
Chainguard opensearch-2-neural-search 0 2.12.0-r1
Chainguard opensearch-2-notifications 0 2.12.0-r1
Chainguard opensearch-2-observability 0 2.12.0-r1
Chainguard opensearch-2-performance-analyzer 0 2.12.0-r1
Chainguard opensearch-2-reporting 0 2.12.0-r1
Chainguard opensearch-2-repository-azure 0 2.12.0-r1
Chainguard opensearch-2-repository-gcs 0 2.12.0-r1
Chainguard opensearch-2-repository-s3 0 2.12.0-r1
Chainguard opensearch-2-security 0 2.12.0-r1
Chainguard opensearch-2-security-analytics 0 2.12.0-r1
Chainguard opensearch-2-sql 0 2.12.0-r1
Chainguard opensearch-2-store-smb 0 2.12.0-r1
Chainguard opensearch-2-telemetry-otel 0 2.12.0-r1
Chainguard opensearch-2-transport-nio 0 2.12.0-r1
Chainguard spark-3.5 0 3.5.7-r2
Chainguard spark-3.5-scala-2.12-compat 0 3.5.7-r2
Chainguard spark-3.5-scala-2.12-iamguarded-compat 0 3.5.7-r2
Chainguard spark-3.5-scala-2.13-compat 0 3.5.7-r2
Chainguard spark-fips-3.5 0 3.5.4-r17
Chainguard spark-fips-3.5-scala-2.12-compat 0 3.5.4-r17
Chainguard spark-fips-3.5-scala-2.13-compat 0 3.5.4-r17
Chainguard spdx-tools-java 0 1.1.8-r1
Chainguard spring-boot 0 3.5.3-r0
Chainguard tez 0 0.10.4-r6
Chainguard trino 0 439-r2
Chainguard trino-config 0 439-r2
Chainguard trino-oci-entrypoint 0 439-r2
Chainguard trino-plugin-accumulo 0 439-r2
Chainguard trino-plugin-ai-functions 0 439-r2
Chainguard trino-plugin-atop 0 439-r2
Chainguard trino-plugin-bigquery 0 439-r2
Chainguard trino-plugin-blackhole 0 439-r2
Chainguard trino-plugin-cassandra 0 439-r2
Chainguard trino-plugin-clickhouse 0 439-r2
Chainguard trino-plugin-delta-lake 0 439-r2
Chainguard trino-plugin-druid 0 439-r2
Chainguard trino-plugin-duckdb 0 439-r2
Chainguard trino-plugin-elasticsearch 0 439-r2
Chainguard trino-plugin-example-http 0 439-r2
Chainguard trino-plugin-exasol 0 439-r2
Chainguard trino-plugin-exchange-filesystem 0 439-r2
Chainguard trino-plugin-exchange-hdfs 0 439-r2
Chainguard trino-plugin-faker 0 439-r2
Chainguard trino-plugin-functions-python 0 439-r2
Chainguard trino-plugin-geospatial 0 439-r2
Chainguard trino-plugin-google-sheets 0 439-r2
Chainguard trino-plugin-hive 0 439-r2
Chainguard trino-plugin-http-event-listener 0 439-r2
Chainguard trino-plugin-http-server-event-listener 0 439-r2
Chainguard trino-plugin-hudi 0 439-r2
Chainguard trino-plugin-iceberg 0 439-r2
Chainguard trino-plugin-ignite 0 439-r2
Chainguard trino-plugin-jmx 0 439-r2
Chainguard trino-plugin-kafka 0 439-r2
Chainguard trino-plugin-kafka-event-listener 0 439-r2
Chainguard trino-plugin-kinesis 0 439-r2
Chainguard trino-plugin-kudu 0 439-r2
Chainguard trino-plugin-lakehouse 0 439-r2
Chainguard trino-plugin-ldap-group-provider 0 439-r2
Chainguard trino-plugin-local-file 0 439-r2
Chainguard trino-plugin-loki 0 439-r2
Chainguard trino-plugin-mariadb 0 439-r2
Chainguard trino-plugin-memory 0 439-r2
Chainguard trino-plugin-ml 0 439-r2
Chainguard trino-plugin-mongodb 0 439-r2
Chainguard trino-plugin-mysql 0 439-r2
Chainguard trino-plugin-mysql-event-listener 0 439-r2
Chainguard trino-plugin-opa 0 439-r2
Chainguard trino-plugin-openlineage 0 439-r2
Chainguard trino-plugin-opensearch 0 439-r2
Chainguard trino-plugin-oracle 0 439-r2
Chainguard trino-plugin-password-authenticators 0 439-r2
Chainguard trino-plugin-phoenix5 0 439-r2
Chainguard trino-plugin-pinot 0 439-r2
Chainguard trino-plugin-postgresql 0 439-r2
Chainguard trino-plugin-prometheus 0 439-r2
Chainguard trino-plugin-ranger 0 439-r2
Chainguard trino-plugin-raptor-legacy 0 439-r2
Chainguard trino-plugin-redis 0 439-r2
Chainguard trino-plugin-redshift 0 439-r2
Chainguard trino-plugin-resource-group-managers 0 439-r2
Chainguard trino-plugin-session-property-managers 0 439-r2
Chainguard trino-plugin-singlestore 0 439-r2
Chainguard trino-plugin-snowflake 0 439-r2
Chainguard trino-plugin-spooling-filesystem 0 439-r2
Chainguard trino-plugin-sqlserver 0 439-r2
Chainguard trino-plugin-teradata-functions 0 439-r2
Chainguard trino-plugin-thrift 0 439-r2
Chainguard trino-plugin-tpcds 0 439-r2
Chainguard trino-plugin-tpch 0 439-r2
Chainguard trino-plugin-vertica 0 439-r2
Chainguard wavefront-proxy 0 13.4-r3
Chainguard wavefront-proxy-compat 0 13.4-r3
Chainguard wavefront-proxy-config 0 13.4-r3
Chainguard wavefront-proxy-licenses 0 13.4-r3
Chainguard wavefront-proxy-oci-entrypoint 0 13.4-r3
Debian:11 libcommons-compress-java 0 No fix
Debian:12 libcommons-compress-java 0 No fix
Debian:13 libcommons-compress-java 0 No fix
SUSE:Enterprise Storage 7.1 apache-commons-codec 0 1.16.1-150200.3.9.1
SUSE:Enterprise Storage 7.1 apache-commons-compress 0 1.26.0-150200.3.16.1
SUSE:Enterprise Storage 7.1 apache-commons-configuration2 0 2.9.0-150200.5.5.1
SUSE:Enterprise Storage 7.1 apache-commons-io 0 2.15.1-150200.3.12.1
SUSE:Enterprise Storage 7.1 javapackages-meta 0 6.2.0-150200.3.7.1
SUSE:Enterprise Storage 7.1 maven 0 3.9.6-150200.4.21.2
SUSE:Enterprise Storage 7.1 maven-doxia 0 1.12.0-150200.4.7.2
SUSE:Enterprise Storage 7.1 maven-doxia-sitetools 0 1.11.1-150200.3.7.1
SUSE:Enterprise Storage 7.1 maven-jar-plugin 0 3.3.0-150200.3.10.1

Related vulnerabilities