CVE-2026-34586PdfDing是一个自托管的PDF管理工具。在1.7.1版本之前,其`check_shared_access_allowed()`函数存在安全缺陷,仅验证会话是否存在,未检查`SharedPdf.inactive`(过期或最大浏览次数)或`SharedPdf.deleted`状态。这使得已授权用户能够在PDF过期、达到查看上限或被软删除后,依然可以通过Serve和Download端点访问共享PDF内容,导致敏感信息泄露。
该漏洞的根本原因在于服务器端对共享资源访问控制的验证逻辑不完整。PdfDing的`check_shared_access_allowed()`函数在设计上仅依赖于会话的有效性来决定是否允许访问,而忽略了数据模型中定义的文件生命周期状态。具体来说,代码路径中缺少对`SharedPdf`对象的`inactive`字段(用于判断资源是否过期或超限)和`deleted`字段(软删除标记)的校验。因此,即使管理员已经设置了分享链接的过期时间或删除了文件,只要攻击者拥有有效的用户会话(低权限),即可构造针对Serve或Download接口的HTTP请求。服务器会通过会话验证,直接返回文件流,从而绕过了业务逻辑层面的访问控制限制。