🔴 严重 | CVE-2026-54733 — The Microsoft 365 and Microsoft Entra ID Plugins f...
🔴 【深度分析】严重安全漏洞:CVE-2026-54733
CVSS 评分: 严重(9.3)🔴 状态: Awaiting Analysis 发布时间: 2026-07-16
🔍 技术细节速览
| 字段 | 值 |
|---|---|
| CVE ID | CVE-2026-54733 |
| CVSS 评分 | 9.3 🔴 |
| 严重程度 | 严重 |
| CVSS 向量 | CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X |
| CWE 分类 | CWE-347 |
| 发布时间 | 2026-07-16 |
| 最后更新 | 2026-07-16 |
| 状态 | Awaiting Analysis |
| 数据来源 | security-advisories@github.com |
好的,作为一名资深网络安全分析师,我将基于您提供的 CVE 原始数据,生成一篇专业、严谨的漏洞深度分析文章。
CVE-2026-54733 深度分析:Moodle Microsoft 365 集成插件 JWT 签名验证绕过漏洞
⚠️ 严重等级:严重 (Critical)
CVSS 评分:9.3
CVSS 向量:CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
漏洞概述
CVE-2026-54733 是存在于 Moodle 的 Microsoft 365 及 Microsoft Entra ID (原 Azure Active Directory) 集成插件中的高危身份验证绕过漏洞。
该漏洞的核心问题在于,插件在处理 O365 单点登录 (SSO) 流程时,未能对用于身份验证的 JSON Web Token (JWT) 进行签名验证。这使得一个未认证的远程攻击者可以伪造任意 JWT 令牌,并以此冒充任何通过 O365 认证的用户登录 Moodle,从而完全接管该用户的 Moodle 账户。
由于影响的是认证这一核心安全环节,攻击成功可导致 机密性、完整性、可用性 的全面丧失,危害极大。
受影响组件与版本
- 受影响组件: Moodle 的
local_o365插件中的sso_login.php端点。 - 受影响版本范围:
- 所有早于 4.5.6 的 4.5.x 版本
- 所有早于 5.0.5 的 5.0.x 版本
- 所有早于 5.1.1 的 5.1.x 版本
- 修复版本:
- 4.5.6
- 5.0.5
- 5.1.1
漏洞原理分析
该漏洞属于 CWE-347: 密码签名的验证不恰当 (Improper Verification of Cryptographic Signature)。
- 攻击向量: 攻击向量通过网络 (
AV:N),攻击者无需任何前置访问权限。 - 漏洞成因:
local_o365插件实现了 Microsoft 365 和 Entra ID 的 SSO 功能。在典型的 OAuth/OIDC 流程中,客户端(此处为 Moodle)向身份提供者(Microsoft Entra ID)请求认证,并最终获得一个 JWT(ID Token)。- 这个 JWT 通常由身份服务器(微软)使用其私钥签名,客户端(Moodle)收到 JWT 后,应使用微软的公钥验证该签名的合法性,以确保令牌确实由微软签发且未被篡改。
- 然而,
sso_login.php端点的实现存在严重缺陷。 它直接从 JWT 中提取 payload,并使用base64_decode解码,然后直接从upn(User Principal Name,如user@domain.com) 声明中提取用户名,并用此用户名来认证用户登录。 - 关键漏洞点: 在整个过程中,代码完全跳过了 JWT 签名验证步骤。它没有检查 JWT 的头部和payload是否与预期的签名匹配。这意味着,攻击者无需知道任何密钥,只需构造一个结构有效的 JWT,并在其中填充自己想要的
upn值,即可触发完整的登录流程。
- 攻击复杂度: 攻击复杂度较低 (
AC:L)。构建一个伪造的 JWT(即使其结构符合标准)是非常简单的。只需要知道有效的用户upn即可。
影响评估
- 攻击前提: 无需身份验证 (
PR:N),无需用户交互 (UI:N)。 - 攻击复杂度: 低。攻击者可以轻松构造一个符合语法要求的 JWT 令牌。
- 利用条件: 攻击者需要知道或枚举出目标 Moodle 站点上有效用户的
upn(通常是其电子邮件地址)。在组织中,电子邮件地址通常容易被猜测或获取。一旦获得upn,攻击即可瞬间完成。 - 潜在后果:
- 完全权限接管: 攻击者可以伪装成任何通过 O365 集成的用户,包括管理员。一旦获得管理员权限,攻击者可以完全控制 Moodle 站点,包括:
- 数据泄露(高机密性影响
VC:H): 窃取所有课程资料、用户数据、考试成绩、个人隐私信息。 - 恶意操作(高完整性影响
VI:H): 修改课程内容、篡改成绩、植入恶意链接、创建后门账户。 - 拒绝服务(高可用性影响
VA:H): 删除课程、禁用账户、破坏系统配置,导致服务不可用。
- 数据泄露(高机密性影响
- 完全权限接管: 攻击者可以伪装成任何通过 O365 集成的用户,包括管理员。一旦获得管理员权限,攻击者可以完全控制 Moodle 站点,包括:
- 总体威胁评估: 极其严重。这是一个典型的“认证绕过” + “垂直/水平越权”的组合漏洞。结合其低利用门槛和灾难性的影响,该漏洞应被列为最高优先级的修复项。
修复建议
1. 立即升级(根本解决方案)
这是最有效、最彻底的修复方法。请 Moodle 管理员立即将 local_o365 插件升级到以下修复版本:
- 升级到
4.5.6(针对 4.5 系列) - 升级到
5.0.5(针对 5.0 系列) - 升级到
5.1.1(针对 5.1 系列)
升级完成后,请务必进行功能性测试,特别是 O365 SSO 登录流程,确保一切正常。
2. 临时缓解措施(在无法立即升级时采用)
如果无法立即升级,可以考虑以下临时缓解措施,但它们不能完全消除风险,应尽快完成升级。
- 禁用 O365 SSO 集成: 在管理后台临时禁用
local_o365插件,立即切断攻击路径。但这将影响所有依赖 O365 登录的用户,需要提前通知用户并启用备用的本地登录方式。 - 限制已知
upn白名单(作用有限): 虽然攻击者需要知道upn,但这并不能阻止拥有合法用户信息的内鬼攻击,或攻击者通过枚举猜测upn。 - 部署 Web 应用防火墙 (WAF): 可以尝试配置 WAF 规则,拦截或检查发往
/local/o365/sso_login.php的请求,特别是对 JWT 结构进行深度分析。但鉴于 JWT 可以被轻易伪造,且合法流量也应符合相同结构,此方法极易产生误报或漏报,不推荐作为主要依赖。
参考资料
- NVD 官方页面: https://nvd.nist.gov/vuln/detail/CVE-2026-54733
- CWE 分类: CWE-347: Improper Verification of Cryptographic Signature
- Moodle 安全公告(待发布): 请关注 Moodle 官方安全公告页以获取供应商的详细声明。
- Moodle 插件源(GitHub): 开发者的 GitHub 仓库是追踪具体代码补丁的最佳途径。搜索
moodle-local_o365相关仓库。
💬 评论