曲速未来:XSS使用Safari中的错误以及为什么说黑名单是愚蠢的

Safari(苹果公司研发的网络浏览器):Safari是苹果计算机的操作系统Mac OS中的浏览器,使用了KDE的KHTML作为浏览器的运算核心。Safari 是一款浏览器、一个平台,也是对锐意创新的公开邀请。无论在 Mac、PC 或 iPod touch 上运行,Safari 都可提供极致愉悦的网络体验方式,更不断地改写浏览器的定义。

区块链安全咨询公司 曲速未来 消息:研究人员发现一个Safari浏览器的bug,利用该bug可以绕过浏览器的过滤器,并进行XSS。之前也有研究人员发现过该漏洞,因此漏洞并不是第一次出现。

这是一个研究人员偶然发现脚本文件:

该页面的目的似乎是重定向到移动应用程序。它采用redirect-parameter,根据黑名单检查协议,如果没有找到重定向到它。

为了利用这个,就需要创建一个链接,它将作为Javascript执行,而它的协议不是'javascript'。跟据所知的,根据浏览器规格,这是不可能的。但是,与所有软件一样,浏览器并不总是遵循规范。

研究人员首先专注于重定向部分。有一个.toLowerCase()使用,是否可以使用一些unicode字符,当它变成小写时变成另一个?协议可以通过换行符进行拆分但仍然可以正常工作吗?

将焦点转移到重定向部分

研究人员选择专注于重定向部分而不是过滤器。

然后开始使用Safari。一般来说域名和URL-handling可能会存在漏洞,所以研究开始了分析之旅。

打开控制台,编写了一个快速功能来模拟旁路:

`//`是Javaccript中的单行注释,`%0a`是一个URL编码的换行符,用于转义注释。

幸运的是研究人员竟然发现成功了。因为黑名单中没有指定空协议,因此可以绕过过滤器。

最终的有效负载是:`?redirect=javascript://%0aalert(document.domain)`。

该漏洞被报告给了许多使用SaaS服务的站点,通过将其中一个子域指向服务,它们本身就受其影响。其中一个受影响的站点联系了SaaS供应商,该漏洞很快就被上游修补了。Apple也联系了这个bug。通常情况下,一切都会结束并被遗忘,但这次不是。

引发新漏洞的补丁

这很快被SaaS供应商修补,这意味着所有受影响的站点现在都是安全的了。但是,修复似乎打破了页面的功能,研究人员认为这是一个临时修复,所以继续访问该页面,偶尔等待一个永久的解决方案。

几个月之后,研究人员收到了一个链接到vpnMentor的文章,其中显示临时修复已被更永久的修复取代。然而,这又导致了新的XSS漏洞,这次是由vpnMentor发现的。

正则表达式

研究人员发现原来的payload还可以正常运行。第二个漏洞的补丁会导致第三个漏洞的出现,同样的payload还可以正常起作用。但这并不是一个纯DOM XSS,因为并不会在JS上读取URL参数,而是在服务端反射。

最新的解决方案

修复第三个漏洞的解决方案现在是将''和':'添加到黑名单中。研究人员想不出任何绕过这个,但也许有一些?

很可能这个功能需要支持许多不同的自定义应用程序协议,这使得使用白名单而不是黑名单或多或少是不可能的,否则强烈建议采用这种方法。

总结

区块链安全咨询公司 曲速未来 提醒:凡事做好笔记,俗话说的好,好记性不如烂笔头。黑名单从来都不是一个很好的解决方案。在进行漏洞修复时需要记录第一次漏洞出现的原因以预防漏洞再次出现。苹果公司在半年前最初被发现时被告知了协议错误。但是,在Mac和移动设备上最新版本的Safari浏览器中,该漏洞仍然存在。

猜你喜欢

转载自blog.csdn.net/WarpFuture/article/details/83349237