☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
[ WEBSITE ] [ VENDOR STATS ]
CVSS: 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H 🐛 CWE-476
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2024-23085

CVE-2024-23085 Vulnerability in Apfloat
📅 PUBLISHED: 2024-04-08 00:00 UTC 🔄 UPDATED: 2026-10-02 19:30 UTC
[ ZERO-DAY / UNPATCHED ] [ DEFENSE PATCH ↓ ]
💣 PoC: Public
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.53%
👁️
0.53% probability
13.3× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1213
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
License: Open Source
VULNERABLE: UNKNOWN / CHECK VENDOR
CVSS VECTOR BREAKDOWN 7.5
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: N Privileges Required None
UI: N User Interaction None
S: U Scope Unchanged
C: N Confidentiality None
I: N Integrity None
A: H Availability High
7.5
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2024-23085 is a reported NullPointerException (NPE) vulnerability in Apfloat version 1.10.1, specifically in the org.apfloat.internal.DoubleScramble::scramble method. Successful exploitation of this flaw could lead to a denial-of-service (DoS) condition by crashing any application that processes untrusted input through Apfloat's FFT-based arithmetic routines. The vulnerability's validity is disputed by multiple third parties; however, given the potential for DoS impact and the absence of a confirmed patch, organizations using this library should assess their exposure. The following report details the technical mechanics, exploitation scenarios, and comprehensive detection strategies for this issue.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Technical Analysis

Apfloat is an arbitrary-precision arithmetic library for Java, heavily used in scientific computing, cryptography, and financial applications where high-precision floating-point numbers are required. The library optimizes large-number multiplications and transformations using the Fast Fourier Transform (FFT), and the DoubleScramble class is part of this internal FFT processing pipeline.

The scramble method is a bit-reversal permutation routine critical for FFT operations. Its signature is void scramble(double[] data, int offset, int[] permutation). The algorithm iterates through a permutation array and swaps elements in the data array. The reported NPE occurs within this method, specifically when the method attempts to dereference an invalid reference, likely caused by an array indexing error or a null element within the permutation array.

Attack Surface Analysis: The vulnerability is triggered by supplying crafted input to any application that:

  1. Uses Apfloat for FFT-based multiplication of large numbers.
  2. Accepts user-controlled precision sizes, array lengths, or data values.
  3. Invokes the scramble method directly or indirectly via FloatFFT, DoubleFFT, or ApfloatMath.multiply.

Since the scramble method operates on internal data structures, the vulnerability is not directly exposed to network traffic but is reachable through APIs that parse or process untrusted numeric data. For instance, a web service accepting a POST request containing a JSON payload with an extremely large integer or high-precision number could trigger the FFT path, leading to the NPE.

Vulnerability Mechanics: The NPE likely manifests when the permutation array contains uninitialized elements (null references for an Integer array) or when the data array is of a length that does not match the permutation array size, leading to an out-of-bounds access that the JVM translates into a NPE. Another possibility involves the use of negative array indices, which Java converts into ArrayIndexOutOfBoundsException, but an NPE suggests a different failure mode—likely a null object reference being dereferenced inside the loop, perhaps when computing an index into a concurrent or cached data structure.

For the DoubleScramble class, the scramble method is public static void scramble(double[] data, int offset, int[] permutation). The NPE could arise if data or permutation is null, but that would be a direct call, and the method is internal. More likely, the NPE stems from an internal optimization: the code may access a static lookup table that is lazily initialized, and a race condition or malformed input leads to a null reference.


Exploitation Scenarios

While no public proof-of-concept (PoC) exists and the vulnerability is disputed, the following is a realistic exploitation chain based on the vulnerability class (NPE leading to DoS).

Scenario 1: Remote DoS via Web Application

Step 1: Reconnaissance. The attacker identifies a Java-based web application that uses Apfloat. This could be detected through:

  • Inspecting public code repositories or package manifests (e.g., pom.xml, build.gradle) if the application is open-source or the dependencies are exposed via error messages.
  • Fuzzing the application for behavior differences when handling extremely large numbers (e.g., field values with 10,000+ digits).

Step 2: Trigger/Weaponization. The attacker crafts an HTTP request to an endpoint that accepts numeric input. For instance, a REST API that adds two numbers: POST /api/calculate with payload: {"operation": "multiply", "a": "123456... (100,000 digits)", "b": "789012... (100,000 digits)"}. The application deserializes these strings and converts them to Apfloat objects. When multiplication is invoked, the library calls the FFT routine, passing the internal data arrays to DoubleScramble::scramble. The attacker selects values that force the library into a code path where the permutation array has a specific length that triggers the NPE—for example, a prime number digit length that causes an off-by-one error in the bit-reversal logic.

