CVE-2026-2991KiviCare是一款广受欢迎的WordPress诊所和患者管理系统(EHR)插件,用于管理医疗机构的患者信息、预约、处方和账单等敏感数据。该插件在4.1.2及以下所有版本中存在严重的认证绕过漏洞。漏洞源于patientSocialLogin()函数在处理社交登录时,未能正确验证社交提供商返回的访问令牌(access token)的有效性。攻击者只需知道目标患者的邮箱地址,即可通过提供任意值作为access token来冒充该患者登录系统。这将导致大规模的敏感医疗信息泄露,包括患者个人信息、病历记录、预约安排、处方详情和账单信息等PII/PHI数据。值得注意的是,即使是非患者用户(如管理员)的认证cookie也会在HTTP响应头中被设置,虽然服务器返回403错误,但攻击者仍可利用这些cookie进行进一步攻击。
漏洞存在于KiviCare插件的AuthController.php文件中的patientSocialLogin()函数(第1852行和第284行附近)。该函数在处理社交登录请求时,直接使用攻击者提供的email和access_token参数创建用户会话,而没有调用相应的API验证access_token是否真实属于该邮箱对应的社交账户。攻击者构造的请求包格式如下:POST请求到插件的社交登录接口,携带email参数为目标患者邮箱,access_token参数为任意字符串。由于函数逻辑缺陷,服务器会错误地认为这是已通过社交平台认证的合法用户,从而创建有效的认证会话。攻击成功后,系统会设置该患者的认证cookie,但由于代码实现问题,其他角色用户的cookie也会被错误地添加到响应头中,导致攻击者可能获取更高权限账户的认证凭证。攻击者可以利用获取的患者身份访问系统后台,查看和下载所有患者数据,修改预约信息,甚至可能利用cookie泄露问题获取管理员权限。