☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
[ VENDOR STATS ]
CVSS: 7.5 🐛 CWE-835
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2025-30145

CVE-2025-30145 Denial of Service in Geoserver
📅 PUBLISHED: 2025-06-10 14:58 UTC 🔄 UPDATED: 2026-09-23 20:20 UTC
[ OFFICIAL PATCH DEPLOYED ↓ ] FIX: LIKELY — 2 independent sources confirm fix
[ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.51%
👁️
0.51% probability
12.8× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
Patch available — upgrade to latest release
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
7.5
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-30145 is a high-severity denial-of-service (DoS) vulnerability in GeoServer, an open-source server for sharing and editing geospatial data. The vulnerability allows an attacker to execute malicious Jiffle scripts that can enter an infinite loop, causing a denial of service. This can be triggered via WMS dynamic styles or as a WPS process. The vulnerability has a CVSS score of 7.5 and is fixed in versions 2.27.0, 2.26.3, and 2.25.7. As a mitigation, administrators can disable WMS dynamic styling and the Jiffle process.

⚡ 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

CVSS Breakdown & Threat Level

  • CVSS Score: 7.5 (High)
  • Attack Vector: Network (AV:N)
  • Attack Complexity: Low (AC:L)
  • Privileges Required: None (PR:N)
  • User Interaction: None (UI:N)
  • Scope: Unchanged (S:U)
  • Confidentiality Impact: None (C:N)
  • Integrity Impact: None (I:N)
  • Availability Impact: High (A:H)

The threat level is high due to the low complexity of the attack and the potential for significant service disruption. The vulnerability can be exploited remotely without authentication, making it a serious risk for unpatched GeoServer instances.

Deep Dive & Mechanics

The vulnerability resides in the Jiffle scripting engine used by GeoServer for dynamic styling and WPS processes. Jiffle scripts are used to perform raster calculations and image processing. The flaw allows an attacker to craft a Jiffle script that contains an infinite loop, which, when executed, consumes CPU resources indefinitely, leading to a denial of service.

The attack can be delivered through two primary vectors:

  1. WMS Dynamic Styles: An attacker can send a WMS request with a malicious dynamic style that includes the infinite loop Jiffle script.
  2. WPS Process: An attacker can submit a WPS request that executes a malicious Jiffle script as part of a process.

The infinite loop is typically achieved by using a while or for loop with a condition that never becomes false, or by using recursive function calls without a base case.

Vulnerable vs. Patched Code

Vulnerable Code (Conceptual):

// Vulnerable Jiffle script example
while (true) {
    // infinite loop
}

Patched Code (Conceptual):

// Patched Jiffle script with loop limit
int maxIterations = 10000;
int iteration = 0;
while (condition && iteration < maxIterations) {
    // loop body
    iteration++;
}

The patch introduces a maximum iteration limit for loops in Jiffle scripts, preventing infinite loops from causing a denial of service. The specific implementation details are in the GeoServer source code, where the Jiffle interpreter is modified to enforce this limit.

Exploitation & Lab Setup

Red Team

Lab Setup:

  1. Deploy a vulnerable GeoServer instance (version < 2.27.0, < 2.26.3, or < 2.25.7).
  2. Ensure WMS dynamic styling and WPS are enabled.

Exploitation Steps:

  1. Craft a malicious Jiffle script that contains an infinite loop:
    while (true) {
        // do nothing
    }
    
  2. Send a WMS request with the malicious dynamic style:
    http://target/geoserver/wms?service=WMS&version=1.1.0&request=GetMap&layers=topp:states&styles=malicious_style&format=image/png
    
    Where malicious_style is a style that includes the infinite loop Jiffle script.
  3. Alternatively, send a WPS request:
    http://target/geoserver/wps?service=WPS&version=1.0.0&request=Execute&identifier=Jiffle&dataInputs=script=while(true){}
    

Expected Outcome: The GeoServer instance becomes unresponsive due to CPU exhaustion.

Blue Team

Detection:

  • Monitor for unusually high CPU usage on GeoServer hosts.
  • Look for repeated WMS or WPS requests with suspiciously long processing times.
  • Analyze Jiffle scripts for infinite loop patterns.

Mitigation:

  • Apply the patch by upgrading to GeoServer 2.27.0, 2.26.3, or 2.25.7.
  • If patching is not immediately possible, disable WMS dynamic styling and the Jiffle process.

Indicators of Compromise (IOCs)

  • Network IOCs:
    • Repeated WMS requests with dynamic styles containing complex Jiffle scripts.
    • WPS requests with Jiffle scripts that have no apparent output.
  • Host IOCs:
    • High CPU usage by the GeoServer Java process.
    • GeoServer logs showing repeated execution of Jiffle scripts with long runtimes.
  • File IOCs:
    • Jiffle script files containing infinite loops (e.g., while(true){}).

Detection Engineering

YARA Rule

rule CVE_2025_30145_Jiffle_Infinite_Loop {
    meta:
        description = "Detects Jiffle scripts with infinite loops"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "CVE-2025-30145"
    strings:
        $infinite_loop1 = "while(true)" ascii nocase
        $infinite_loop2 = "while (true)" ascii nocase
        $infinite_loop3 = "for(;;)" ascii nocase
        $infinite_loop4 = "for (;;)" ascii nocase
    condition:
        any of them
}

Sigma Rule

title: CVE-2025-30145 - GeoServer Jiffle Infinite Loop DoS
id: 12345678-1234-1234-1234-123456789012
status: experimental
description: Detects potential exploitation of CVE-2025-30145 via WMS or WPS requests with malicious Jiffle scripts
author: Valters IT
date: 2025-04-10
references:
    - https://nvd.nist.gov/vuln/detail/CVE-2025-30145
logsource:
    category: webserver
    product: geoserver
detection:
    selection:
        cs-method: 'GET'
        cs-uri-query|contains:
            - 'service=WMS'
            - 'service=WPS'
            - 'Jiffle'
            - 'while(true)'
            - 'while (true)'
            - 'for(;;)'
            - 'for (;;)'
    condition: selection
falsepositives:
    - Legitimate use of Jiffle scripts with loops
level: high

Suricata Rule

alert http any any -> any any (msg:"CVE-2025-30145 - GeoServer Jiffle Infinite Loop DoS Attempt"; flow:to_server; content:"GET"; http_method; content:"/geoserver/"; http_uri; content:"Jiffle"; http_uri; content:"while(true)"; http_uri; nocase; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Remediation:

  • Upgrade GeoServer to version 2.27.0, 2.26.3, or 2.25.7.

Mitigation Steps (if patching is not possible):

  • Disable WMS dynamic styling by setting the ALLOW_DYNAMIC_STYLING parameter to false in the GeoServer configuration.
  • Disable the Jiffle WPS process by removing or disabling the Jiffle extension.

Long-term Recommendations:

  • Implement input validation and sanitization for all Jiffle scripts.
  • Enforce resource limits (e.g., CPU time, memory) for script execution.
  • Regularly update GeoServer to the latest version.

Valters IT
Senior DevSecOps & Cyber Threat Intelligence Expert

◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2025-30145/ · 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.