Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconDiscover exposed /ws/chat WebSocket
-
DeliveryOpen unauthenticated WS connection
-
ExploitSend repo_url with filesystem path
-
InstallServer canonicalizes path without containment check
-
C2Pipeline walks directory and reads supported files
-
ExecuteExfiltrate YAML/JSON/Python secrets
-
ImpactReuse credentials against adjacent systems
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V5 - File Handling File name/path control
|
| Exploitation Conditions | Exploitation requires the DeepWiki-Open /ws/chat WebSocket endpoint to be network-reachable by the attacker and to have no authentication layer in front of it - the CVSS 4.0 vector is PR:N/UI:N, so no credentials and no user interaction are needed. The attacker must supply an absolute or traversal directory path in the repo_url field of the chat message, and the server process must have read permission on the target files; only files with the pipeline's supported extensions (Python, JavaScript, YAML, JSON) are parsed, so the exfiltration is limited to those types. Limits on real-world exploitation: instances bound to loopback, sitting behind an authenticating reverse proxy, or running in a container with a read-only or narrowly mounted filesystem expose far less; a source checkout pinned to a commit after a future fix is not affected, and the absence of integrity or availability impact means exploitation cannot directly alter or crash the service. |
| Impact | The CVSS 4.0 vector is AV:N/AC:L/AT:N/PR:N/UI:N with VC:H and no integrity or availability impact, and that maps to a CVSS 3.1 equivalent of roughly 7.5 - high severity, but a confidentiality-only primitive, not the remote code execution implied by the 'RCE' tag in the source metadata. The compensating factor is exposure: exploitation requires the WebSocket endpoint to be reachable from the attacker's network, so an instance bound to localhost, behind an authenticating reverse proxy, or inside a container with a read-only, narrowly mounted filesystem is largely unaffected, whereas one published to the internet is trivially harvestable by a script - even a mid-sized municipal IT team in legnica running a public demo instance should treat this as urgent. SSVC rates exploitation as 'poc' and automatable as 'yes' with partial technical impact, which supports rapid, scripted mass scanning; EPSS and KEV data are absent from this feed, so the precise probability of exploitation and whether real-world attacks have occurred are NOT confirmed - do not conflate the PoC signal with confirmed active exploitation. Note also the mild tension between CWE-73 and the tag set: the underlying CWE and the impact metrics describe information disclosure, not code execution. |
| Exploit ScenarioDerived | An attacker opens a WebSocket connection to the publicly reachable /ws/chat endpoint of a hosted DeepWiki-Open instance and sends a chat/repo_url message containing an absolute path such as / or /app or a home directory. The server resolves that path as the repository to index and walks it, returning the contents of matching .py, .js, .yaml and .json files over the same socket. Because the request is a single unauthenticated message with no timing or race conditions, the whole harvest can be scripted across thousands of hosts; the SSVC 'poc' status indicates exploit code is circulating. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 15, 2026
Unauthenticated arbitrary file read in DeepWiki-Open (AsyncFuncAI) through commit d92819a lets anyone who can reach the /ws/chat WebSocket endpoint pass an arbitrary directory path as the repo_url parameter and have the server walk that path with no containment check, exfiltrating every readable Python, JavaScript, YAML and JSON file it finds. Because the read is aimed at source and configuration files, the practical payoff is hardcoded secrets, API keys and credentials rather than code execution. A public proof of concept is indicated by SSVC exploitation status and the flaw is fully automatable, though it is not listed in CISA KEV as actively exploited.
RemediationAI
No vendor-released patched version is identified in the available data, so the primary action is to track https://github.com/AsyncFuncAI/deepwiki-open/issues/536 and the project repository for a fix commit or tagged release, and to upgrade as soon as one is published; until then, treat the deployment as untrusted-input-facing. The most effective compensating control is to stop exposing /ws/chat beyond a trusted boundary: bind the service to 127.0.0.1, remove any port-forward or public ingress rule for the WebSocket port, and terminate it behind a reverse proxy that enforces authentication - the trade-off is that remote collaborators and any hosted demo lose direct access. If the feature must stay reachable, run the service as an unprivileged user inside a container with a read-only root filesystem and only the intended repository directory bind-mounted, so path traversal cannot reach host secrets or cloud instance metadata; this limits breadth but does not remove the flaw. Disabling the /ws/chat endpoint entirely is the safest interim step if remote repository ingestion is not required, at the cost of the interactive chat feature. Rotate any API keys, tokens and database credentials stored in .env, YAML or JSON files that were present on a host whose WebSocket port was internet-reachable, since file contents may already have been read.
Affected VersionsENISA
Affects your stack
Find out whether the stacks and servers you run are on an affected version.
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
DeepWiki-Open is an open-source service (CPE cpe:2.3:a:asyncfuncai:deepwiki-open) that ingests a Git repository URL and generates documentation, using a WebSocket chat interface at /ws/chat to drive repository analysis. The vulnerable flow is in api/repository.py, where the client-supplied repo_url is treated as a filesystem path and passed into the indexing pipeline in api/data_pipeline.py without canonicalization or a check that the resolved path stays inside an allowed repository root. This is CWE-73 (External Control of File Name or Path): user input directly influences which file names are opened by the server process. The pipeline only parses a fixed set of file extensions (Python, JavaScript, YAML, JSON), which bounds but does not meaningfully reduce the value of the primitive, since those are exactly the file types that hold configuration and embedded credentials.
Know when Python gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N
Unauthenticated network-reachable WebSocket with no special conditions gives PR:N and AC:L, but impact is confidentiality-only with no integrity or availability loss.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
DeepWiki-Open through commit d92819a contains an arbitrary file read vulnerability in the unauthenticated /ws/chat WebSocket endpoint that accepts repo_url as a filesystem path with no containment. Attackers can supply arbitrary directory paths to read all files with supported extensions including Python, JavaScript, YAML, and JSON files containing hardcoded secrets and credentials.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Wazuh SIEM platform versions 4.4.0 through 4.9.0 contain an unsafe deserialization vulnerability in the DistributedAPI t
BentoML version 1.4.2 and earlier contains an unauthenticated remote code execution vulnerability through insecure deser
pgAdmin 4 contains critical remote code execution vulnerabilities in the Query Tool download and Cloud Deployment endpoi
The renderLocalView function in render/views.py in graphite-web in Graphite 0.9.5 through 0.9.10 uses the pickle Python
BentoML is a Python library for building online serving systems optimized for AI apps and model inference. Rated critica
OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph
pyLoad download manager version prior to 0.5.0b3.dev77 exposes the Flask SECRET_KEY through an unauthenticated endpoint.
Langflow (a visual LLM pipeline builder) contains a critical unauthenticated code execution vulnerability (CVE-2026-3301
In Mercurial before 4.1.3, "hg serve --stdio" allows remote authenticated users to launch the Python debugger, and conse
Unauthenticated remote code execution affects Kestra OSS (the open-source event-driven orchestration platform) prior to
Unauthenticated remote code execution in Marimo ≤0.20.4 allows attackers to execute arbitrary system commands via the `/
pyLoad is the free and open-source Download Manager written in pure Python. Rated medium severity (CVSS 5.3), this vulne
EUVD-2026-77713
GHSA-76gj-49mh-j4cf
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB