医疗管理插件曝严重漏洞,只需邮箱即可登录任意患者账户 CVE-2026-2991
医疗管理插件曝严重漏洞,只需邮箱即可登录任意患者账户
近日,Wordfence安全团队披露了WordPress医疗管理插件KiviCare的一个严重身份认证绕过漏洞(CVE-2026-2991),CVSS评分高达9.8分。攻击者仅需知道目标用户的邮箱地址,无需任何密码或令牌验证,即可以该用户身份登录系统。
漏洞背景
KiviCare是一款面向诊所和医疗机构的WordPress插件,提供电子健康记录(EHR)管理功能,包括患者信息管理、预约调度、处方管理、账单处理等。根据WordPress官方统计,该插件下载量超过11万次,主要用户为中小型诊所和私人医疗机构。
漏洞原理
问题出在插件的社交登录功能上。patientSocialLogin()函数在处理登录请求时,本应验证社交提供商返回的访问令牌,但实际实现中这一关键步骤被跳过了:
正常流程:
1. 用户提交邮箱和社交令牌
2. 向Google/Facebook验证令牌有效性 <- 被跳过
3. 确认令牌对应的邮箱匹配 <- 被跳过
4. 授予访问权限
实际流程:
1. 用户提交邮箱和任意字符串
2. 直接根据邮箱查找用户并授权
这意味着攻击者只需提供目标患者的邮箱地址和任意伪造的token值,系统就会乖乖返回认证Cookie。
更严重的问题
漏洞还存在一个设计缺陷:认证Cookie的设置发生在角色验证之前。即使目标用户不是患者(比如是管理员),系统虽然最终会返回403错误,但管理员的认证Cookie已经在响应头中泄露了。
这意味着攻击者可以通过这个漏洞窃取管理员账户的访问权限。
影响范围
受影响版本:KiviCare <= 4.1.2
攻击者可获取的敏感数据包括:
-
患者个人身份信息 -
医疗诊断记录 -
处方药物信息 -
账单和支付记录 -
预约历史
对于医疗机构而言,这类数据泄露可能面临HIPAA(美国)或GDPR(欧盟)的严重合规处罚。
攻击演示
import requests
payload = {
"email": "victim@example.com",
"token": "anything_works_here",
"provider": "google"
}
response = requests.post(
"https://target-clinic.com/wp-json/kivicare/api/v1/auth/patient-social-login",
json=payload
)
# 响应头中包含有效的认证Cookie
print(response.headers.get('Set-Cookie'))
修复建议
官方已发布修复版本4.2.1,请立即更新:
-
登录WordPress后台 -
进入插件管理页面 -
更新KiviCare至最新版本
在更新前,建议临时禁用社交登录功能,并审计系统访问日志排查可疑登录行为。
安全启示
这个漏洞再次提醒我们:
-
OAuth/社交登录的实现必须在服务端验证令牌,绝不能信任客户端提交的数据 -
敏感操作(如设置Cookie)应在所有验证完成后进行 -
医疗等敏感领域使用WordPress插件需要格外谨慎,建议评估专业医疗信息系统
参考链接:
-
https://www.wordfence.com/threat-intel/vulnerabilities/id/8d22448b-aa8e-4775-b7c5-e7bae94a3f6d
夜雨聆风