Cloudanix VulnDB

CVE-2025-24970

High · 7.5

SslHandler doesn't correctly validate packets which can lead to native crash when using native SSLEngine

CVSS

7.5

EPSS

2.2%

Published

Feb 10, 2025

CISA due date

—

Cloudanix analysis

Next patch cycle SSVC: Track

A malformed secure network connection can crash affected services that use this software, potentially causing outages until they are updated.

Exploitation
Remote Unauthenticated
Attacker needs
None
Complexity
Low
Impact
Denial Of Service
Component
Library
Class
Improper Input Validation
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

This vulnerability is an improper input validation flaw in Netty's SslHandler. A specially crafted TLS/SSL packet can reach validation paths that are not handled correctly in all cases, causing a native crash in the process using Netty. The primary security impact is remote denial of service against applications, brokers, gateways, API services, or other network-facing Java services that terminate TLS using affected Netty code paths. The available information supports service crash/availability impact, not code execution or data disclosure.

Why it matters to the business

Applications that expose TLS endpoints through affected Netty versions may be remotely crashed by malformed network traffic, causing outages, failed requests, degraded service reliability, and possible cascading failures in systems that depend on those services. The CVSS score is high at 7.5 because exploitation can be network-based and affect availability, but current public exploit maturity is listed as none, EPSS is low at 0.02112, and it is not in the CISA Known Exploited Vulnerabilities catalog, so remediation should be prioritized for internet-facing and business-critical services rather than treated as confirmed active mass exploitation.

How an attack unfolds

An attacker first identifies a service that accepts TLS connections and is implemented with an affected Netty build. The attacker then opens a network connection and sends a specially crafted SSL/TLS packet that exercises SslHandler validation behavior. Instead of rejecting the malformed packet cleanly, the affected code path can trigger a native crash. If the application process terminates or its event loop is destabilized, the service becomes unavailable until restarted by a supervisor, container orchestrator, or operator. Repeated delivery of the crafted packet can turn a single crash into a sustained denial-of-service condition. No authentication is implied by the vulnerability description, and exploitation is most relevant where the vulnerable TLS listener is reachable by untrusted clients.

How to fix it

Upgrade affected Netty code to a version that includes the upstream fix. For source-based consumers of netty/netty, ensure the codebase includes commit 87f40725155b2f89adfde68c7732f97c153676c4 or a later release containing that change. For packaged dependencies, update all Netty artifacts consistently rather than mixing patched and unpatched modules; pay particular attention to applications that include Netty transitively through frameworks, RPC stacks, API gateways, message brokers, service meshes, or embedded servers. Rebuild and redeploy affected services after dependency updates. Where immediate patching is not possible, reduce exposure by limiting access to affected TLS listeners, placing services behind load balancers or proxies that normalize or reject malformed TLS traffic, enabling process supervision and restart limits, and applying rate limiting for repeated failed TLS handshakes from the same source. Mitigations should be treated as temporary because the vulnerability is in packet handling logic inside the application dependency.

How to confirm the fix worked

Confirm exposure by generating a software bill of materials or dependency inventory and checking for Netty components built from affected netty/netty code prior to commit 87f40725155b2f89adfde68c7732f97c153676c4. Validate remediation by confirming the deployed artifact, container image, or runtime classpath contains patched Netty modules and no older duplicate Netty JARs are shadowing the fixed version. In source builds, verify the fix commit is present with source-control tooling. In runtime validation, review application startup logs or dependency reports for Netty versions, then perform normal TLS handshake and negative malformed-input testing in a controlled environment to ensure malformed TLS traffic is rejected without process crash. Finally, verify orchestration logs show no new native crash loops, JVM fatal error files, or unexplained restarts after deployment.

Typical attack path

  1. Scan or enumerate externally reachable TLS services that may be implemented with Netty.
  2. Confirm service behavior consistent with a Java/Netty-based TLS endpoint, where feasible from banners, protocol behavior, dependency disclosures, or application fingerprinting.
  3. Establish a TLS connection attempt to the target service.
  4. Send a specially crafted malformed SSL/TLS packet that reaches the vulnerable SslHandler validation path.
  5. Trigger a native crash in the process handling the connection.
  6. Repeat the malformed connection attempts to sustain service disruption or defeat automatic restart mechanisms.

How to detect it

