{"data":{"id":"2642d2ea-91d9-4e6a-9f40-1d087dcb08e6","title":"GHSA-62gx-5q78-wrvx: obsidian-local-rest-api: Authenticated path traversal via URL-encoded %2F in /vault/{path} — arbitrary host file read/write/delete","summary":"The obsidian-local-rest-api plugin's /vault/{path} endpoints (GET, PUT, PATCH, POST, DELETE) decode the request path with decodeURIComponent after Express routing, with no confinement check. An authenticated client can send ..%2F..%2F sequences to escape the vault and read, write, or delete arbitrary files with the Obsidian process's privileges. The advisory notes that MCP and LLM-agent deployments make this easier to reach through prompt injection in vault content.","solution":"The source recommends applying the same posix.resolve(syntheticRoot, ...) and startsWith confinement check that vaultMove already uses to the decoded path in every vault handler, and rejecting any segment that decodes to '..'.","labels":["security"],"sourceUrl":"https://github.com/advisories/GHSA-62gx-5q78-wrvx","publishedAt":"2026-07-15T21:56:45.000Z","cveId":null,"cweIds":null,"cvssScore":null,"cvssSeverity":"high","severity":"high","attackType":["other"],"issueType":"vulnerability","affectedPackages":["obsidian-local-rest-api@< 4.1.3"],"affectedPackageNames":["obsidian-local-rest-api"],"affectedPackageRefs":["npm:obsidian-local-rest-api"],"affectedVendors":[],"affectedVendorsRaw":["Obsidian Local REST API plugin","MCP server","LLM agents"],"classifierModel":"claude-haiku-5-5","classifierPromptVersion":"v4","summaryPromptVersion":"v2","headline":null,"headlinePromptVersion":null,"cvssVector":null,"attackVector":null,"attackComplexity":null,"privilegesRequired":null,"userInteraction":null,"exploitMaturity":null,"epssScore":null,"epssCheckedAt":null,"kevDateAdded":null,"advisoryAliases":["GHSA-62gx-5q78-wrvx"],"affectedPackagesSource":null,"affectedPackagesCheckedAt":null,"patchAvailable":null,"disclosureDate":"2026-07-15T21:56:45.000Z","capecIds":null,"crossRefCount":0,"attackSophistication":"trivial","impactType":["confidentiality","integrity","availability"],"aiComponentTargeted":"plugin","llmSpecific":false,"classifierConfidence":0.8,"researchCategory":null,"atlasIds":null}}