67 views

HTTP/2标准的发展 7 – HTTP/2安全考量

image

上一节提到了HTTP/2攻击应对以及安全考量章节待研究。但待研究就相当于不研究,还是研究一下吧。

1.安全考量本身

IETF的每一篇文档都强制要求有“Security Considerations”章节,并且为这一章节的撰写提供了一篇独立的RFC 3552 “Guidelines for Writing RFC Text on Security Considerations”作为写作指导。这篇RFC也可以作为网络设备厂商功能开发文档中的安全考量章节的指导。

RFC 3552思路主要是有什么样可能的攻击以及什么样可能的应对手段。抛开细节,我觉得最重要的是安全建模章节中对于网络协议安全建模的假设:

1.假设黑客没有控制通讯的端点。

2.假设黑客可以完全控制通讯通道,有嗅探报文的能力,可以增删改报文。

一切安全考量讨论都是以这个假设为基础。

2.HTTP/2几个安全问题

【HTTP/2】的Security Consideration提到了七八个点,对于我觉得有趣的几个小节研究了一下。

2.1.Cross-Protocol Attacks

Cross-site attack并没有找到标准定义,这里给出了一个可能例子:

Client访问一个恶意HTML页面,页面中嵌有恶意代码。恶意代码向一个SMTP Server发送HTTP请求。因为SMTP协议格式和HTTP类似,如果SMTP Server实现有问题,忽略未知header,可以构造HTTP header使得在所有HTTP header被SMTP Server忽略后,剩下的SMTP header组成一个SMTP message。这个SMTP message是针对SMTP协议的攻击报文。

看完了是不是觉得慎得慌。

对于加密流量,因为HTTP/2使用了TLS的NPN和ALPN扩展,在扩展中明确指定了协议类型,HTTP/2 over SSL/TLS本身足以对抗cross-protocol攻击。

对于明文流量,如果HTTP Server不支持Upgrade之类消息,类似上面例子,可能被SMTP端点跨协议攻击。

看官可以说,我支持update消息不就可以攻击了。但这就不叫跨协议攻击,而是直接攻击了。这种攻击理论意义更大。

2.2.DOS攻击防范

关于DOS,案件往往发生在server端,毕竟服务是Server提供的。中间网络设备实现方面,DOS考虑的也比较多,在功能设计的时候,每个功能都要考虑消耗的资源,例如内存消耗,MAC资源分配,CPU防护等。

HTTP/2协议由于Server Push类功能的引入,关注Server之外,也关注针对Client的DOS攻击概念上,Web Client不提供服务,如果说DOS,应该从浏览器为用户提供服务角度来说。

DOS攻击的简单应对策略就是设置阀值,例如:

1.Client限定指定Server的Server Push数据上限。

2.Server限定一个HTTP/2 connection之中并发Stream的上限。

协议提到,各种Control Frame,empty frame,小frame,头部压缩都需要在实现时考虑到,提供阀值进行控制。

协议强调了header block(也就是存放HTTP/2 header的frame)需要特殊注意。因为关键HTTP header可能出现在Header block尾部,因此Header block需要被全部缓存并解析,太大的Header Block会占用过多内存资源,应该有所控制。

2.3.Use of Compression

这部分主要针对近年兴起的【BREACH】攻击。BREACH和我前面分析过的BEAST都是选择明文攻击,不同之处在在于BEAST利用了块加密的CBC模式的设计缺陷,BREACH利用了Deflate压缩算法进行攻击。攻击者的目的都一样,都是恢复cookie中密钥相关内容。

BREACH的应对的方法是:

对于HTTP/2 over TLS,禁用流压缩。这里压缩已经没有必要了,HTTP/2自身有压缩机制。

HTTP/2压缩的时候,不能将涉密信息同可能被攻击者选择明文的信息一同压缩

对于数据来源不是很确定的数据(也就是可能被选择明文的数据)不能进行压缩。

有关HTTP/2压缩甚为繁琐,和BREACH攻击一同在后面日志详述。

【参考】

1.HTTP/2 – http://tools.ietf.org/html/draft-ietf-httpbis-http2-16

2.HTTP/2-Compression – http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-10

3.BREACH – http://breachattack.com/resources/BREACH%20-%20SSL,%20gone%20in%2030%20seconds.pdf

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">