Katalog CVE

CVE-2026-115477

WysokieCVSS 7.1
Opublikowano: Zaktualizowano: Przetłumaczono: NVD NIST

Streszczenie

W obsidian-tc w wersjach od 1.13.0 do 1.31.4, wdrożenie Streamable HTTP z skonfigurowanym `auth.jwtSecret` pozwalało na obejście potwierdzenia człowieka przy wywołaniach narzędzi oznaczonych jako destrukcyjne. Serwer ufał ważnemu powiązanemu z wywołaniem `requestState` jako dowodowi zatwierdzenia, mimo że stan ten był tworzony przed zapytaniem `elicitation/create` i potwierdzał jedynie przynależność ponownego zgłoszenia do tego samego wywołania. Klient działający niepoprawnie lub pod kontrolą atakującego mógł wykonać destrukcyjne operacje na skarbcu bez zgody człowieka, zachowując zwykłe uprawnienia narzędzia.

Ocena ryzyka

Organizacja korzystająca z obsidian-tc w trybie Streamable HTTP z `auth.jwtSecret` może doświadczyć nieautoryzowanych, destrukcyjnych operacji na skarbcu Obsidian (np. nadpisania lub przeniesienia notatek) bez wiedzy i zgody użytkownika. Ryzyko dotyczy wyłącznie narzędzi oznaczonych `destructive: true` lub wymagających zakresu z wymogiem obecności człowieka.

Rekomendacja

Zaktualizuj obsidian-tc do wersji 1.31.4 lub nowszej. Jeśli aktualizacja nie jest możliwa, rozważ przejście na transport stdio albo usunięcie konfiguracji `auth.jwtSecret`, co wymusza użycie fallbacku `elicit_token` i eliminuje tę ścieżkę obejścia.

Inne podatności w obsidian-tc

Zobacz wszystkie
Oryginalny opis (angielski, źródło NVD)

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.

Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS