事件经过
obsidian-tc的路径ACL仅限制目录列举,未限制直接路径读取:当readPaths/writePaths未定义时,所有路径均被允许,且.obsidian/.git/.trash控制目录仅在目录枚举时被阻止。已认证调用者可直接获取控制文件(如.obsidian/plugins/*/data.json),从而获得存储在vault中的插件API密钥和Obsidian Sync密码。
影响分析
vault相邻的控制文件通常保存着长期有效的机密(同步密码、插件/提供商密钥),而这些正是AI笔记代理通常不会触碰的内容。通过此漏洞,持有任意有效令牌的代理可窃取vault生态系统自身所依赖的凭据。
攻击途径
未定义的readPaths/writePaths设置允许所有路径;strictReadDefault不保护直接请求路径;.obsidian、.git和.trash控制目录仅在枚举时被排除,而非在直接文件请求时排除。已认证调用者读取.obsidian/plugins/*/data.json以窃取插件API密钥和Obsidian Sync密码。
受影响系统
obsidian-tc (The-40-Thieves) < 1.3.1(路径ACL强制执行)
缓解措施
升级到obsidian-tc 1.3.1(提交74de320ddea855e1dec47d67beabe88491149dab;PR #73),该版本默认拒绝控制目录,并在直接请求上强制执行strictReadDefault。