CVE-2025-9967CVE-2025-9967是WordPress Orion SMS OTP Verification插件中存在的一个严重权限提升漏洞,CVSS评分为9.8,属于最高严重等级。该插件通过短信验证码(OTP)方式为用户提供身份验证功能,旨在增强WordPress站点的安全性。然而,该插件在所有1.1.7及以下版本中均存在身份验证缺陷,具体表现为插件在更新用户密码之前未能充分验证用户的真实身份。攻击者可以在未经任何认证的情况下,利用此漏洞将任意用户的密码修改为一个一次性密码(OTP),从而实现对目标账户的完全接管。由于该漏洞无需任何身份验证(PR:N)、无需用户交互(UI:N),且可通过网络远程利用(AV:N),同时对机密性、完整性和可用性均产生高影响(C:H/I:H/A:H),因此其危害程度极高。该漏洞由Wordfence安全团队的安全研究员发现并报告,于2025年10月15日公开披露。受影响的插件在WordPress生态系统中被广泛用于短信验证场景,涉及大量使用该插件进行用户身份验证的网站。一旦被恶意利用,攻击者可以接管管理员账户,进而控制整个WordPress站点,造成数据泄露、网站篡改、恶意软件分发等严重后果。
该漏洞的核心问题出在插件的密码重置功能实现中,具体位于 `vendor/js/reset-password.js` 文件中。Orion SMS OTP Verification插件设计了一个基于短信验证码的密码重置流程,理论上用户需要通过手机接收OTP并验证后才能重置密码。然而,插件在实现该流程时存在严重的身份验证逻辑缺陷:
1. **缺少身份验证校验**:插件在处理密码重置请求时,没有充分验证请求发起者是否为账户的合法拥有者。攻击者只需知道目标用户的手机号码,即可发起密码重置请求。
2. **OTP验证绕过**:插件允许将任意用户的密码直接设置为一个一次性密码(OTP),而这个OTP的生成和验证过程缺乏足够的身份绑定机制。攻击者可以通过调用相应的API端点,指定目标用户的手机号码,将密码重置为攻击者控制的OTP值。
3. **未认证访问**:由于整个流程缺少有效的身份验证环节,未认证的攻击者(PR:N)可以直接通过网络(AV:N)发起攻击,无需任何用户交互(UI:N)。
攻击利用方式:攻击者首先获取目标用户的手机号码(可通过信息泄露、社交工程或公开数据获取),然后向插件的重置密码接口发送请求,指定目标手机号码并将密码修改为攻击者已知的一次性密码。随后,攻击者使用修改后的OTP登录目标账户,实现账户接管。对于管理员账户,接管后可获得站点的完全控制权。