通过序列化外国内容引入的安全缺陷

突变XSS绕过在Dompurify中解决

通过滥用该软件如何序列外国内容,已经实现了成功的消毒旁路。

dompurify是跨站脚本(XSS)用于HTML,MATHML标记语言和SVG矢量图形格式的消毒剂。

可用github,开源JavaScript软件磨砂代码可以消毒和删除任何可以利用以触发XSS攻击的危险元素。

但是,渗透测试仪和虫子赏金猎人MichałBentkowski已经能够找到绕过消毒支票的方法。

突变XSS(MXSS)攻击最初是在2013年现场出现的。由Mario Heiderich描述,这类XSS利用滥用浏览器默认功能和解析差异。

根据Bentkowski的咨询和技术文章在9月21日发布的问题中,使用命令,例如:

div.innerhtml = dompurify.sanitize(htmlmarkup)

该代码被解析并传递到DOM树,对树进行了消毒,然后将DOM树序列化回HTML标记。然后将解析的DOM树附加到文档的DOM树中。

直觉上升

研究人员说:“直觉可能是将DOM树序列化并再次解析它应该始终返回初始的DOM树。”“但这根本不是真的。”

Bentkowski指出,Serialize-Parse往返“不能保证返回原始的DOM树”,因此,可以成为MXSS漏洞的根本原因。

当引入外国内容(例如MathML或SVG名称空间)时,使用了另一种解析,允许儿童实体并解码HTML实体。


阅读更多最新漏洞新闻


在MathML名称空间中,有两个特殊元素 -m彩MALIGNMARK- 允许创建“在HTML名称空间中”的标记,但在重新计算它是在MathML名称空间中,[这意味着]随后的样式标签[以不同的方式解析,并导致XSS。”

9月18日发布了MXSS缺陷的修复程序。Dompurify版本2.0.16包含一个用于漏洞的补丁,以及用于安全性的修复程序策略错误影响用户代理在Android设备上的Google Chrome旧版本上。

Bentkowski告诉每日swbeplay2018官网ig披露通过FastMail为他赢得了250美元的奖励。尽管FastMail产品没有受到影响,但该公司使用Dompurify,并将图书馆添加到其错误赏金范围中。

此前,FastMail授予研究人员750美元的CSS消毒旁路。

“时间问题”

贴片发出几天后,另一个旁路发现有效载荷有类似的根本原因。Bentkowski说,软件代码中的模式 -div.innerhtml = dompurify.sanitize(html)- 是“设计XSS-E的突变”。

研究人员补充说:“这只是找到[其他]实例的时间问题。”

此后,Bentkowski的成就激发了另一位安全研究人员开始研究Dompurify。

他的研究员对“使用基于数学标签的风格来混淆HTML解析器和绕过Dompurify”的感兴趣,Portswigger的Gareth Heyes设法绕过了Dompurify的修补版本和beplay官网可以赌触发MXSS在Chrome和Firefox中。

去年,本特科夫斯基还描述了如何滥用Dompurify中的元素以触发Chrome和Safari中的MXSS变体。

然后在6月,渗透测试仪检查Ruby的Sanitize,HTML和CSS消毒软件。发现可能导致XSS攻击的不当消毒漏洞,被发现为CVE-2020-4054。


有关的配置漏洞触发XSS,在Ruby Gem中进行消毒