To determine whether exploitation may already have occurred, correlate network, application, JVM, operating system, and orchestration telemetry around service restarts. Review application logs for Netty SslHandler exceptions, abrupt connection closures during TLS negotiation, and bursts of failed handshakes. Review JVM crash artifacts such as hs_err_pid files, fatal error logs, core dumps, and container termination events that occurred shortly after inbound TLS connection attempts. In Linux environments, check syslog, journald, kernel logs, and container runtime events for SIGSEGV, SIGABRT, core dumped, or abnormal Java process exits. In Kubernetes or similar platforms, review pod restart counts, CrashLoopBackOff events, OOM-independent restarts, and previous container logs. In network telemetry, look for repeated short-lived TLS connections, malformed ClientHello or TLS record parsing failures, handshake failures concentrated from a small set of source IPs, and spikes in TLS negotiation errors immediately preceding crashes. Because no public exploit signature or unique packet bytes are provided, detection should focus on crash artifacts plus temporal correlation with malformed TLS traffic rather than a single definitive IOC.

  • io.netty.handler.ssl.SslHandler
  • javax.net.ssl.SSLException
  • javax.net.ssl.SSLHandshakeException
  • not an SSL/TLS record
  • failed to decode packet
  • fatal error detected by the Java Runtime Environment
  • hs_err_pid
  • SIGSEGV
  • SIGABRT
  • core dumped
  • Problematic frame:
  • java.lang.Error: Cleaner terminated abnormally
  • CrashLoopBackOff
  • Back-off restarting failed container
  • Container exited with status 134
  • Container exited with status 139
  • SSL routines
  • tlsv1 alert decode error
  • bad record mac
  • wrong version number

What your security team should do

  • Inventory all externally reachable and business-critical services that use Netty for TLS handling, including transitive dependency use through Java frameworks and embedded servers.
  • Prioritize patching internet-facing TLS listeners and high-availability backend services to Netty builds containing commit 87f40725155b2f89adfde68c7732f97c153676c4 or later fixed releases.
  • Search build artifacts, container images, and runtime classpaths for duplicate or stale Netty JARs that could keep vulnerable code in production despite a declared dependency update.
  • Add monitoring for JVM fatal errors, native crashes, container restarts, and spikes in failed TLS handshakes on Netty-based services.
  • Use edge controls such as reverse proxies, load balancers, ACLs, and rate limiting to reduce direct exposure of vulnerable TLS listeners until all affected services are patched.
  • Treat repeated malformed TLS handshake failures followed by Java process termination as suspicious and investigate for denial-of-service attempts.
  • Track upstream Netty advisories and framework vendor updates, because many organizations consume Netty indirectly and may need patched framework releases rather than only direct dependency changes.

The record

When a special crafted packet is received via SslHandler it doesn't correctly handle validation of such a packet in all cases which can lead to a native crash.

Affected packages

