技术细节
该漏洞存在于EasyXDM 2.4.19的createElement()代码段中,当浏览器处于旧版文档模式(如IE7或IE5)时,以下代码会触发XSS:
if (HAS_NAME_PROPERTY_BUG) {
frame = document.createElement("<iframe name=\"" + config.props.name + "\"/>");
}
变量HAS_NAME_PROPERTY_BUG由testForNamePropertyBug()函数检测,仅在存在动态元素名访问缺陷的浏览器(如IE7模式)下返回true。
复现条件
- 环境限制:仅MSIE浏览器有效,且需切换至旧版文档模式(通过F12开发者工具模拟)。
- 攻击向量:构造恶意URL参数(如
xdm_c=%22onload%3dalert(document.domain)//),通过message/rfc822格式页面强制继承IE5模式以绕过DOCTYPE限制。
扩展攻击面
通过文档模式继承技术,即使目标页面声明<!DOCTYPE html>,攻击者仍可强制降级至IE7模式。例如,将漏洞页面嵌入message/rfc822格式的邮件文档(默认IE5模式),从而影响所有IE11用户。
修复方案
升级至EasyXDM 2.4.20版本,该版本已修复此问题。
参考链接
作者通过创新性的文档模式继承利用,将原本仅限IE7模式的漏洞影响扩展至主流IE11环境,凸显了浏览器兼容性代码的安全风险。