ZeroHour

CVE-2026-86775

Unauthenticated Path Traversal in knowns Package Document API

CVSS 4.0
8.8 high
EPSS
<1%p40
Published
()
Modified
AI analysis

knowns (npm package) versions 0.29.1 and earlier contain a path traversal flaw (CWE-22) in the Document API: the docs.go HTTP handler's cleanDocPath() strips leading/trailing slashes and the .md suffix but does not neutralize ../ traversal sequences, and doc_store.go joins the user-supplied path onto the documents directory without verifying the resolved path stays inside it. In the default deployment, where the Management API is unauthenticated and bound to all interfaces, a remote unauthenticated attacker can send a traversal payload such as {'path': '../../../../tmp/knowns_pwn_marker'} to POST /api/docs, or an encoded traversal path to GET /api/docs/..., to escape the documents directory. The attacker gains the ability to read, create, overwrite, or delete any .md file anywhere on the host filesystem and to create arbitrary directories via os.MkdirAll, which can expose sensitive documentation from other projects, corrupt or destroy files, and — via the arbitrary-write primitive — may be chained toward code execution. Any deployment of knowns 0.29.1 or earlier with the Document API reachable is affected, particularly the default unauthenticated, all-interfaces configuration. There is no known exploitation in the wild, no public proof-of-concept, and no CISA KEV listing; the flaw is rated 8.8 (High) under CVSS 4.0 and is fixed in version 0.30.0.

What to do: Upgrade knowns to version 0.30.0, which fixes the path traversal. If upgrading is not immediately possible, restrict the Management API to trusted interfaces or localhost and place it behind authentication or a firewall, since the default configuration is unauthenticated and bound to all interfaces. Audit affected hosts for unexpected .md files or newly created directories outside the documents directory that could indicate traversal-based reads or writes.

Affected
knowns (npm) knowns<= 0.29.1
Estimated exposure
No basis for an estimate.

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

knowns (npm package) versions <= 0.29.1 contain a path traversal vulnerability in the Document API. The HTTP handler in internal/server/routes/docs.go normalizes the user-supplied document path with cleanDocPath(), which strips leading/trailing slashes and the .md suffix but does not neutralize ../ traversal sequences, and internal/storage/doc_store.go then builds the target path with filepath.Join(ds.docsDir(), filepath.FromSlash(doc.Path)+".md") without verifying that the resolved path remains inside the documents directory. In the default deployment, where the Management API is unauthenticated and bound to all interfaces, a remote unauthenticated attacker can supply a traversal payload (for example {"path": "../../../../tmp/knowns_pwn_marker"} to POST /api/docs, or an encoded path to GET /api/docs/...) to read, create, overwrite, or delete arbitrary files with a .md extension anywhere on the host filesystem and to create arbitrary directories via os.MkdirAll. This can expose sensitive data stored in other projects' documentation, corrupt or destroy files, and provide an arbitrary-write primitive that may be chained toward code execution. The issue is fixed in version 0.30.0.

Weakness
CWE-22
Vector
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:H/VA:L/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

In the news

No ingested article mentions this CVE yet.