GHSA-cvp8-vvgf-69q4
obsidian-tc: Default folder ACL is fail-open; .obsidian plugin secrets are readable by default
Packages
| Ecosystem | Package | Affected | Fixed in |
|---|---|---|---|
| npm | obsidian-tc | < 1.3.1 | 1.3.1 |
Details
As written in the advisory (Markdown source, shown as plain text).
### Impact
With a default configuration, an undefined `readPaths`/`writePaths` meant allow-all, the `strictReadDefault` flag was inert, and the `.obsidian`/`.git`/`.trash` control directories were denied only during enumeration — not on the direct request path. A caller could read `.obsidian/plugins/*/data.json`, exfiltrating **plugin API keys and Obsidian Sync passwords** (live-reproduced), as well as any other in-vault file by path.
### Patches
Fixed in **1.3.1**. Upgrade to `>= 1.3.1`. The default now denies `.obsidian`/`.git`/`.trash` on read/write/delete and honors `strictReadDefault` on the request path.
### Workarounds
Set an explicit `readPaths`/`writePaths` whitelist that excludes the control directories.
References
External links from the advisory. They lead to third-party sites.
- https://github.com/The-40-Thieves/obsidian-tc/security/advisories/GHSA-cvp8-vvgf-69q4
- https://github.com/The-40-Thieves/obsidian-tc/pull/73
- https://github.com/The-40-Thieves/obsidian-tc/commit/74de320ddea855e1dec47d67beabe88491149dab
- https://github.com/The-40-Thieves/obsidian-tc
- https://github.com/The-40-Thieves/obsidian-tc/releases/tag/v1.3.1
- https://nvd.nist.gov/vuln/detail/cve-2026-77364