CVE-2026-115478 · GHSA-r3g7-r4hr-m258
obsidian-tc: Memory-lifecycle tools overwrite unowned notes or partially commit lifecycle changes
- Risk score
- 55/100
- CVSS
- 7.1 v4.0
- Exploit chance (30 days)
- 0.4%
- Published
- 23 Oct 2026
Open in the live forecast Today's forecast
What to know
- What it is
- obsidian-tc is a governed, agent-ready Model Context Protocol server for Obsidian vaults. From 1.0.1 until 1.31.4, create_entity, link_entities, rename_entity, unlink_entities and delete_entity regenerate memory notes from SQLite at the computed memory/<type>/<name>.md path without reliably preserving note ownership o…
- Affected
- obsidian-tc (npm) >= 1.0.1, <= 1.31.3
- Fix
- Upgrade obsidian-tc to 1.31.4 or later.
- Exploitation
- No known exploitation
Story map
At a glance
obsidian-tc: Amber, patch this week. obsidian-tc is a governed, agent-ready Model Context Protocol server for Obsidian vaults. Prior to 1.3.1, tool dispatch does not compare the caller-controlled input.vault value with the vault bound to the caller, the JSON Web Token (JWT) has no vault claim, and the folder access-control list is shared globally. Any va…
The flaws
- CVE-2026-115478: Memory-lifecycle tools overwrite unowned notes or partially commit lifecycle changes (CVSS 7.1 · EPSS 0%)
- CVE-2026-77366: Obsidian-tc tokens can access arbitrary configured vaults (CVSS 9.9 · EPSS 0%)
- CVE-2026-77363: Obsidian-tc HTTP transport lacks Origin/DNS-rebinding protection, enabling drive-by vault access on loopback (CVSS 8.8 · EPSS 0%)
- CVE-2026-115477: Declined human-in-the-loop confirmations can permit destructive calls over HTTP (CVSS 7.1 · EPSS 0%)
The fix
Upgrade obsidian-tc: 1.31.4 · 1.3.1 or later on your release line
Who is exposed: obsidian-tc (npm) < 1.3.1
Where it stands
- No known exploitation
Connects to
- Same weakness: CWE-459 (CWE-459). 14 other warnings in 30 days
Why it is Yellow
- CVSS 7.1 high
- On your watchlist: npm
Affected packages
| Package | Ecosystem | Vulnerable | Fixed in |
|---|---|---|---|
| obsidian-tc | npm | >= 1.0.1, <= 1.31.3 | 1.31.4 |
References
- https://github.com/The-40-Thieves/obsidian-tc/blob/v1.31.4/CHANGELOG.md
- https://github.com/The-40-Thieves/obsidian-tc/commit/99f7914ca0fbeed92e7c4d39cc8c3e5830dab133
- https://github.com/The-40-Thieves/obsidian-tc/pull/978
- https://github.com/The-40-Thieves/obsidian-tc/releases/tag/v1.31.4
- https://github.com/The-40-Thieves/obsidian-tc/security/advisories/GHSA-r3g7-r4hr-m258
- https://github.com/advisories/GHSA-r3g7-r4hr-m258
- https://nvd.nist.gov/vuln/detail/CVE-2026-115478
- https://github.com/advisories/GHSA-r3g7-r4hr-m258
Original description
obsidian-tc is a governed, agent-ready Model Context Protocol server for Obsidian vaults. From 1.0.1 until 1.31.4, `create_entity`, `link_entities`, `rename_entity`, `unlink_entities` and `delete_entity` regenerate memory notes from SQLite at the computed `memory/<type>/<name>.md` path without reliably preserving note ownership or the consistency of a failed lifecycle operation. During shared materialization, a hand-authored note or an orphan left by a different entity whose name sanitized to the same path could have its entire body overwritten on the next write naming that type and name, with non-owned frontmatter preserved. `rename_entity` also seeded the destination path with a direct atomic write without validating ownership and could overwrite a foreign note there. Separately, several tools mutated SQLite before fallible filesystem work: `create_entity` and `link_entities` inserted the row or relation before materialization; `rename_entity` updated the entity, including a retired status, before updating its note; `unlink_entities` removed a relation before rematerializing the source note; and `delete_entity`'s cascade removed the target and its relations before rematerializing neighbouring notes. A later filesystem failure could therefore leave a row or relation changed and the memory graph inconsistent with the notes on disk even when the operation failed. An authorized caller with the required memory-tool permissions could, without intending to, destroy the body of a vault note outside the entity being written; `delete_entity` additionally requires its deletion permission and destructive confirmation, which this memory flaw does not bypass. Snapshots-before-write through `restore_note` mitigate the overwrite only where snapshots are enabled and the note had previously been written through obsidian-tc. This issue is fixed in version 1.31.4.
Last activity 23 Oct 2026. Patch Forecast updates every hour.