Step 3: Payload/Execution. The target application processes the input, invokes scramble, and throws an uncaught NullPointerException. If the exception is not handled by the application's global exception handler, the worker thread crashes. Repeated requests exhaust the application's thread pool, resulting in a denial-of-service.

Step 4: Post-Exploitation. The application becomes unresponsive to legitimate users. If the application runs inside a servlet container like Tomcat, the NPE may impact the entire application context, requiring a manual restart. The attacker can repeat the request to maintain the DoS.

Scenario 2: Local Attack via Jar/Desktop Application

Step 1: Reconnaissance. An attacker identifies a desktop application using Apfloat for batch processing of user-supplied files (e.g., a financial analysis tool that parses CSV files with high-precision numbers).

Step 2: Trigger. The attacker crafts a CSV file where a numeric field is intentionally designed to cause an NPE. The field contains a number whose length or value causes the FFT routine to over-allocate the permutation array, leaving a null entry.

Step 3: Execution. When a victim opens the file, the application processes the data and crashes with an unhandled NPE. The impact is limited to the local machine but could result in data loss if the application has unsaved state.

(Note: This is a local attack; the remote scenario is more impactful for enterprise environments.)


Impact Assessment

CVSS Analysis: The vector AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H yields a base score of 7.5 (High). The vector reflects:

  • Attack Vector: Network: The vulnerability can be triggered remotely via crafted input sent over the network.
  • Attack Complexity: Low: The attacker needs no special conditions beyond sending a valid request.
  • Privileges Required: None: No authentication is needed.
  • User Interaction: None: The victim does not need to click anything or expose additional capabilities.
  • Scope: Unchanged: The compromised component is limited to the library itself.
  • CIA Impact: Confidentiality and integrity are unaffected. Availability is High because the NPE causes a crash.

Business Impact: The primary risk is denial-of-service. For enterprise environments, this could mean:

  • Availability: Critical applications that rely on high-precision arithmetic (e.g., trading platforms, scientific calculators, cryptographic signing services) become unavailable.
  • Reputation: Prolonged outages can erode customer trust.
  • Compliance: For regulated industries (finance, healthcare), system downtime may result in SLA breaches and compliance violations.

Blast Radius: All applications embedding Apfloat 1.10.1 that process untrusted numeric input are at risk. This includes both server-side web applications and client-side processing tools. The disputed nature of the CVE suggests that many environments may not have prioritized patching, increasing the actual exposure window.


Detection Guidance

Sigma Rule

title: Apfloat NullPointerException Denial-of-Service Attempt
id: 8af5f3e2-7d84-4b1e-9f65-1c2a0e5f9a78
status: experimental
description: Detects attempts to trigger CVE-2024-23085 - NullPointerException in Apfloat DoubleScramble::scramble
tags:
    - attack.t1213
    - cve.2024.23085
logsource:
    category: application
    product: java
    service: apfloat
detection:
    selection:
        exception.type: 'java.lang.NullPointerException'
        exception.message: 'Cannot invoke "int[]" int value because the return value of "org.apfloat.internal.DoubleScramble.scramble" is null'
        stack.trace|contains: 'org.apfloat.internal.DoubleScramble.scramble'
    condition: selection
level: high
falsepositives:
    - Legitimate unexpected crashes due to memory or corruption (rare)
    - Application bugs unrelated to this specific CVE

YARA Rule

rule APFLOAT_NPE_2024_23085 {
    meta:
        author = "Valtersit CTI"
        description = "Detect classes containing vulnerable Apfloat DoubleScramble.scramble method"
        date = "2024-11-01"
        cve = "CVE-2024-23085"
        severity = "high"
    strings:
        $cls = "org/apfloat/internal/DoubleScramble" 
        $mth = "scramble" 
        $sig = "(IDI)V" ascii
    condition:
        uint16(0) == 0xCAFE and $cls and $mth and $sig
}

Suricata IDS Rule

alert http any any -> any any (msg:"Potential CVE-2024-23085 - Apfloat NPE DoS attempt via HTTP POST with large numeric payload"; flow:established,to_server; content:"POST"; http_method; content:!;"Content-Length|3a 20|2"; http_header; content:"{"; http_client_body; content:"mul"; http_client_body; bypass; threshold:type both, track by_src, count 30, seconds 60; classtype:attempted-dos; sid:1002408; rev:1;)

Elastic Detection

sequence by process.pid with maxspan=1m
  [process where process.name : "java" and event.action == "exec"]
  [exception where
      exception.type == "java.lang.NullPointerException" and
      exception.stacktrace.* : ("*DoubleScramble*", "*scramble*") and
      exception.stacktrace.class.name : "org.apfloat.internal.DoubleScramble"
  ]

