漏洞概述 漏洞名称:The Welcome Mat – Pre-Auth Information Disclosure and Credential-Based API Access in OpenEMR 8.0.0.3 and 8.2.0 作者:Jiva 状态:Pending 目标:OpenEMR 8.0.0.3 和 8.2.0(在 8.0.0.3 和 8.2.0 上验证) 可利用性:难以枚举,需要有效的用户名和密码 严重性:高(CVSS 8.1) CVSS:AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N 索引:Part 2 of 5 状态:在 8.2.0 中未修复(最新发行版) 影响范围 漏洞描述:OpenEMR 8.0.0.3 暴露了其完整的 OAuth2 基础设施,包括每个端点、每种支持的授权类型、每个作用域,无需认证。结合未认证的客户端注册和 OAuth2 密码授权,攻击者可以使用任何有效的用户凭据获取 API 访问令牌,而无需接触 Web 界面。 具体影响: - 信息泄露:通过未认证的端点 获取详细的 OAuth2 配置信息。 - 密码授权:使用有效的用户凭据通过密码授权获取 API 访问令牌。 - 客户端注册:未认证的客户端注册允许攻击者注册客户端并获取访问令牌。 修复方案 禁用密码授权:OpenEMR 的官方文档建议禁用密码授权。该授权类型应从 OAuth2 服务器配置中移除。合法用例可以通过使用 PKCE 的授权码流来替代,该流提供适当的 MFA 支持,并且不会向客户端应用程序暴露密码。 限制预认证披露面:SMART 配置端点( )是标准要求的,但其内容(特别是 列表和注册端点)应反映最小表面,而不是所有配置的选项。Swagger 规范、版本端点和健康检查应至少需要有效的会话。FHIR CapabilityStatement 可以保持公开(这是标准做法),但不应包含有助于攻击者的实现特定细节。 POC 代码 步骤 1 - 发现端点(无需认证) 步骤 2 - 注册客户端(无需认证) 步骤 3 - 使用密码授权和默认凭据 版本披露:额外发现 精确版本号: 完整 FHIR CapabilityStatement: Swagger API 规范: 基础设施健康检查: 披露时间线 2026-04-12:独立安全研究期间发现预认证表面 2026-04-12:确认密码授权,使用 admin/pass 获取带有 fhir:patient 范围的令牌 2026-04-12:记录漏洞(高,CVSS 8.1) 2026-04-12:记录修复建议 2026-09-02:向 VulnCheck (CNA) 请求 CVE ID 2026-06-03:公开披露 - 此文章发布 其他信息 OpenEMR:一个开源项目,可在 https://github.com/openemr/openemr 找到。这些发现是在 OpenEMR 8.0.0.3 上演示的,并确认在当前版本(8.2.0)中仍然可利用。所有测试都是在专用的、自托管的测试实例上进行的独立安全研究。没有生产系统或真实患者数据被访问或影响。 Jiva Security:提供 Web 应用程序渗透测试、源辅助评估和专用漏洞研究。每次参与都由我亲自执行,没有分包商、账户经理或初级员工。从首次接触到最终报告的高级攻击性专业知识。