☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]

CVE-2024-23083

CVE-2024-23083 Vulnerability in Time4J
📅 PUBLISHED: 2024-04-10 00:00 UTC 🔄 UPDATED: 2026-09-23 20: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.66%
👁️
0.66% probability
16.5× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1499
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
License: Open Source
VULNERABLE: UNKNOWN / CHECK VENDOR
CVSS SEVERITY SCALE
9.0–10.0 CRITICAL
7.0–8.9 HIGH
4.0–6.9 MEDIUM
0.1–3.9 LOW
0.0 NONE
5.3
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2024-23083 is a disputed NullPointerException (NPE) vulnerability reported in Time4J Base v5.9.3, a Java date/time calculation library. The flaw is triggered through the net.time4j.format.internal.FormatUtils::useDefaultWeekmodel(Locale) component during locale-specific week model initialization. Multiple third parties dispute the finding, suggesting the submission may have originated from a tool insufficiently robust for vulnerability identification. The reported CVSS score is 5.3 (Medium), though exploitation requires a non-standard locale configuration and successful reproduction remains unverified. Enterprises using Time4J for calendar, chronology, or formatting operations should monitor this finding but prioritize validated patches from the vendor.

⚡ 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

The vulnerability is reported to manifest as a NullPointerException in the useDefaultWeekmodel(Locale) method of the net.time4j.format.internal.FormatUtils class. This method is responsible for resolving the default week model (defining week numbering rules such as first day-of-week and minimal days in first week) based on the provided Locale object.

Mechanism: The NPE likely occurs when the method receives a locale for which the underlying java.util.Calendar or internal locale-data provider returns a null reference during week-model property lookup. In Java's globalization framework, locales with incomplete CLDR (Common Locale Data Repository) data can trigger null returns when querying week-related attributes such as Calendar.MIN_DAYS_IN_FIRST_WEEK or Calendar.DAY_OF_WEEK. Time4J's default week model resolution may not adequately null-check these values before dereferencing.

Attack Surface: The attack surface is local — a client-side deserialization or application logic path that passes attacker-controllable locale data to Time4J formatting or parsing APIs. Example entry points:

  • REST endpoints that accept Locale parameters (e.g., Accept-Language headers, locale query strings)
  • Batch jobs processing locale-specific date inputs
  • Applications that serialize/deserialize locale metadata from untrusted sources

Code-Level Explanation (reconstructed):

// net.time4j.format.internal.FormatUtils
public static Weekmodel useDefaultWeekmodel(Locale locale) {
    Calendar calendar = Calendar.getInstance(locale);
    int firstDay = calendar.getFirstDayOfWeek();        // may throw NPE if calendar is null
    int minDays = calendar.getMinimalDaysInFirstWeek(); // unreachable if above fails
    return Weekmodel.of(firstDay, minDays);
}

If Calendar.getInstance(locale) returns null for a malformed or unsupported locale, the subsequent method calls dereference a null object, throwing NullPointerException. This aligns with the reported component path.

Dispute Context: The submission lacks a reproducible proof-of-concept, and the NPE may stem from a caller passing a null locale directly rather than an inherent library defect. Java's own Calendar.getInstance(Locale) does not accept null and would throw NullPointerException as well — a behavior consistent with standard Java semantics rather than a Time4J-specific vulnerability.

Exploitation Scenarios