Splunk SPL Query

index=java_apps sourcetype=*java* "NullPointerException" "org.apfloat.internal.DoubleScramble" 
| rex field=stackTrace "at org\.apfloat\.internal\.DoubleScramble\.scramble"
| stats count by host, source, sourcetype
| where count > 10
| eval severity="high"
| table _time, host, source, sourcetype, count

Wazuh OSSEC Rule

<group name="apfloat,">
  <rule id="100308" level="12" frequency="8" timeframe="120">
    <if_sid>10600</if_sid>
    <match>NullPointerException</match>
    <description>Multiple Apfloat NullPointerExceptions detected - potential CVE-2024-23085 DoS</description>
    <group>attack.t1213,</group>
    <mitre>
      <id>T1213</id>
    </mitre>
  </rule>
</group>

Mitigation & Patch Guidance

Patch Confidence: 2/4 — CLAIMED. A single source claims a patch exists, meaning a vendor or researcher has stated a fix is available, but this has not been independently confirmed, and no patch reference (e.g., version number, commit ID, advisory URL) has been made public.

Immediate Mitigations (1-2 Weeks):

  1. Input Validation: Add a validation layer that restricts the maximum size of numeric values processed by Apfloat. For example, in a web application, reject any incoming numeric field exceeding 50,000 characters. This prevents the specific array lengths that trigger the NPE.
  2. Exception Handling: Implement a global exception handler in your Java application to catch NullPointerException from library code and log it without crashing the worker thread. This converts a hard crash into a 500 error with a custom message, mitigating the DoS impact partially (removes the "none" user interaction but still degrades performance).
  3. Rate Limiting: Apply rate limiting on endpoints that process high-precision arithmetic. This limits the volume of crafted requests an attacker can submit, reducing the effectiveness of an automated DoS attack.

Patch/Upgrade Steps:

  1. Monitor Vendor Releases: Regularly check the Apfloat GitHub repository (https://github.com/mtommila/apfloat) and Maven Central for a patched version (e.g., 1.10.2 or 1.11.0). The vendor, Mikko Tommila, has historically released updates in the 1.x series.
  2. If a patched version is identified: Upgrade your dependency. For Maven, update pom.xml:
    <dependency>
        <groupId>org.apfloat</groupId>
        <artifactId>apfloat</artifactId>
        <version>1.10.2</version> <!-- Replace only when confirmed -->
    </dependency>
    
    Test thoroughly via integration tests that cover large-number arithmetic before production deployment.

Long-Term Hardening:

  1. Dependency Monitoring: Integrate Apfloat into your Software Composition Analysis (SCA) tooling (e.g., OWASP Dependency-Check, Snyk, JFrog Xray) to receive alerts for future CVEs.
  2. Isolate High-Risk Libraries: Consider running Apfloat-based services in an isolated container or microservice with strict resource limits and ReadOnly root filesystem to limit blast radius of any DoS.
  3. Alternative Libraries: For long-term redesign, evaluate whether java.math.BigDecimal (with MathContext) or Google's BigDecimal (via Guava) meets your precision requirements. These are more actively maintained.
  4. Vendor Dispute Validation: Since the CVE is disputed, verify the claim by running a local reproduction script against your own build of Apfloat 1.10.1. This will confirm whether your specific usage patterns are actually affected, preventing unnecessary changes.

References

  1. NVD Entry: https://nvd.nist.gov/vuln/detail/CVE-2024-23085
    Official record containing the description and CVSS v3.1 base score.

  2. Apfloat Project Repository (Vendor): https://github.com/mtommila/apfloat
    Official source repository. Monitor for recommended patched versions. No advisory has been published as of this writing.

  3. MITRE CVE Listing: https://www.cve.org/CVERecord?id=CVE-2024-23085
    Cross-reference for the CNA assignment and any updates to the dispute status.

  4. CWE-476 Reference: https://cwe.mitre.org/data/definitions/476.html
    Documentation for the NULL Pointer Dereference weakness class underlying this vulnerability.

  5. CISA KEV: Not applicable — this vulnerability is not listed in the CISA Known Exploited Vulnerabilities catalog, and no known exploitation-in-the-wild activity has been reported. No threat actor campaigns are associated with this CVE at this time.


Report generated by Valtersit Threat Intelligence. Date: 2024-11-01. Analyst: Senior Cybersecurity Analyst.

👁️ SHODAN DORKS (THREAT HUNTING)

What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.

apfloat 1.10.1
apfloat.jar
product:apfloat

💣 PoC CODE AVAILABLE

Exploit code for this CVE is tracked in our database. Access poc_code via API Pro.

[ API_PRO ] →
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2024-23085/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.