对该漏洞的危害及实施方式的理解
9月底公布的CVE-2020-5421 是由CVE-2015-5211的修复引入的,都是 RFD类型的漏洞。在修复该问题的过程中,一边也对该问题逐步深入做了一些了解,自然最关心的是它是怎么的漏洞,怎么实施攻击,会有什么样的后果,对谁会造成危害,当然了解这些都是为了做到怎么避免形成危害。
Reflected File Download - A New Web Attack Vector 及RFD(反射型文件下载)漏洞原理及实战案例全汇总 给出了定义和示例,尤其是后者给出了几个曾经存在该漏洞的著名网站。
漏洞的名称有三个词构成,用图表示为三要素,如下:
通过以上两篇文章的定义和示例能得到理解,这里也不妨打一个通俗些的类比,以好理解所造成的危害范围及影响。 假定有一个大家都信任的机关,它会通过专用信封发送一些信息给大家,内容有对某事件当事人的通知,或者为当事人双方转送信息,以推动事件的进行或起到协同作用。一般的大家都是互相信任,尤其是因为信息是通过这个权威机关的,当事各方都对经机构转递的信息深信不疑。所以某一天,当A收到有机构发来的信件和转交的一个包裹时,A没有迟疑的就拆包了,但悲剧也就发生了,包裹里是危险的东西(随你去想吧)。这是为什么呢?因为B发现了机构中某一个办事员工作疏忽大意,并不会认真检查转交的内容,甚至不核实B的身份,就是简单的把B提交的东西加上机构的信封,不做任何核实就在备注中按照B申报的内容写明是"经核实是xx物品"的信息。
不一定完全等同,但从这个类比看,有以下几点是和RFD的一致的:
- 直接受害者和被攻击的目标是接收了这个包裹的人;
- 这个受信任的机关虽然经手了危险品,但并不是被攻击的目标(或许因为是被隔离的非重要部门),它只是被别人利用了,是非主动行为,有一定的连带责任,网络的案例比这个邮件的类比更无辜些;-
- 对它越信任的,越容易被伤害,可信的机构也会面临不被信任的伤害;
- 存在漏洞的根源是对B(甚至不知道身份是谁)做了无限的信任导致的;
也有牵强的地方,在类比中邮件是经可信机关发出的,而在互联网上则只需要在一个论坛或社交信息中留下该著名网站域名下的某个带有自己添加参数的url就能形成诱饵。
几个条件
在了解了实施过程和危害后,导致攻击发生的必要行及条件如下:
- 存在于互联网这样的开放环境
- 是著名的网站
- 在处理中存在未经检查的直接反射
- 可以被下载为可被客户端执行的文件类型
相反的,在企业内网中用户群都是特定的内部用户,或者虽然在互联网,但不为人知,或者别人根本不会敢兴趣,还有系统有安全认证,访问任何连接都会被拦截到用户认证,或者限制了下载的文件类型都不能让攻击成功。
一个尝试
关于如何形成下载,先提议一个技术示例。
打开连接 HTML <a> download 属性
这里介绍download是html5中<a>标签的一个新属性,该属性也可以设置一个值来规定下载文件的名称。所允许的值没有限制,浏览器将自动检测正确的文件扩展名并添加到文件 (.img, .pdf, .txt, .html, 等等)。
<a href="/images/myw3schoolimage.jpg" download="w3logo">
在亲自试一试 中体验一下。原来的示例,会把w3school_logo_white.gif 下载成文件w3logo.gif, 但如果把download设置为w3log.bat,它就会以w3log.bat被下载保存。
<!DOCTYPE html>
<html>
<body>
<p>点击 W3School 的 logo 来下载该图片:<p>
<a href="/i/w3school_logo_white.gif" download="w3logo.bat">
<img border="0" src="/i/w3school_logo_white.gif" alt="W3School">
</a>
</body>
</html>
对了,攻击也就是通过这个标签的download属性进行的。只是链接是发布在一个社交网站中,比如facebook, 微博, 甚至邮件中。
知道了漏洞的存在就能进行攻击吗?我们再通过上面的例子体会一下。
<!DOCTYPE html>
<html>
<body>
<p>点击 W3School 的 logo 来下载该图片:<p>
<a href="http://photocdn.sohu.com/20150920/Img421633729.jpg" download="w3logo.bat">
<img border="0" src="http://photocdn.sohu.com/20150920/Img421633729.jpg" alt="W3School">
</a>
</body>
</html>
这次href 替换成了一个和体验页面不同域的网页,这次再点击,发现并不会下载。这是因为浏览器做了跨域的禁止,只有同域下该属性才可能会起作用,它应该是从浏览器端进行的安全控制。如果你不是使用特殊的不做此限制的浏览器,才可能会被攻击。
知道这些后,现在你对严重程度及影响怎么评价?
到这里,看看几个条件,以及形成攻击所依赖的工具上的限制,你肯定也会有自己的一份理解,如果攻击得手了结果肯定是不可想象的严重,但攻击被形成的概率和手段有效性的评价就看你对风险等级的定义了。
[前一篇]对Spring framwrok 3.1.1 进行构建
[首页] 关于CVE-2020-5421 想说的一些事