Despite the disputed nature, if an attacker can trigger the NPE in a vulnerable context, the following attack chain applies:

  1. Reconnaissance/Identification: The attacker identifies a Java application using Time4J 5.9.3. They probe endpoint behavior by sending requests with locale variations such as ?locale=xx_YY or manipulating Accept-Language headers to include exotic locale tags (e.g., de_DE_#Latn or sr_Latn_RS).

  2. Trigger/Weaponization: The attacker sends a request with a carefully crafted locale that triggers the null-dereference path. Example payloads:

    • GET /api/format?locale=zz_ZZ&date=2024-12-31 (unknown locale)
    • GET /api/parse?locale=@proleptic (malformed locale tag)
    • HTTP header: Accept-Language: en_US;q=0.8, xx_YY;q=0.1
  3. Execution/Payload: The application passes the attacker-controlled locale to a Time4J formatting call such as ChronoFormatter.ofPattern("MM/dd/yyyy", Locale.fromString(localeParam)).format(date). The useDefaultWeekmodel method throws an uncaught NullPointerException.

  4. Post-Exploitation Impact: Exploitation results in:

    • Denial of Service (DoS): Repeated requests targeting the vulnerable endpoint can exhaust worker threads, degrade application performance, or crash the JVM if the exception propagates to an unhealthy state.
    • Information Disclosure (potential): In debug-enabled environments, the stack trace may leak internal class names and file paths useful for further targeted attacks.
    • Data Integrity (low): If the NPE occurs during a transactional date-processing pipeline, partial writes may occur if exception handling is insufficient.

Note: There is no evidence of remote code execution, privilege escalation, or data exfiltration via this vulnerability.

Impact Assessment

CVSS Score: 5.3 (Medium). With an unknown vector, the practical severity depends on exposure. The CIA triad impact per the score's typical allocation suggests:

  • Confidentiality: Low (stack traces may leak minimal system details)
  • Integrity: Low (no data corruption expected)
  • Availability: Medium (Denial of Service via exception-triggering locales)

Business Impact:

  • Affected Systems: Java applications using Time4J 5.9.3 (or earlier versions without the claimed fix) for date/time formatting, parsing, or calendar arithmetic with user-supplied locale inputs.
  • Blast Radius: Restricted to applications that accept external locale parameters. Backend services with hardcoded locales are not exposed.
  • Financial Loss: Low — DoS attacks may require sustained request volume, and the disputed nature minimizes urgency.

CWE: Unknown — the closest classification would be CWE-476 (NULL Pointer Dereference), but this has not been formally assigned.

Detection Guidance

Sigma Rule

title: Time4J NullPointerException from useDefaultWeekmodel
id: 3c7b5f9a-1e4a-4f6c-9b2e-8d0a1f3c5e7d
status: experimental
description: Detects Java application logs containing NullPointerException referencing Time4J FormatUtils useDefaultWeekmodel
logsource:
  category: application
  product: java
detection:
  selection:
    message|contains:
      - 'NullPointerException'
      - 'net.time4j.format.internal.FormatUtils'
      - 'useDefaultWeekmodel'
  condition: selection
level: medium
fields:
  - src_ip
  - user_agent
  - request_path
  - message
falsepositives:
  - Legitimate null locale passed by developer
  - Other NPEs in the same class
tags:
  - attack.t1499
  - cve.2024.23083

YARA Rule

rule CVE_2024_23083_Time4J_NPE
{
    meta:
        author = "ValterSIT Threat Intel"
        date = "2024-02-12"
        description = "Detects Time4J NullPointerException strings in logs or crash dumps"
        cve = "CVE-2024-23083"
        severity = "medium"
    strings:
        $s1 = "net.time4j.format.internal.FormatUtils" ascii wide
        $s2 = "useDefaultWeekmodel" ascii wide
        $s3 = "NullPointerException" ascii wide
        $s4 = "Weekmodel.of" ascii wide
    condition:
        (uint16(0) == 0x5A4D or uint16(0) == 0x4D5A) and 2 of them and $s1 and $s2
        or (filesize < 10MB and $s1 and $s2 and $s3)
}

Suricata IDS Rule

alert http any any -> $HOME_NET any (msg:"CVE-2024-23083 Time4J useDefaultWeekmodel locale attempt"; flow:established,to_server; content:"locale="; nocase; pcre:"/locale=[^\&\"'\s]{2,}/"; content:"format"; nocase; pcre:"/\b(?:format|parse|display)\b/i"; classtype:attempted-dos; sid:2024230830; rev:1; reference:cve,2024-23083;)

Elastic Detection

sequence by process.name
  [any where process.name == "java" and
   stringContains(message, "NullPointerException") and
   stringContains(message, "net.time4j.format.internal.FormatUtils") and
   stringContains(message, "useDefaultWeekmodel")] with maxspan=5m

Splunk SPL Query

index=java sourcetype=java_stacktrace
  "NullPointerException" "net.time4j.format.internal.FormatUtils" "useDefaultWeekmodel"
  | table _time host src_ip user_agent request_path
  | stats count by host src_ip user_agent request_path
  | where count > 5

Wazuh OSSEC Rule

<group name="time4j_npe,">
  <rule id="123456" level="10">
    <decoded>java</decoded>
    <match>NullPointerException</match>
    <match>net.time4j.format.internal.FormatUtils</match>
    <match>useDefaultWeekmodel</match>
    <description>Time4J CVE-2024-23083 null pointer in useDefaultWeekmodel</description>
    <group>attack.dos,</group>
    <mitre>
      <id>T1499</id>
    </mitre>
    <options>no_full_log</options>
  </rule>
</group>

Mitigation & Patch Guidance

Patch Confidence: 2/4 (CLAIMED — single source claims patch (not independently confirmed)).

  1. Immediate Mitigations (if unpatched):

    • Validate all locale inputs server-side. Reject locale strings not matching ^[a-zA-Z]{2}(-[a-zA-Z]{2})?$ or using a strict allowlist.
    • Wrap Time4J formatting calls in try-catch blocks that handle NullPointerException gracefully, returning HTTP 400 responses.
    • Set unit tests to run Time4J operations with locales like zz_ZZ to verify application resilience.
  2. Patch/Upgrade Steps:

    • Contact the Time4J project maintainers for the claimed patch status. Check the Maven Central repository for version 5.9.4+:
      # Java/Maven
      mvn versions:use-latest-versions -Dincludes=net.time4j:time4j-base
      # Java/Gradle
      implementation 'net.time4j:time4j-base:5.9.4'
      
    • Verify the fix by running a regression test that previously triggered the NPE (if reproducible).
    • If no patched version exists, consider pinning to the latest stable release and monitoring the official GitHub repository for updates.
  3. Long-Term Hardening:

    • Switch to Java's built-in java.time package (JSR-310) if feasible — it is maintained by Oracle and has mature null-checking.
    • Implement global exception handlers that sanitize stack traces before logging (avoid leaking internal class paths).
    • Add security tests that fuzz locale inputs to your date-formatting endpoints.
    • Subscribe to CVE feeds and vendor advisories for Time4J to stay informed of patch releases.

References

  1. NVD Entry: https://nvd.nist.gov/vuln/detail/CVE-2024-23083
  2. Time4J Project (GitHub): https://github.com/MenoData/Time4J
  3. Time4J on Maven Central: https://central.sonatype.com/artifact/net.time4j/time4j-base
  4. MITRE CVE Record: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2024-23083
  5. CISA KEV Note: CVE-2024-23083 is NOT listed in CISA's Known Exploited Vulnerabilities catalog. No threat actor campaigns or exploit-in-the-wild evidence has been reported as of this writing.

💣 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-23083/ · 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.