CVE-2024-47535
Medium · 5.5CVSS
5.5
EPSS
0.4%
Published
Nov 12, 2024
CISA due date
—
Cloudanix analysis
A flaw in a common software component on Windows systems could allow a local user to crash an application by creating a very large file, making the service unavailable.
- Exploitation
- Local Privilege
- Attacker needs
- Local User
- Complexity
- Low
- Impact
- Denial Of Service
- Component
- Library
- Class
- Denial of service
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
A vulnerability in the Netty framework on Windows systems allows for a denial of service. The framework attempts to read a specific file, and if a local attacker creates an extremely large file at that location, the application will try to load it, leading to excessive memory consumption and a subsequent crash of the application process.
Why it matters to the business
Applications relying on the vulnerable Netty library can be rendered unavailable by a local, low-privileged attacker. This can lead to service outages for critical business functions, impacting customers, operations, and revenue. The requirement for local access lowers the immediate threat compared to a remote vulnerability, but it poses a significant risk on multi-user systems or as part of a post-compromise attack chain.
How an attack unfolds
An attacker with low-privileged local access to a Windows system first identifies an application using a vulnerable version of Netty. The attacker then determines the specific, predictable file path that Netty attempts to access. By creating a file of an exceptionally large size at this location, the attacker sets a trap. When the Netty-based application is next launched or performs an action that triggers the file read, it will attempt to load the entire large file into memory. This exhausts available system resources, causing the application to crash and resulting in a denial of service.
How to fix it
To remediate this vulnerability, developers must upgrade the Netty library to version 4.1.115 or later. This involves updating the dependency in the project's build configuration (e.g., pom.xml, build.gradle), rebuilding the application, and deploying the updated version. The fix is contained in commit 04f9b4a827d992ad439823eeba85d65d3a89c265 and later.
How to confirm the fix worked
To validate exposure, use a software composition analysis (SCA) tool or manually inspect application dependencies to find instances of Netty versions prior to 4.1.115 on Windows systems. To confirm the fix, verify that deployed applications are running with Netty 4.1.115 or a newer version. On a non-production system, you can attempt to reproduce the vulnerability by creating a large file in the expected path and observing if the application crashes; a patched system should not crash.
Typical attack path
- An attacker gains local, low-privileged user access to a target Windows host.
- The attacker identifies an application using a vulnerable version of the Netty library.
- The attacker creates a very large file in the specific path that the Netty library attempts to read from.
- The Netty-based application is started or performs an operation that triggers the vulnerable file read.
- The application attempts to load the large file, exhausts memory, and crashes.
How to detect it
To detect potential exploitation, monitor for unexpected application crashes on Windows systems, particularly those related to memory exhaustion or file I/O errors. Correlate these events with file system audit logs, looking for the creation of unusually large files by low-privileged users in application directories or other predictable paths. Review application logs for errors indicating a failure to read or process a file right before a crash.
What your security team should do
- Identify all applications using the Netty library on Windows systems and prioritize patching for critical services and multi-user systems.
- Direct development teams to upgrade their projects to use Netty version 4.1.115 or newer and redeploy the applications.
- As a temporary mitigation where patching is not immediately possible, investigate tightening file system permissions to prevent low-privileged users from creating files in the path Netty attempts to read.
The record
Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. An unsafe reading of environment file could potentially cause a denial of service in Netty. When loaded on an Windows application, Netty attempts to load a file that does not exist. If an attacker creates such a large file, the Netty application crashes. This vulnerability is fixed in 4.1.115.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Maven | io.netty:netty-common | 0 | 4.1.115 |
| Maven | io.netty:netty-common | 0 | 4.1.115.Final |
| Chainguard | akhq | 0 | 0 |
| Chainguard | apache-nifi | 0 | 0 |
| Chainguard | apache-nifi-compat | 0 | 0 |
| Chainguard | apache-nifi-toolkit | 0 | 0 |
| Chainguard | apicurio-registry | 0 | 3.0.6-r1 |
| Chainguard | apicurio-registry-nginx-config | 0 | 3.0.6-r1 |
| Chainguard | apicurio-registry-ui | 0 | 3.0.6-r1 |
| Chainguard | camunda-zeebe | 0 | 8.6.6-r0 |
| Chainguard | camunda-zeebe-compat | 0 | 8.6.6-r0 |
| Chainguard | cassandra-5.0 | 0 | 0 |
| Chainguard | cassandra-5.0-compat | 0 | 0 |
| Chainguard | cassandra-5.0-entrypoint-compat | 0 | 0 |
| Chainguard | cassandra-5.0-iamguarded-compat | 0 | 0 |
| Chainguard | cassandra-fips-5.0 | 0 | 0 |
| Chainguard | cassandra-fips-5.0-compat | 0 | 0 |
| Chainguard | cassandra-reaper | 0 | 3.7.0-r0 |
| Chainguard | cassandra-reaper | 0 | 0 |
| Chainguard | cassandra-reaper-jre-bcfips | 0 | 3.7.0-r0 |
| Chainguard | cassandra-reaper-jre-bcfips | 0 | 0 |
| Chainguard | cloudwatch-exporter | 0 | 0.16.0-r2 |
| Chainguard | cloudwatch-exporter | 0 | 0 |
| Chainguard | confluent-kafka | 0 | 8.0.0.153-r0 |
| Chainguard | confluent-kafka | 0 | 0 |
| Chainguard | confluent-kafka-jre-bcfips | 0 | 0 |
| Chainguard | cqlsh-5.0 | 0 | 0 |
| Chainguard | cqlsh-fips-5.0 | 0 | 0 |
| Chainguard | docker-selenium | 0 | 0 |
| Chainguard | docker-selenium-base | 0 | 0 |
| Chainguard | docker-selenium-compat | 0 | 0 |
| Chainguard | docker-selenium-config | 0 | 0 |
| Chainguard | docker-selenium-distributor | 0 | 0 |
| Chainguard | docker-selenium-event-bus | 0 | 0 |
| Chainguard | docker-selenium-hub | 0 | 0 |
| Chainguard | docker-selenium-jre-bcfips | 0 | 0 |
| Chainguard | docker-selenium-jre-bcfips-supervisor-config | 0 | 0 |
| Chainguard | docker-selenium-node-base | 0 | 0 |
| Chainguard | docker-selenium-node-chromium | 0 | 0 |
| Chainguard | docker-selenium-node-docker | 0 | 0 |
| Chainguard | docker-selenium-node-firefox | 0 | 0 |
| Chainguard | docker-selenium-router | 0 | 0 |
| Chainguard | docker-selenium-session-queue | 0 | 0 |
| Chainguard | docker-selenium-sessions | 0 | 0 |
| Chainguard | docker-selenium-standalone | 0 | 0 |
| Chainguard | docker-selenium-standalone-chrome | 0 | 0 |
| Chainguard | docker-selenium-standalone-chromium | 0 | 0 |
| Chainguard | docker-selenium-standalone-docker | 0 | 0 |
| Chainguard | docker-selenium-standalone-firefox | 0 | 0 |
| Chainguard | docker-selenium-supervisor-config | 0 | 0 |
| Chainguard | druid | 0 | 31.0.0-r2 |
| Chainguard | druid | 0 | 0 |
| Chainguard | druid-compat | 0 | 31.0.0-r2 |
| Chainguard | druid-compat | 0 | 0 |
| Chainguard | elasticsearch-7 | 0 | 0 |
| Chainguard | elasticsearch-7-bitnami | 0 | 0 |
| Chainguard | elasticsearch-7-iamguarded | 0 | 0 |
| Chainguard | elasticsearch-8 | 0 | 8.16.0-r0 |
| Chainguard | elasticsearch-8 | 0 | 0 |
| Chainguard | elasticsearch-8-bitnami | 0 | 0 |
| Chainguard | elasticsearch-8-config | 0 | 0 |
| Chainguard | elasticsearch-8-iamguarded | 0 | 0 |
| Chainguard | elasticsearch-config | 0 | 8.16.0-r0 |
| Chainguard | elasticsearch-config | 0 | 0 |
| Chainguard | elasticsearch-fips-8 | 0 | 8.16.0-r0 |
| Chainguard | elasticsearch-fips-8 | 0 | 0 |
| Chainguard | elasticsearch-fips-8-bitnami | 0 | 0 |
| Chainguard | elasticsearch-fips-8-config | 0 | 8.16.0-r0 |
| Chainguard | elasticsearch-fips-8-config | 0 | 0 |
| Chainguard | elasticsearch-fips-8-policy-140-2 | 0 | 8.16.0-r0 |
| Chainguard | elasticsearch-fips-8-policy-140-2 | 0 | 0 |
| Chainguard | elasticsearch-fips-8-policy-140-3 | 0 | 8.16.0-r0 |
| Chainguard | elasticsearch-fips-8-policy-140-3 | 0 | 0 |
| Chainguard | flyway | 0 | 11.15.0-r1 |
| Chainguard | grpc-java-fips-1.56.0 | 0 | 0 |
| Chainguard | grpc-java-fips-1.56.0-m2 | 0 | 0 |
| Chainguard | hadoop-3.3 | 0 | 0 |
| Chainguard | hadoop-3.3-compat | 0 | 0 |
| Chainguard | hadoop-fips-3.3.6 | 0 | 3.3.6-r15 |
| Chainguard | hive | 0 | 0 |
| Chainguard | hive-compat | 0 | 0 |
| Chainguard | kafka-3.7 | 0 | 0 |
| Chainguard | kafka-3.8 | 0 | 0 |
| Chainguard | kafka-3.9 | 0 | 0 |
| Chainguard | kafka-bitnami-compat-3.7 | 0 | 0 |
| Chainguard | kafka-bitnami-compat-3.8 | 0 | 0 |
| Chainguard | kafka-bitnami-compat-3.9 | 0 | 0 |
| Chainguard | kafka-jre-bcfips | 0 | 0 |
| Chainguard | kafka-strimzi-compat | 0 | 0 |
| Chainguard | kafka_exporter-strimzi-compat | 0 | 0 |
| Chainguard | keycloak | 0 | 26.0.5-r1 |
| Chainguard | keycloak-bitnami-compat | 0 | 26.0.5-r1 |
| Chainguard | keycloak-bitnami-fips | 0 | 0 |
| Chainguard | keycloak-compat | 0 | 26.0.5-r1 |
| Chainguard | keycloak-fips | 0 | 0 |
| Chainguard | keycloak-fips-bitnami-compat | 0 | 0 |
| Chainguard | keycloak-fips-policy-140-2 | 0 | 0 |
| Chainguard | keycloak-fips-policy-140-3 | 0 | 0 |
| Chainguard | keycloak-iamguarded-compat | 0 | 26.0.5-r1 |
| Chainguard | keycloak-iamguarded-fips | 0 | 0 |
| Chainguard | keycloak-operator | 0 | 26.0.5-r1 |
| Chainguard | keycloak-operator | 0 | 0 |
| Chainguard | keycloak-operator-compat | 0 | 26.0.5-r1 |
| Chainguard | keycloak-operator-compat | 0 | 0 |
| Chainguard | knative-kafka-broker-1.17-dispatcher-loom | 0 | 1.17.3-r8 |
| Chainguard | knative-kafka-broker-1.17-receiver-loom | 0 | 1.17.3-r8 |
| Chainguard | kserve-modelmesh | 0 | 0.12.0-r5 |
| Chainguard | kserve-modelmesh | 0 | 0 |
| Chainguard | kserve-modelmesh-compat | 0 | 0.12.0-r5 |
| Chainguard | kserve-modelmesh-compat | 0 | 0 |
| Chainguard | localstack | 0 | 4.10.0-r0 |
| Chainguard | localstack-compat | 0 | 4.10.0-r0 |
| Chainguard | logstash-8 | 0 | 0 |
| Chainguard | logstash-8-bitnami-compat | 0 | 0 |
| Chainguard | logstash-8-compat | 0 | 0 |
| Chainguard | logstash-8-env2yaml | 0 | 0 |
| Chainguard | logstash-8-iamguarded-compat | 0 | 0 |
| Chainguard | logstash-8-with-output-opensearch | 0 | 0 |
| Chainguard | logstash-jre-bcfips | 0 | 0 |
| Chainguard | logstash-jre-bcfips-compat | 0 | 0 |
| Chainguard | logstash-jre-bcfips-env2yaml | 0 | 0 |
| Chainguard | logstash-jre-bcfips-with-output-opensearch | 0 | 0 |
| Chainguard | management-api-for-apache-cassandra-4.0 | 0 | 0 |
| Chainguard | management-api-for-apache-cassandra-4.0-compat | 0 | 0 |
| Chainguard | management-api-for-apache-cassandra-4.1 | 0 | 0 |
| Chainguard | management-api-for-apache-cassandra-4.1-compat | 0 | 0 |
| Chainguard | management-api-for-apache-cassandra-5.0 | 0 | 0 |
| Chainguard | management-api-for-apache-cassandra-5.0-compat | 0 | 0 |
| Chainguard | neo4j | 0 | 0 |
| Chainguard | neo4j-oci-entrypoint | 0 | 0 |
| Chainguard | opensearch-2 | 0 | 0 |
| Chainguard | opensearch-2-alerting | 0 | 0 |
| Chainguard | opensearch-2-analysis-icu | 0 | 0 |
| Chainguard | opensearch-2-analysis-kuromoji | 0 | 0 |
| Chainguard | opensearch-2-analysis-nori | 0 | 0 |
| Chainguard | opensearch-2-analysis-phonetic | 0 | 0 |
| Chainguard | opensearch-2-analysis-smartcn | 0 | 0 |
| Chainguard | opensearch-2-analysis-stempel | 0 | 0 |
| Chainguard | opensearch-2-analysis-ukrainian | 0 | 0 |
| Chainguard | opensearch-2-anomaly-detection | 0 | 0 |
| Chainguard | opensearch-2-asynchronous-search | 0 | 0 |
| Chainguard | opensearch-2-cross-cluster-replication | 0 | 0 |
| Chainguard | opensearch-2-crypto-kms | 0 | 0 |
| Chainguard | opensearch-2-custom-codecs | 0 | 0 |
| Chainguard | opensearch-2-discovery-azure-classic | 0 | 0 |
| Chainguard | opensearch-2-discovery-ec2 | 0 | 0 |
| Chainguard | opensearch-2-discovery-gce | 0 | 0 |
| Chainguard | opensearch-2-entrypoint-compat | 0 | 0 |
| Chainguard | opensearch-2-geospatial | 0 | 0 |
| Chainguard | opensearch-2-identity-shiro | 0 | 0 |
| Chainguard | opensearch-2-index-management | 0 | 0 |
| Chainguard | opensearch-2-ingest-attachment | 0 | 0 |
| Chainguard | opensearch-2-job-scheduler | 0 | 0 |
| Chainguard | opensearch-2-jre-bcfips | 0 | 0 |
| Chainguard | opensearch-2-jre-bcfips-alerting | 0 | 0 |
| Chainguard | opensearch-2-jre-bcfips-analysis-icu | 0 | 0 |
| Chainguard | opensearch-2-jre-bcfips-analysis-kuromoji | 0 | 0 |
| Chainguard | opensearch-2-jre-bcfips-analysis-nori | 0 | 0 |
| Chainguard | opensearch-2-jre-bcfips-analysis-phonetic | 0 | 0 |
| Chainguard | opensearch-2-jre-bcfips-analysis-smartcn | 0 | 0 |
| Chainguard | opensearch-2-jre-bcfips-analysis-stempel | 0 | 0 |
| Chainguard | opensearch-2-jre-bcfips-analysis-ukrainian | 0 | 0 |
| Chainguard | opensearch-2-jre-bcfips-anomaly-detection | 0 | 0 |
| Chainguard | opensearch-2-jre-bcfips-asynchronous-search | 0 | 0 |
| Chainguard | opensearch-2-jre-bcfips-cross-cluster-replication | 0 | 0 |
| Chainguard | opensearch-2-jre-bcfips-crypto-kms | 0 | 0 |
| Chainguard | opensearch-2-jre-bcfips-custom-codecs | 0 | 0 |
| Chainguard | opensearch-2-jre-bcfips-discovery-azure-classic | 0 | 0 |
| Chainguard | opensearch-2-jre-bcfips-discovery-ec2 | 0 | 0 |
| Chainguard | opensearch-2-jre-bcfips-discovery-gce | 0 | 0 |
| Chainguard | opensearch-2-jre-bcfips-geospatial | 0 | 0 |
| Chainguard | opensearch-2-jre-bcfips-identity-shiro | 0 | 0 |
| Chainguard | opensearch-2-jre-bcfips-index-management | 0 | 0 |
| Chainguard | opensearch-2-jre-bcfips-ingest-attachment | 0 | 0 |
| Chainguard | opensearch-2-jre-bcfips-job-scheduler | 0 | 0 |
| Chainguard | opensearch-2-jre-bcfips-k-nn | 0 | 0 |
| Chainguard | opensearch-2-jre-bcfips-mapper-annotated-text | 0 | 0 |
| Chainguard | opensearch-2-jre-bcfips-mapper-murmur3 | 0 | 0 |
| Chainguard | opensearch-2-jre-bcfips-mapper-size | 0 | 0 |
| Chainguard | opensearch-2-jre-bcfips-ml-commons | 0 | 0 |
| Chainguard | opensearch-2-jre-bcfips-neural-search | 0 | 0 |
| Chainguard | opensearch-2-jre-bcfips-notifications | 0 | 0 |
| Chainguard | opensearch-2-jre-bcfips-observability | 0 | 0 |
| Chainguard | opensearch-2-jre-bcfips-performance-analyzer | 0 | 0 |
| Chainguard | opensearch-2-jre-bcfips-reporting | 0 | 0 |
| Chainguard | opensearch-2-jre-bcfips-repository-azure | 0 | 0 |
| Chainguard | opensearch-2-jre-bcfips-repository-gcs | 0 | 0 |
| Chainguard | opensearch-2-jre-bcfips-repository-s3 | 0 | 0 |
| Chainguard | opensearch-2-jre-bcfips-security | 0 | 0 |
| Chainguard | opensearch-2-jre-bcfips-security-analytics | 0 | 0 |
| Chainguard | opensearch-2-jre-bcfips-sql | 0 | 0 |
| Chainguard | opensearch-2-jre-bcfips-store-smb | 0 | 0 |
| Chainguard | opensearch-2-jre-bcfips-telemetry-otel | 0 | 0 |
| Chainguard | opensearch-2-jre-bcfips-transport-nio | 0 | 0 |
| Chainguard | opensearch-2-k-nn | 0 | 0 |
| Chainguard | opensearch-2-mapper-annotated-text | 0 | 0 |
| Chainguard | opensearch-2-mapper-murmur3 | 0 | 0 |
| Chainguard | opensearch-2-mapper-size | 0 | 0 |
| Chainguard | opensearch-2-ml-commons | 0 | 0 |
| Chainguard | opensearch-2-neural-search | 0 | 0 |
Related vulnerabilities
- CVE-2025-25193 Denial of Service attack on windows app using Netty Also affects io.netty:netty-common
- CVE-2026-33871 Netty is an asynchronous, event-driven network application framework. Also affects akhq
- CVE-2026-33870 Netty is an asynchronous, event-driven network application framework. Also affects akhq
- CVE-2026-24281 Hostname verification in Apache ZooKeeper ZKTrustManager falls back to reverse DNS (PTR)… Also affects akhq
- CVE-2026-24308 Improper handling of configuration values in ZKConfig in Apache ZooKeeper 3.8.5 and 3.9.4… Also affects akhq
- CVE-2025-11143 The Jetty URI parser has some key differences to other common parsers when evaluating… Also affects akhq
- CVE-2025-33042 Improper Control of Generation of Code ('Code Injection') vulnerability in Apache Avro… Also affects akhq
- CVE-2026-1225 ACE vulnerability in configuration file processing by QOS.CH logback-core up to and… Also affects akhq