漏洞概述 漏洞名称: Broken access control in /api/bookmark/getBookmark 允许未认证的发布访问者读取受密码保护的书签内容 CVE编号: CVE-2024-36453 严重程度: High (7.5/10) 漏洞类型: 访问控制绕过 / 授权绕过 根因: 发布服务的书签API路径存在授权绕过。 函数在检查只读角色后,将 作为请求上下文传递给 ,导致跳过了密码验证。 影响范围 受影响版本: <= v3.6.1 修复版本: v3.6.2 攻击向量: 网络 攻击复杂度: 低 所需权限: 无 用户交互: 无 具体影响: 任何能够访问发布服务的未认证攻击者,只要文档中至少有一个块被添加书签,即可无需密码直接获取受保护文档的书签块内容。 修复方案 升级至 v3.6.2 或更高版本。 POC代码 完整复现步骤: 1. 启动启用发布服务的 SiYuan 2. 创建新文档(如 publish-bookmark-poc) 3. 添加包含可识别内容的块(如 ) 4. 打开块属性并分配书签标签(如 leak-test) 5. 在文档树中启用发布访问控制,将文档设为 Protected 6. 设置文档密码(如 test123)并确认 7. 在全新的隐私/无痕浏览器会话中打开发布服务 8. 验证通过发布UI打开受保护文档需要密码 9. 不输入密码,打开浏览器开发者控制台运行上述 fetch 代码 10. 观察响应中包含书签条目,泄露受保护内容