GHSA-62gx-5q78-wrvx: obsidian-local-rest-api: Authenticated path traversal via URL-encoded %2F in /vault/{path} — arbitrary host file read/write/delete
The obsidian-local-rest-api has an authenticated path traversal vulnerability in its /vault/{path} endpoints (GET/PUT/PATCH/POST/DELETE). The API decodes URL-encoded path segments after Express routing, allowing encoded traversal sequences like %2F to bypass routing checks and access files outside the vault. This enables an authenticated user to read, write, or delete arbitrary files on the host with the privileges of the Obsidian process. The vulnerability arises because the decoded path is not confined to the vault root, unlike the MOVE operation which has proper path confinement. No patch is currently documented for the other HTTP methods.
AI Analysis
Technical Summary
The Local REST API's /vault/{path} endpoints decode the URL-encoded path after Express routing, which normalizes and rejects literal ../ sequences but does not treat %2F as a separator. This allows encoded traversal sequences (e.g., ..%2F..%2F) to bypass routing checks and be decoded into ../ sequences inside the handler, escaping the vault root. The decoded path is passed directly to the vault adapter without confinement checks, enabling arbitrary file read, write, and delete operations on the host filesystem with the Obsidian process's privileges. The MOVE operation has a confinement check using posix.resolve and prefix validation, but this is missing from other HTTP methods. The recommended fix is to apply the same confinement check to all vault handlers to reject traversal outside the vault root.
Potential Impact
An authenticated attacker can perform arbitrary file read, write, and delete operations on the host filesystem outside the Obsidian vault directory. This can lead to exposure or modification of sensitive user files such as SSH keys, browser profiles, dotfiles, and credentials. The impact is elevated by the fact that the Obsidian process typically runs with the user's privileges. In deployments where the API is used as a server for multi-client processing or LLM agents, this vulnerability can be exploited to escalate from note editing to full filesystem access without explicit user intent.
Mitigation Recommendations
Patch status is not yet confirmed — check the vendor advisory for current remediation guidance. The vulnerability can be mitigated by applying a confinement check similar to the one used in the MOVE operation: use posix.resolve to resolve the decoded path against a synthetic root (/vault) and reject any path that escapes this root. Reject any path segments that decode to '..' or result in traversal outside the vault directory. Until an official fix is released, users should restrict access to the Local REST API to trusted clients only and consider disabling it if not needed.
GHSA-62gx-5q78-wrvx: obsidian-local-rest-api: Authenticated path traversal via URL-encoded %2F in /vault/{path} — arbitrary host file read/write/delete
Description
The obsidian-local-rest-api has an authenticated path traversal vulnerability in its /vault/{path} endpoints (GET/PUT/PATCH/POST/DELETE). The API decodes URL-encoded path segments after Express routing, allowing encoded traversal sequences like %2F to bypass routing checks and access files outside the vault. This enables an authenticated user to read, write, or delete arbitrary files on the host with the privileges of the Obsidian process. The vulnerability arises because the decoded path is not confined to the vault root, unlike the MOVE operation which has proper path confinement. No patch is currently documented for the other HTTP methods.
CVSS v3.1
Affected software
Run on your own infrastructure? Check whether these packages are installed with threat-finder — our free open-source scanner.
Weaknesses
AI-Powered Analysis
Machine-generated threat intelligence
Technical Analysis
The Local REST API's /vault/{path} endpoints decode the URL-encoded path after Express routing, which normalizes and rejects literal ../ sequences but does not treat %2F as a separator. This allows encoded traversal sequences (e.g., ..%2F..%2F) to bypass routing checks and be decoded into ../ sequences inside the handler, escaping the vault root. The decoded path is passed directly to the vault adapter without confinement checks, enabling arbitrary file read, write, and delete operations on the host filesystem with the Obsidian process's privileges. The MOVE operation has a confinement check using posix.resolve and prefix validation, but this is missing from other HTTP methods. The recommended fix is to apply the same confinement check to all vault handlers to reject traversal outside the vault root.
Potential Impact
An authenticated attacker can perform arbitrary file read, write, and delete operations on the host filesystem outside the Obsidian vault directory. This can lead to exposure or modification of sensitive user files such as SSH keys, browser profiles, dotfiles, and credentials. The impact is elevated by the fact that the Obsidian process typically runs with the user's privileges. In deployments where the API is used as a server for multi-client processing or LLM agents, this vulnerability can be exploited to escalate from note editing to full filesystem access without explicit user intent.
Mitigation Recommendations
Patch status is not yet confirmed — check the vendor advisory for current remediation guidance. The vulnerability can be mitigated by applying a confinement check similar to the one used in the MOVE operation: use posix.resolve to resolve the decoded path against a synthetic root (/vault) and reject any path that escapes this root. Reject any path segments that decode to '..' or result in traversal outside the vault directory. Until an official fix is released, users should restrict access to the Local REST API to trusted clients only and consider disabling it if not needed.
Technical Details
- Gcve Source
- db.gcve.eu
- Osv Id
- GHSA-62gx-5q78-wrvx
- Osv Schema Version
- 1.4.0
- Aliases
- []
- Ecosystems
- ["npm"]
- Database Specific Severity
- HIGH
- Cvss Version
- 3.1
Threat ID: 6a58b41468715ace43d6832d
Added to database: 07/16/2026, 10:36:04 UTC
Last enriched: 07/16/2026, 10:56:34 UTC
Last updated: 07/16/2026, 10:56:34 UTC
Views: 2
Community Reviews
0 reviewsCrowdsource mitigation strategies, share intel context, and vote on the most helpful responses. Sign in to add your voice and help keep defenders ahead.
Want to contribute mitigation steps or threat intel context? Sign in or create an account to join the community discussion.
Actions
Updates to AI analysis require Pro Console access. Upgrade inside Console → Billing.
External Links
Need more coverage?
Upgrade to Pro Console for AI refresh and higher limits.
For incident response and remediation, OffSeq services can help resolve threats faster.
Latest Threats
Check if your credentials are on the dark web
Instant breach scanning across billions of leaked records. Free tier available.