CVE-2025-48924
Java vulnerability analysis and mitigation

Overview

CVE-2025-48924 is an Uncontrolled Recursion vulnerability in Apache Commons Lang that allows unauthenticated network attackers to trigger a StackOverflowError by supplying very long inputs to the ClassUtils.getClass(...) method, potentially causing the application to crash. It affects commons-lang:commons-lang versions 2.0 through 2.6 and org.apache.commons:commons-lang3 versions 3.0 through 3.17.x. The vulnerability was disclosed on July 11, 2025, with the fix available in commons-lang3 3.18.0. It carries a CVSS v3.1 base score of 5.3 (Medium) (Red Hat Advisory, OSS-Security).

Technical details

The root cause is CWE-674 (Uncontrolled Recursion): the ClassUtils.getClass(...) method in Apache Commons Lang performs recursive processing without adequate depth limits, causing a StackOverflowError when given a sufficiently long class name string as input. Because StackOverflowError is a Java Error (not an Exception), it is typically not caught by application or library error handlers, meaning the JVM thread — and potentially the entire application — can be terminated. The vulnerability was discovered via OSS-Fuzz (Issue 42522972) and requires no authentication or special privileges to trigger over a network if the affected method is reachable through a user-controlled input path (OSS-Security, Apache Mailing List).

Impact

Successful exploitation results in a Denial of Service (DoS): the targeted application crashes or becomes unavailable due to an unhandled StackOverflowError. There is no confidentiality or integrity impact — the vulnerability is limited to availability. Downstream products that embed Apache Commons Lang and expose ClassUtils.getClass(...) to user-controlled input are also affected, including IBM Business Automation Manager Open Editions, IBM API Connect, IBM Guardium Data Security Center, IBM Db2 on Cloud Pak for Data, Oracle GoldenGate Stream Analytics, and Oracle Database Server (Red Hat Advisory, Oracle CPU Jan 2026, Oracle CPU Apr 2026).

Exploitability

There is no public proof-of-concept exploit and no evidence of in-the-wild exploitation at this time. The vulnerability is not listed in the CISA Known Exploited Vulnerabilities (KEV) catalog. The EPSS score is approximately 0.028% (very low probability of exploitation in the near term). Exploitation requires sending a crafted request with a very long input string to an application endpoint that internally invokes ClassUtils.getClass(...), which limits practical exploitability to applications that expose this code path to external input (Red Hat Advisory, OSS-Security).

Exploitation steps

  1. Reconnaissance: Identify applications that use Apache Commons Lang versions 2.0–2.6 or 3.0–3.17.x and expose functionality that internally calls ClassUtils.getClass(...) with user-supplied input (e.g., class-loading endpoints, serialization handlers, or reflection-based APIs).
  2. Craft malicious input: Construct a very long class name string (e.g., deeply nested array notation or extremely long package path) designed to trigger unbounded recursion in ClassUtils.getClass(...).
  3. Submit the payload: Send the crafted input to the target application via an HTTP request, API call, or other input vector that routes the string to the vulnerable method.
  4. Trigger StackOverflowError: The recursive method exhausts the JVM stack, throwing a StackOverflowError that propagates uncaught through the application, causing the thread or application to terminate and resulting in a denial of service (OSS-Security, Apache Mailing List).

Indicators of compromise

  • Logs: Java application logs showing java.lang.StackOverflowError stack traces originating from org.apache.commons.lang3.ClassUtils.getClass(...) or org.apache.commons.lang.ClassUtils.getClass(...).
  • Application Behavior: Sudden application crashes or service restarts without other apparent cause, particularly following receipt of unusually long input strings.
  • Network: HTTP requests containing abnormally long class name strings or deeply nested type descriptors in request parameters, headers, or body fields processed by the application.
  • Process: JVM process termination or out-of-memory/stack-overflow events logged by the JVM or application container (e.g., Tomcat, WildFly, JBoss) around the time of the crash.

Mitigation and workarounds

The primary remediation is to upgrade Apache Commons Lang to version 3.18.0 or later, which fixes the uncontrolled recursion in ClassUtils.getClass(...). For legacy systems still using the 2.x branch (commons-lang:commons-lang), upgrade to version 2.7 or migrate to the commons-lang3 library at version 3.18.0 or later. Downstream product users should apply vendor-specific patches: Oracle addressed this in the January 2026 and April 2026 Critical Patch Updates; IBM has released fixes for affected products including API Connect, Guardium Data Security Center, and Db2 on Cloud Pak for Data; Debian LTS, Red Hat, SUSE, and Ubuntu have also issued security updates. As a temporary workaround, validate and limit the length of user-supplied class name inputs before they reach the affected API (Apache Mailing List, Oracle CPU Jan 2026, Oracle CPU Apr 2026).

Community reactions

The vulnerability was reported by OSS-Fuzz (Issue 42522972) and disclosed by Gary D. Gregory of the Apache Commons project via the oss-security mailing list on July 11, 2025. Community reaction on Reddit's r/java included some commentary on the broader implications for widely-used Apache Commons libraries. Security aggregators such as Red Packet Security and Mastodon/Bluesky infosec accounts noted the disclosure shortly after publication. The vulnerability has been broadly picked up by Linux distribution security teams (Debian, Red Hat, SUSE, Ubuntu, Mageia, openSUSE) and enterprise vendors (IBM, Oracle, Splunk), reflecting the wide deployment of Apache Commons Lang across the Java ecosystem (OSS-Security, Red Hat Advisory).

Additional resources


SourceThis report was generated using AI

Related Java vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-76904CRITICAL9.8
  • Java logoJava
  • org.geotools.jdbc:gt-jdbc-postgis
NoYesAug 21, 2026
GHSA-mqjf-5f49-2fjhCRITICAL9.8
  • Java logoJava
  • org.geotools:gt-jdbc-postgis
NoYesAug 21, 2026
CVE-2026-61827HIGH8.7
  • Java logoJava
  • io.netty.incubator:netty-incubator-codec-bhttp
NoYesAug 20, 2026
CVE-2026-63202HIGH7.5
  • Java logoJava
  • io.netty.incubator:netty-incubator-codec-bhttp
NoYesAug 20, 2026
CVE-2026-63124HIGH7.5
  • Java logoJava
  • io.netty.incubator:netty-incubator-codec-bhttp
NoYesAug 20, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management