Ecosystem Package Introduced Fixed
Maven io.netty:netty-handler 4.1.91.Final 4.1.118.Final
Chainguard akhq 0 0.25.1-r3
Chainguard apache-activemq-artemis 0 2.39.0-r1
Chainguard apache-activemq-artemis-compat 0 2.39.0-r1
Chainguard apache-nifi 0 2.2.0-r2
Chainguard apache-nifi-compat 0 2.2.0-r2
Chainguard apache-nifi-toolkit 0 2.2.0-r2
Chainguard apache-pulsar 0 4.0.3-r0
Chainguard apache-pulsar-compat 0 4.0.3-r0
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.9-r1
Chainguard camunda-zeebe-compat 0 8.6.9-r1
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.8.0-r2
Chainguard celeborn-0.5-compat 0 0.5.4-r9
Chainguard cloudwatch-exporter 0 0.16.0-r3
Chainguard cqlsh-5.0 0 0
Chainguard cqlsh-fips-5.0 0 0
Chainguard docker-selenium 0 4.28.1.20250202-r1
Chainguard docker-selenium-base 0 4.28.1.20250202-r1
Chainguard docker-selenium-compat 0 4.28.1.20250202-r1
Chainguard docker-selenium-config 0 4.28.1.20250202-r1
Chainguard docker-selenium-distributor 0 4.28.1.20250202-r1
Chainguard docker-selenium-event-bus 0 4.28.1.20250202-r1
Chainguard docker-selenium-hub 0 4.28.1.20250202-r1
Chainguard docker-selenium-jre-bcfips 0 4.28.1.20250202-r1
Chainguard docker-selenium-jre-bcfips-supervisor-config 0 4.28.1.20250202-r1
Chainguard docker-selenium-node-base 0 4.28.1.20250202-r1
Chainguard docker-selenium-node-chromium 0 4.28.1.20250202-r1
Chainguard docker-selenium-node-docker 0 4.28.1.20250202-r1
Chainguard docker-selenium-node-firefox 0 4.28.1.20250202-r1
Chainguard docker-selenium-router 0 4.28.1.20250202-r1
Chainguard docker-selenium-session-queue 0 4.28.1.20250202-r1
Chainguard docker-selenium-sessions 0 4.28.1.20250202-r1
Chainguard docker-selenium-standalone 0 4.28.1.20250202-r1
Chainguard docker-selenium-standalone-chrome 0 4.28.1.20250202-r1
Chainguard docker-selenium-standalone-chromium 0 4.28.1.20250202-r1
Chainguard docker-selenium-standalone-docker 0 4.28.1.20250202-r1
Chainguard docker-selenium-standalone-firefox 0 4.28.1.20250202-r1
Chainguard docker-selenium-supervisor-config 0 4.28.1.20250202-r1
Chainguard druid 0 32.0.0-r5
Chainguard druid-compat 0 32.0.0-r5
Chainguard elasticsearch-7 0 7.17.27-r4
Chainguard elasticsearch-7-bitnami 0 7.17.27-r4
Chainguard elasticsearch-7-iamguarded 0 7.17.27-r4
Chainguard elasticsearch-fips-8 0 8.17.2-r1
Chainguard elasticsearch-fips-8-bitnami 0 8.17.2-r1
Chainguard elasticsearch-fips-8-config 0 8.17.2-r1
Chainguard elasticsearch-fips-8-policy-140-2 0 8.17.2-r1
Chainguard elasticsearch-fips-8-policy-140-3 0 8.17.2-r1
Chainguard flyway 0 11.3.1-r1
Chainguard kafka-3.7 0 3.7.2-r2
Chainguard kafka-3.8 0 3.8.1-r3
Chainguard kafka-3.8 0 3.8.1-r46
Chainguard kafka-3.9 0 3.9.0-r2
Chainguard kafka-bitnami-compat-3.7 0 3.7.2-r2
Chainguard kafka-bitnami-compat-3.8 0 3.8.1-r3
Chainguard kafka-bitnami-compat-3.9 0 3.9.0-r2
Chainguard kafka-jre-bcfips 0 3.9.0-r1
Chainguard kafka-strimzi-compat 0 0.47.0-r1
Chainguard kafka-strimzi-compat 0 0.45.0-r1
Chainguard kafka_exporter-strimzi-compat 0 0.47.0-r1
Chainguard kafka_exporter-strimzi-compat 0 0.45.0-r1
Chainguard keycloak 0 26.1.3-r0
Chainguard keycloak-bitnami-compat 0 26.1.3-r0
Chainguard keycloak-bitnami-fips 0 26.1.2-r1
Chainguard keycloak-compat 0 26.1.3-r0
Chainguard keycloak-fips 0 26.1.2-r1
Chainguard keycloak-fips-bitnami-compat 0 26.1.2-r1
Chainguard keycloak-fips-policy-140-2 0 26.1.2-r1
Chainguard keycloak-fips-policy-140-3 0 26.1.2-r1
Chainguard keycloak-iamguarded-compat 0 26.1.3-r0
Chainguard keycloak-iamguarded-fips 0 26.1.2-r1
Chainguard keycloak-operator 0 26.1.2-r1
Chainguard keycloak-operator-compat 0 26.1.2-r1
Chainguard knative-kafka-broker-1.17-dispatcher-loom 0 1.17.3-r3
Chainguard knative-kafka-broker-1.17-receiver-loom 0 1.17.3-r3
Chainguard kserve-modelmesh 0 0.12.0-r7
Chainguard kserve-modelmesh 0 0.12.0-r18
Chainguard kserve-modelmesh-compat 0 0.12.0-r7
Chainguard kserve-modelmesh-compat 0 0.12.0-r18
Chainguard localstack 0 4.10.0-r0
Chainguard localstack-compat 0 4.10.0-r0
Chainguard logstash-8 0 8.17.2-r2
Chainguard logstash-8-bitnami-compat 0 8.17.2-r2
Chainguard logstash-8-compat 0 8.17.2-r2
Chainguard logstash-8-env2yaml 0 8.17.2-r2
Chainguard logstash-8-iamguarded-compat 0 8.17.2-r2
Chainguard logstash-8-with-output-opensearch 0 8.17.2-r2
Chainguard logstash-jre-bcfips 0 8.17.3-r0
Chainguard logstash-jre-bcfips-compat 0 8.17.3-r0
Chainguard logstash-jre-bcfips-env2yaml 0 8.17.3-r0
Chainguard logstash-jre-bcfips-with-output-opensearch 0 8.17.3-r0
Chainguard management-api-for-apache-cassandra-4.0 0 0.1.97-r1
Chainguard management-api-for-apache-cassandra-4.0-compat 0 0.1.97-r1
Chainguard management-api-for-apache-cassandra-4.1 0 0.1.97-r1
Chainguard management-api-for-apache-cassandra-4.1-compat 0 0.1.97-r1
Chainguard management-api-for-apache-cassandra-5.0 0 0.1.97-r1
Chainguard management-api-for-apache-cassandra-5.0-compat 0 0.1.97-r1
Chainguard neo4j-4.4 0 4.4.46-r0
Chainguard neo4j-4.4-docker-publish 0 4.4.46-r0
Chainguard neo4j-5.26 0 5.26.4-r0
Chainguard neo4j-5.26-docker-publish 0 5.26.4-r0
Chainguard neo4j-5.26-oci-entrypoint 0 5.26.4-r0
Chainguard opensearch-2 0 2.19.1-r0
Chainguard opensearch-2-alerting 0 2.19.1-r0
Chainguard opensearch-2-analysis-icu 0 2.19.1-r0
Chainguard opensearch-2-analysis-kuromoji 0 2.19.1-r0
Chainguard opensearch-2-analysis-nori 0 2.19.1-r0
Chainguard opensearch-2-analysis-phonetic 0 2.19.1-r0
Chainguard opensearch-2-analysis-smartcn 0 2.19.1-r0
Chainguard opensearch-2-analysis-stempel 0 2.19.1-r0
Chainguard opensearch-2-analysis-ukrainian 0 2.19.1-r0
Chainguard opensearch-2-anomaly-detection 0 2.19.1-r0
Chainguard opensearch-2-asynchronous-search 0 2.19.1-r0
Chainguard opensearch-2-cross-cluster-replication 0 2.19.1-r0
Chainguard opensearch-2-crypto-kms 0 2.19.1-r0
Chainguard opensearch-2-custom-codecs 0 2.19.1-r0
Chainguard opensearch-2-discovery-azure-classic 0 2.19.1-r0
Chainguard opensearch-2-discovery-ec2 0 2.19.1-r0
Chainguard opensearch-2-discovery-gce 0 2.19.1-r0
Chainguard opensearch-2-entrypoint-compat 0 2.19.1-r0
Chainguard opensearch-2-geospatial 0 2.19.1-r0
Chainguard opensearch-2-identity-shiro 0 2.19.1-r0
Chainguard opensearch-2-index-management 0 2.19.1-r0
Chainguard opensearch-2-ingest-attachment 0 2.19.1-r0
Chainguard opensearch-2-job-scheduler 0 2.19.1-r0
Chainguard opensearch-2-jre-bcfips 0 2.19.1-r0
Chainguard opensearch-2-jre-bcfips-alerting 0 2.19.1-r0
Chainguard opensearch-2-jre-bcfips-analysis-icu 0 2.19.1-r0
Chainguard opensearch-2-jre-bcfips-analysis-kuromoji 0 2.19.1-r0
Chainguard opensearch-2-jre-bcfips-analysis-nori 0 2.19.1-r0
Chainguard opensearch-2-jre-bcfips-analysis-phonetic 0 2.19.1-r0
Chainguard opensearch-2-jre-bcfips-analysis-smartcn 0 2.19.1-r0
Chainguard opensearch-2-jre-bcfips-analysis-stempel 0 2.19.1-r0
Chainguard opensearch-2-jre-bcfips-analysis-ukrainian 0 2.19.1-r0
Chainguard opensearch-2-jre-bcfips-anomaly-detection 0 2.19.1-r0
Chainguard opensearch-2-jre-bcfips-asynchronous-search 0 2.19.1-r0
Chainguard opensearch-2-jre-bcfips-cross-cluster-replication 0 2.19.1-r0
Chainguard opensearch-2-jre-bcfips-crypto-kms 0 2.19.1-r0
Chainguard opensearch-2-jre-bcfips-custom-codecs 0 2.19.1-r0
Chainguard opensearch-2-jre-bcfips-discovery-azure-classic 0 2.19.1-r0
Chainguard opensearch-2-jre-bcfips-discovery-ec2 0 2.19.1-r0
Chainguard opensearch-2-jre-bcfips-discovery-gce 0 2.19.1-r0
Chainguard opensearch-2-jre-bcfips-geospatial 0 2.19.1-r0
Chainguard opensearch-2-jre-bcfips-identity-shiro 0 2.19.1-r0
Chainguard opensearch-2-jre-bcfips-index-management 0 2.19.1-r0
Chainguard opensearch-2-jre-bcfips-ingest-attachment 0 2.19.1-r0
Chainguard opensearch-2-jre-bcfips-job-scheduler 0 2.19.1-r0
Chainguard opensearch-2-jre-bcfips-k-nn 0 2.19.1-r0
Chainguard opensearch-2-jre-bcfips-mapper-annotated-text 0 2.19.1-r0
Chainguard opensearch-2-jre-bcfips-mapper-murmur3 0 2.19.1-r0
Chainguard opensearch-2-jre-bcfips-mapper-size 0 2.19.1-r0
Chainguard opensearch-2-jre-bcfips-ml-commons 0 2.19.1-r0
Chainguard opensearch-2-jre-bcfips-neural-search 0 2.19.1-r0
Chainguard opensearch-2-jre-bcfips-notifications 0 2.19.1-r0
Chainguard opensearch-2-jre-bcfips-observability 0 2.19.1-r0
Chainguard opensearch-2-jre-bcfips-performance-analyzer 0 2.19.1-r0
Chainguard opensearch-2-jre-bcfips-reporting 0 2.19.1-r0
Chainguard opensearch-2-jre-bcfips-repository-azure 0 2.19.1-r0
Chainguard opensearch-2-jre-bcfips-repository-gcs 0 2.19.1-r0
Chainguard opensearch-2-jre-bcfips-repository-s3 0 2.19.1-r0
Chainguard opensearch-2-jre-bcfips-security 0 2.19.1-r0
Chainguard opensearch-2-jre-bcfips-security-analytics 0 2.19.1-r0
Chainguard opensearch-2-jre-bcfips-sql 0 2.19.1-r0
Chainguard opensearch-2-jre-bcfips-store-smb 0 2.19.1-r0
Chainguard opensearch-2-jre-bcfips-telemetry-otel 0 2.19.1-r0
Chainguard opensearch-2-jre-bcfips-transport-nio 0 2.19.1-r0
Chainguard opensearch-2-k-nn 0 2.19.1-r0
Chainguard opensearch-2-mapper-annotated-text 0 2.19.1-r0
Chainguard opensearch-2-mapper-murmur3 0 2.19.1-r0
Chainguard opensearch-2-mapper-size 0 2.19.1-r0
Chainguard opensearch-2-ml-commons 0 2.19.1-r0
Chainguard opensearch-2-neural-search 0 2.19.1-r0
Chainguard opensearch-2-notifications 0 2.19.1-r0
Chainguard opensearch-2-observability 0 2.19.1-r0
Chainguard opensearch-2-performance-analyzer 0 2.19.1-r0
Chainguard opensearch-2-reporting 0 2.19.1-r0
Chainguard opensearch-2-repository-azure 0 2.19.1-r0
Chainguard opensearch-2-repository-gcs 0 2.19.1-r0
Chainguard opensearch-2-repository-s3 0 2.19.1-r0
Chainguard opensearch-2-security 0 2.19.1-r0
Chainguard opensearch-2-security-analytics 0 2.19.1-r0
Chainguard opensearch-2-sql 0 2.19.1-r0
Chainguard opensearch-2-store-smb 0 2.19.1-r0
Chainguard opensearch-2-telemetry-otel 0 2.19.1-r0
Chainguard opensearch-2-transport-nio 0 2.19.1-r0
Chainguard prometheus-jmx-exporter-strimzi-compat 0 0.47.0-r1
Chainguard selenium 0 4.28.0-r1
Chainguard selenium-jre-bcfips 0 4.28.0-r1
Chainguard selenium-server 0 4.28.0-r1
Chainguard selenium-server-compat 0 4.28.0-r1
Chainguard selenium-server-jre-bcfips 0 4.28.0-r1

Related vulnerabilities