🔍 CVE-2026-115478

0.0
CVSS Score
UNKNOWN
2026-10-23
2026-10-30 18:17
✅ 완료

🇰🇷 한글 설명

obsidian-tc은 Obsidian 볼트를 위한 거버넌스 기반 MCP 서버입니다. 1.0.1부터 1.31.4 이전 버전에서는 엔티티 생성·링크·이름변경·삭제 시 메모리 노트를 SQLite에서 재생성하면서 노트 소유권과 실패한 작업의 일관성을 보장하지 못합니다. 이로 인해 같은 경로로 정규화되는 다른 노트의 본문이 덮어써지고, 실패 시 DB와 파일 시스템 상태가 불일치할 수 있습니다.

💡 쉬운 설명

옵시디언 노트 관리 도구의 버그로, 같은 이름으로 변환되는 다른 노트의 내용이 의도치 않게 지워질 수 있습니다. 작업이 중간에 실패하면 데이터베이스와 실제 노트 파일의 내용이 서로 맞지 않게 됩니다.

🇺🇸 원문 (English)

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.

📍 영향받는 시스템

obsidian-tc 1.0.1 ~ 1.31.3 (1.31.4 미만)

⚔️ 공격 벡터

권한이 있는 사용자/에이전트가 정상적인 메모리 도구를 호출할 때, 이름이 충돌하는 엔티티로 인해 볼트의 다른 노트 본문이 의도치 않게 덮어써짐

🛡️ 대응 방법

obsidian-tc를 1.31.4 이상으로 업그레이드하고, 업그레이드 전 중요한 볼트 노트를 백업하거나 스냅샷(restore_note)을 활성화하세요.

🔧 검증 코드

출력된 버전이 1.31.4 이상이면 패치 적용됨, 1.31.4 미만이거나 설치 결과가 없으면 취약 가능성이 있으므로 업그레이드가 필요합니다.

Shell / Script
npm ls obsidian-tc 2>/dev/null | grep obsidian-tc

💻 영향받는 소프트웨어

SQL Server