CVE-2026-115478
WysokieCVSS 7.1Streszczenie
W obsidian-tc (od 1.0.1 do 1.31.4) narzędzia create_entity, link_entities, rename_entity, unlink_entities i delete_entity regenerują notatki pamięci z SQLite pod ścieżką memory/<typ>/<nazwa>.md bez niezawodnego zachowania własności notatki, co może nadpisać całą treść ręcznie utworzonej notatki lub osieroconej notatki innej encji o tej samej znormalizowanej ścieżce. Ponadto kilka narzędzi modyfikuje SQLite przed operacjami na systemie plików, więc błąd zapisu może pozostawić niespójny graf pamięci względem notatek na dysku.
Ocena ryzyka
Uwierzytelniony użytkownik z uprawnieniami do narzędzi pamięci może nieumyślnie zniszczyć treść notatki w vaulcie spoza zapisywanej encji, a delete_entity dodatkowo wymaga uprawnień do usuwania i potwierdzenia destrukcyjnego. Snapshoty przed zapisem przez restore_note łagodzą problem tylko przy włączonych snapshotach i notatkach wcześniej zapisanych przez obsidian-tc.
Rekomendacja
Zaktualizuj obsidian-tc do wersji 1.31.4 lub nowszej, która naprawia tę podatność. Do czasu aktualizacji ogranicz uprawnienia do narzędzi pamięci i włącz snapshoty, aby umożliwić przywracanie nadpisanych notatek.
Inne podatności w obsidian-tc
Zobacz wszystkie- CVE-2026-115477Wysokie
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.
- CVE-2026-77366Krytyczne
W obsidian-tc przed wersją 1.3.1 dyspozytor narzędzi nie porównuje wartości input.vault kontrolowanej przez wywołującego z sejfem przypisanym do wywołującego, token JWT nie zawiera roszczenia vault, a lista kontroli dostępu do folderów jest współdzielona globalnie. Każdy ważny token może wybrać inny skonfigurowany sejf i odczytywać, zapisywać lub usuwać jego zawartość.
- CVE-2026-77362Średnie
obsidian-tc przed wersją 1.3.1 nie stosuje spójnie listy kontroli dostępu (ACL) do wszystkich zwracanych pól. Narzędzie tasks_filter ujawnia liczby grup pochodzące z niedozwolonych notatek, makemd_query przekazuje nieprzefiltrowane pola wynikowe, a list_templates ujawnia ścieżki szablonów i treści funkcji użytkownika bez sprawdzenia białej listy odczytu. Uwierzytelniony wywołujący może wywnioskować lub odczytać dane z notatek spoza swojej listy ACL.
- CVE-2026-77361Średnie
obsidian-tc przed wersją 1.3.1 sprawdza listę kontroli dostępu (ACL) na podstawie leksykalnej ścieżki względem katalogu, podczas gdy sprawdzenia zawierania używają ścieżki rozwiązanej. Dowiązanie symboliczne w katalogu, które jest dozwolone przez glob, ale wskazuje na zabroniony folder, może ominąć ACL i ujawnić pliki w zabronionym folderze. Wykorzystanie wymaga dowiązania symbolicznego umieszczonego poza pasmem i nie pozwala na wyjście poza katalog główny.
- CVE-2026-77364Średnie
obsidian-tc to zarządzany serwer Model Context Protocol dla sejfów Obsidian. W wersjach przed 1.3.1 niezdefiniowane ustawienia readPaths i writePaths zezwalają na wszystkie ścieżki, strictReadDefault nie chroni bezpośrednich żądań, a katalogi kontrolne .obsidian, .git i .trash są wykluczane tylko podczas enumeracji. Uwierzytelniony wywołujący może bezpośrednio odczytać wrażliwe pliki, takie jak .obsidian/plugins/*/data.json.
- CVE-2026-77363Wysokie
Podatność w obsidian-tc, serwerze Model Context Protocol dla vaultów Obsidian, przed wersją 1.3.1, nie waliduje nagłówków Host lub Origin ani nie włącza ochrony przed DNS-rebinding w transporcie Streamable HTTP. Przy konfiguracji loopback z auth.mode ustawionym na none, złośliwa strona internetowa może wysyłać żądania do lokalnego punktu końcowego MCP i uzyskać nieograniczony dostęp do vaultu przez wywołanie http-local. Wersja 1.3.1 naprawia problem poprzez włączenie walidacji hosta, origin i DNS-rebinding.
Oryginalny opis (angielski, źródło NVD)
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.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

