{"id":"CVE-2026-115477","summary":"obsidian-tc: Declined human-in-the-loop confirmations can permit destructive calls over HTTP","details":"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.","aliases":["GHSA-737x-cwfr-5vvc"],"modified":"2026-10-25T02:46:06.419366430Z","published":"2026-10-23T14:04:33.518Z","database_specific":{"cna_assigner":"GitHub_M","cwe_ids":["CWE-285","CWE-863"],"osv_generated_from":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/115xxx/CVE-2026-115477.json"},"references":[{"type":"WEB","url":"https://github.com/The-40-Thieves/obsidian-tc/blob/v1.31.4/CHANGELOG.md"},{"type":"WEB","url":"https://github.com/The-40-Thieves/obsidian-tc/releases/tag/v1.31.4"},{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/115xxx/CVE-2026-115477.json"},{"type":"ADVISORY","url":"https://github.com/The-40-Thieves/obsidian-tc/security/advisories/GHSA-737x-cwfr-5vvc"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-115477"},{"type":"REPORT","url":"https://github.com/The-40-Thieves/obsidian-tc/issues/967"},{"type":"FIX","url":"https://github.com/The-40-Thieves/obsidian-tc/commit/101c91c656e2c2b88bcf3696a5da035f8c032c71"},{"type":"FIX","url":"https://github.com/The-40-Thieves/obsidian-tc/pull/969"}],"affected":[{"ranges":[{"type":"GIT","repo":"https://github.com/the-40-thieves/obsidian-tc","events":[{"introduced":"edccf949f256ab96adbd85098fb591a846d0f433"},{"fixed":"b2b34c996f8cbcbc4f78121c14d0502e59673193"},{"fixed":"101c91c656e2c2b88bcf3696a5da035f8c032c71"}],"database_specific":{"extracted_events":[{"range":[{"introduced":"1.13.0"},{"fixed":"1.31.4"}],"source":"AFFECTED_FIELD","strategy":"StringRangeExpression"},{"range":[{"fixed":"101c91c656e2c2b88bcf3696a5da035f8c032c71"}],"source":"REFERENCES_COMMIT"},{"original_tag":"v1.31.4","range":[{"fixed":"b2b34c996f8cbcbc4f78121c14d0502e59673193"}],"source":"REFERENCES_TAG"}]}}],"versions":["v1.31.3","1.31.3","v1.31.2","1.31.2","v1.31.1","1.31.1","v1.31.0","1.31.0","v1.30.1","1.30.1","v1.30.0","1.30.0","v1.29.0","1.29.0","v1.28.4","1.28.4","v1.28.3","1.28.3","v1.28.2","1.28.2","v1.28.1","1.28.1","v1.28.0","1.28.0","v1.27.0","1.27.0","v1.26.0","v1.25.0","v1.24.0","v1.23.6","v1.23.5","v1.23.4","v1.23.3","v1.23.2","v1.23.1","v1.23.0","v1.22.0","v1.21.0","v1.20.0","v1.19.0","v1.18.0","v1.17.1","v1.17.0","v1.16.0","v1.15.0","v1.14.3","v1.14.2","v1.14.1","v1.14.0","v1.13.1","v1.13.0"],"database_specific":{"source":"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-115477.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V4","score":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:H/VA:L/SC:N/SI:N/SA:N"}]}