漏洞总结:Apostrophe CMS 信息泄露漏洞 漏洞概述 标题:Information Disclosure via 'choices'/'counts' Query Parameters Bypassing publicApiProjection Field Restrictions CVE ID:CVE-2026-30857 严重程度:5.3 / 10 (Moderate) 受影响版本: 修复版本:None 描述: Apostrophe CMS REST API 中的 和 查询参数允许未认证用户提取任何已注册查询构建器的 schema 字段的 distinct 值。这绕过了 限制,且受 保护的字段同样暴露。 技术细节: 1. 中的 和 方法处理查询参数。 2. 在主要查询后应用,但 和 通过单独代码路径绕过。 3. 在 的 构建器后处理中,仅验证字段是否有注册构建器或 方法,未验证字段是否在投影中。 4. 方法调用 MongoDB 的 操作,该操作不尊重投影,直接提取所有匹配文档的指定字段值。 5. 结果直接返回,未经过滤。 影响范围 数据泄露:未认证攻击者可提取任何配置了 的 piece 类型中所有 schema 字段的 distinct 值,即使这些字段被明确排除在投影之外。 受影响字段类型:所有注册查询构建器的字段类型(string, slug, integer, float, select, boolean, date, relationship)。 统计信息泄露: 变体额外揭示包含 distinct 值的文档数量,提供数据集的统计信息。 权限绕过:受 保护的字段(如 )也通过此路径暴露。 受影响 API:Piece-type REST API ( ) 和 Page REST API ( ) 均存在漏洞。 实际影响:如果 CMS 存储敏感数据(如内部状态值、优先级、内部类别、用户可见内容标记为受限),所有 distinct 值均可被任何未认证访问者提取。 修复方案 在 的 构建器后处理(约第 2644 行)中添加验证,跳过未通过 和 的字段。 额外建议:对 Page REST API 处理器 ( ) 应用相同的修复以保持一致性。 POC 代码