Read the docs

Declined confirmations in obsidian-tc permit destructive tool calls

Priority MEDIUM 64CWE-285Published · Updated

Key facts

Attack vector
Network
Privileges required
Low
User interaction
None
Attack complexity
Low
Attack requirements
None
Impact type
Security bypass
Confidentiality · integrity · availability
None · High · Low
Fix status
Fixed

Attack profile from CVSS 4.0 · CNA. Fix status from CNA and GitHub. Impact type from CWE-285.

Summary

obsidian-tc from 1.13.0 before 1.31.4 is an Obsidian vault server for the Model Context Protocol. It accepts an authentic request state as approval, so a tool call can complete even after the human declines or cancels the confirmation (CWE-285). A client that misbehaves or is attacker-controlled can run destructive vault operations over Streamable HTTP without approval, if it has the caller's ordinary tool permissions.

Written with Claude Haiku 5.5 from the sources below · 2026-10-29

Description from the CNA

obsidian-tc is a governed, agent-ready Model Context Protocol server for Obsidian vaults. From 1.13.0 until 1.31.4, on a Streamable HTTP deployment with `auth.jwtSecret` configured and a 2026-07-28-era client declaring `elicitation.form` support, a dispatch-gated tool call offered an `inputRequired` confirmation could still complete after the human declined or cancelled, or the elicitation response was omitted or malformed, provided the client echoed the validly bound `requestState` on resubmission. The server trusted an authentic, call-bound state as proof of approval even though that state was minted before the `elicitation/create` leg was asked and proved only that the resubmission belonged to the same call. A client behaving incorrectly or under an attacker's control could therefore execute dispatch-gated destructive vault operations without the human's approval, while still requiring the caller's ordinary tool permissions. Only tools marked `destructive: true` or requiring a scope with a human-in-the-loop floor were reachable through this bypass. The sixteen handler-side conditionally gated tools, including `write_note` overwrite and `move_note`, did not read elicitation state on the modern wire and let neither approval nor decline through that path. Affected deployments using stdio or leaving `auth.jwtSecret` unset instead used the CLI `elicit_token` fallback and did not offer this `requestState` round trip. The fix does not prevent a malicious client from reporting a fabricated approval, because the server cannot verify that the client displayed the form or that a human saw it. This issue is fixed in version 1.31.4.

Why it matters now

Exploitation Proof of concept CISA SSVC · not in CISA KEV
EPSS 0.00354 29th percentileScored 2026-11-07
Fix Fixed obsidian-tc (The-40-Thieves): 1.31.4obsidian-tc (npm): 1.31.4

SSVC decision points

CISA ADP · SSVC 2.0.3

Exploitation
Poc
Automatable
No
Technical impact
Partial

The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.

Affected products

VendorProductAffected versionsFixed inStatusSource
The-40-Thievesobsidian-tc1.13.0 to before 1.31.41.31.4Patch availableCNA
—obsidian-tc (npm)1.13.0 to before 1.31.41.31.4Patch availableGHSA-737x-cwfr-5vvc
  • obsidian-tc VendorThe-40-Thieves Affected 1.13.0 to before 1.31.4 Fixed in 1.31.4 Patch available CNA
  • obsidian-tc (npm) Vendor— Affected 1.13.0 to before 1.31.4 Fixed in 1.31.4 Patch available GHSA-737x-cwfr-5vvc

Remediation

Upgrade obsidian-tc to version 1.31.4, the fixed version listed for the npm package.

Written with Claude Haiku 5.5 from the sources below · 2026-10-29

  • Fix · CNA obsidian-tc (The-40-Thieves) Fixed in 1.31.4
  • Fix · GHSA-737x-cwfr-5vvc obsidian-tc (npm) Fixed in 1.31.4 Advisory →

Timeline

  1. 2026-10-23 Threatist record created from CVE-2026-115477
  2. 2026-10-23 Alias added: GHSA-737x-cwfr-5vvc
  3. 2026-10-23 Fix available: npm/[email protected] · GHSA-737x-cwfr-5vvc
  4. 2026-10-23 CVSS score added · GHSA-737x-cwfr-5vvc
  5. 2026-10-23 Weakness changed · GHSA-737x-cwfr-5vvc
  6. 2026-10-23 8 new references · GHSA-737x-cwfr-5vvc
  7. 2026-10-24 Priority changed: MEDIUM → LOW
  8. 2026-10-29 CISA SSVC decision points changed
  9. 2026-10-29 Priority changed: LOW → MEDIUM

References

  • TI-2026-71222 Authorization bypass in obsidian-tc lets tokens access other vaults CVSS 3.1CRITICAL 9.9
  • TI-2026-71220 Missing origin checks in obsidian-tc expose local vault to web pages CVSS 3.1HIGH 8.8
  • TI-2026-79946 Memory tools in obsidian-tc overwrite unowned notes on disk CVSS 4.0HIGH 7.1
  • TI-2026-71221 Default ACL in obsidian-tc exposes Obsidian control-directory secrets CVSS 3.1MEDIUM 6.5
  • TI-2026-71748 Symlink path mismatch in obsidian-tc bypasses read ACL restrictions CVSS 3.1MEDIUM 4.7
  • TI-2026-71798 Missing read ACL checks in obsidian-tc expose note data CVSS 3.1MEDIUM 4.3

Sources