通过序列化外国内容引入的安全缺陷
通过滥用该软件如何序列外国内容,已经实现了成功的消毒旁路。
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。