关键信息总结 漏洞概述 漏洞名称: Patient Picture Context Allows Arbitrary Patient Photo Retrieval CVE ID: CVE-2026-25929 GHSA ID: GHSA-778w-r8rm-8qhq 发布者: bradymiller 发布时间: 13 hours ago CVE严重性: 6.5/10(中等) CVSS v3评分: 6.5 CVSS v3基本度量: - 攻击向量: 网络 - 攻击复杂度: 低 - 所需权限: 低 - 用户交互: 无 - 作用范围: 未改变 - 机密性影响: 高 - 完整性影响: 无 - 可用性影响: 无 影响的版本 受影响的版本: <8.0.0 补丁版本: 无 漏洞描述 摘要: OpenEMR的文档控制器patient_picture上下文通过文档ID或患者ID提供患者照片,而不验证当前用户是否有权限访问该患者。具有文档ACL访问权限的认证用户可以提供另一个患者的ID并检索其照片。 详细信息: - 文件: controllers/C_Document.class.php - 在retrieve_action(...)函数中,当$context为"patient_picture"时,代码通过$patient_id获取$document_id,然后使用$document_id创建新文档。$patient_id来自请求。 - 对于非门户用户,只检查Document::can_access(),仅检查类别ACL,不验证文档的外键(patient_id)是否是用户可以访问的。因此,请求用户没有经过ACL/所有权检查。 - 易受攻击模式: $patient_id(或其他等效值)从请求/会话中获取,并用于获取和提供照片,而不进行ACL/所有权检查。 漏洞证明(PoC) 1. 以具有文档(或患者)读取权限的用户身份登录。 2. 确定另一个患者的ID(例如从报告、URL或枚举)。示例:patient_id=456。 3. 请求该ID的患者照片。确切的URL取决于路由,通常是类似这样的形式: 4. 如果响应是其他患者的照片(图像字节或重定向到图像),则确信存在IDOR(越权访问)。 预期行为(修复后) 服务器在提供照片之前检查用户是否有权限访问患者的记录;否则返回403错误。 实际情况(漏洞状态) 服务器对于任何提供的患者ID返回照片。 影响 IDOR: 患者照片(PHI)可以被具有文档访问权限的用户检索。 影响对象: 所有部署;任何可以通过带有patient_picture上下文的文档控制器访问的认证用户。