HDiff:一种基于协议标准的语义差异人机协同分析框架

admin 2022年7月12日08:09:12评论164 views字数 6353阅读21分10秒阅读模式

引言


互联网是一个复杂的大型分布式异构网络,其中部署着无数的Web中间盒子,如缓存代理、防火墙、CDN等等。一个端到端的HTTP请求需要经过多个中间盒子才能到达真正的目的服务器。在该场景下,一个典型的安全问题便是语义差异问题,即网络数据包在链路传递过程中,多方协议实例对数据包产生不一致的语义解析结果,进而触发不同的程序处理行为,最终导致严重的安全漏洞。现有研究中,由语义差异导致的典型安全问题包括:HTTP请求走私攻击(HTTP Request Smuggling,HRS)[1]、基于缓存投毒的拒绝服务攻击(Cache-Poisoned Denial of Service,CPDoS)[2]与故障主机攻击(Host of Troubles,HoT)[3]等。这些研究成果指出了HTTP消息解析理解过程中的复杂性,证明了协议语义差异安全问题已经成为当下互联网的严峻安全威胁。


虽然已有工作发现了部分语义差异安全问题,但其研究方法大多为人工分析,严重依赖于研究者自身的经验。尤其是在分析协议文档和测试协议实现时需要消耗大量的人力,不具备良好的可扩展性,也很难达到较高的测试覆盖率。因此,安全社区需要一种更系统、可量化和可扩展的方法来发现已有工作未能检测到的语义差异安全问题。


为了解决该问题, 该论文提出了一种基于协议标准的语义差异安全问题分析框架——HDiff。它使用自然语言分析技术从RFC文档中自动提取规范约束,并利用差异测试技术自动化发现HTTP软件实现间的语义差异问题。HDiff在10个主流的HTTP软件中发现了14个语义差异漏洞,其中包括三个新发现的攻击变种,获得了Apache、Tomcat、Weblogic和微软IIS等知名软件厂商授予的7个新CVE。研究成果设计了一套可迁移的语义差异人机协同分析框架,对进一步自动化、智能化分析协议语义差异问题有着良好的借鉴作用。


该论文发表于国际可靠性系统和网络安全国际顶尖的学术会议(DSN2022),并获DSN 2022 Best Paper Runner-Up奖。该研究是清华大学与奇安信集团联合研究成果,论文作者包括沈凯文、陆建宇、杨雅儒、陈建军、张明明、段海新、张甲和郑晓峰。


HDiff:一种基于协议标准的语义差异人机协同分析框架

图1 DSN 2022 Best Paper Runner-Up获奖证书

 

论文下载:https://netsec.ccert.edu.cn/files/papers/DSN22_HDiff.pdf

论文PPT:https://netsec.ccert.edu.cn/files/slides/HDiff_DSN2022_PPT.pdf


HTTP 语义差异安全问题

在许多HTTP传输场景中,两个或者更多个不同的HTTP协议实现需要协同处理同一个HTTP消息。而在多方解析消息过程中,容易造成不同的语义理解。这种轻微的语义理解不一致可被攻击者利用来发起攻击,比如缓存污染、WAF绕过等等。图2展示了HTTP协议中的语义差异安全问题的示意图。该问题利用了前端服务器(如缓存、代理、防火墙)和后端服务器(如负载均衡、代理、终端服务器)在解析一个模糊的HTTP请求时的不同行为。消息处理的不一致会对HTTP消息的语法有效性或缓存行为有不同的处理逻辑,最终可能导致严重的安全问题。本项研究以三种具有代表性的HTTP协议语义不一致问题为例,验证分析检测框架的有效性。


HDiff:一种基于协议标准的语义差异人机协同分析框架

图2  解析模糊HTTP消息时的不同行为可能造成语义差异安全问题

1

HTTP请求走私攻击(HRS)[1]:最典型的HTTP语义差异攻击是HTTP请求走私攻击。攻击者发送带有两个不同的Content-Length头的模糊HTTP请求,前端服务器和后端服务器在处理该歧义请求时,采用不同的Content-Length头部进行理解,造成两者对请求实体内容的有效负载的理解不一致。该攻击可以在HTTP请求消息中走私一个不被前端服务器察觉的HTTP请求,从而造成缓存污染、访问控制权限绕过等攻击。


2

缓存中毒拒绝服务攻击(CPDoS)[2]该攻击利用语义差异来使后端服务器生成的错误页面污染Web缓存服务器,最终造成拒绝服务攻击。常见的CPDoS攻击方式有HTTPHeaderOversize(HHO)、HTTPMetaCharacter(HMC)和HTTPMethodOverride(HMO),它们分别利用了HTTP头部字段的大小限制、元字符处理和请求方法覆盖方法来触发服务器间的语义差异,并进一步造成缓存中毒拒绝服务攻击。

3

故障主机攻击(HoT)[3]它是另一种可造成Web缓存污染或者安全策略绕过的攻击。与HRS攻击不同,该攻击主要利用不同软件对多个重复的Host头部字段或者请求行中绝对URI与Host的不一致理解来进行攻击。攻击者可以构造一个包含多个Host字段的HTTP请求,诱使两种不同的HTTP实现以不同的方式接受和理解该歧义请求,这会导致可利用的语义差异问题。


主要工作

01

关键观察

现有研究表明:在HTTP协议消息传递链中的复杂性容易引入因语义差异导致的安全问题。我们从中提炼出两个关键原因,并总结如下。

1

HTTP协议实现违背RFC规范约束导致不同实现间的语义差异安全问题。


首先,根据鲁棒性原则,许多HTTP实现可能在接收HTTP消息时会宽容地接受一些不符合RFC要求的请求。


此外,协议RFC规范通常都很冗长(例如,RFC 7230总共包括89页)。开发者很难完全理解所有标准规则,并开发出无缺陷的协议处理代码。尤其是随着网络协议变得越来越复杂,协议消息处理代码的完备性也越来越难以保证。

2

RFC规范定义了一些可选的协议要求,允许开发者灵活实现协议。


RFC文档经常使用类似MAY、SHOULD或SHOULD NOT等关键词来描述规范约束,开发者在实现具体的规范约束时可能有不同的偏好,从而导致HTTP软件存在不同的实现。


在独立检测每个实现时,不同的偏好看似是无害的,但当多个实现共同组合时,便会引入语义差异的问题,最终导致严重的安全漏洞。


因此,从RFC规范中提取规则来辅助协议测试将是发现语义差异安全问题的有效方法之一。

02

研究挑战


从RFC文档中提取规则并指导协议语义差异安全测试的过程中,有很多研究挑战需要被解决。一方面,RFC规范使用自然语言描述,是非结构化的语言,通常包含多层隐含语义。从RFC规范这类非正式的语言描述中提取规则十分困难; 另一方面,HTTP协议规范通常都较为冗长,且在协议更迭过程中被多次更新。因此,手动提取所有的HTTP规范中的语义信息将需要大量的人工成本,并且容易出现缺漏。其次,大多数的语义差异问题为逻辑安全问题,不会显示任何明确的错误标识,例如崩溃或内存损坏错误,比较难被精确检测。


03

解决思路

如图3所示,该研究设计了一个新颖的检测框架HDiff,用以解决上述问题,从而较为系统地发现HTTP软件实现中的语义差异安全问题。


HDiff:一种基于协议标准的语义差异人机协同分析框架

图3  HDiff: HTTP 协议语义差异安全问题人机协同分析框架


针对第一个挑战,HDiff设计了文档分析模块,它基于NLP技术从RFC文档中自动提取两种类型的协议规则:规范约束(Specification Requirement,SR)语义规则与ABNF(Augmented Backus–Naur Form)语法规则。首先,它通过正则模式匹配技术从RFC 文档中提取有效的ABNF 规则集合。同时,它会使用基于情感分析的规范要求提取器从RFC 文档中提取语义规则,并通过文本规则转换器将规则转换成形式化表达。文本规则转换器主要基于依赖树分析和文本蕴含技术开发与设计。


为了克服第二个挑战,HDiff利用差异测试技术来发现语义差异问题。现有研究已经证明,差分测试是发现语义差异问题的有效方法[4-6], 具有相同功能的程序在遇到同一消息输入时的不同行为差异会被标记成潜在的错误。具体而言,HDiff通过测试用例生成器和规范约束翻译器生成大量测试样例。为了尽可能多地触发多个HTTP服务器之间的差异,HDiff还会对前面生成的测试样例进行变异。最后,HDiff利用差异分析技术来确定语义差异安全问题。它首先独立测试每个HTTP实现,然后对比他们的日志、请求和响应数据来确定实现间的差异行为。HDiff引入了 的概念,便于量化描述多个HTTP实现之间的行为差异性。在不同的检测模型下,用户可以基于 定义不同的检测规则来发现语义差异问题。


主要发现

该研究分析了HTTP 1.1的核心RFC规范(RFC 7230-7235),共包括172088个词和5995个有效句子。HDiff总共发现了117个规范约束(SR)和269条ABNF语法规则,并基于SR翻译器生成了8427个带有断言的测试样例,基于测试样例生成器生成了92658个测试数据。然后,HDiff进一步发现这些HTTP实现存在超过100个违法SR要求的处理逻辑以及各类语义差异行为。最后,实验验证了实验结果的可利用性,并确认了存在安全漏洞的HTTP服务器对。


表1展示了每个HTTP软件存在的相关漏洞。在测试目标上,HDiff都找到了这三类攻击(HoT、HRS和CPDoS)的成功攻击有效载荷(Payload)。表2简要地展示了一些发现的漏洞。

表 1  被测试的10个流行HTTP软件及相关漏洞 

HDiff:一种基于协议标准的语义差异人机协同分析框架

 

表 2  HDiff发现的语义差异安全问题示例

HDiff:一种基于协议标准的语义差异人机协同分析框架


该研究进行了一个简单的前后端组合分析。我们认为现实中可能存在类似的部署形态。图 4 展示了实验发现的受影响的服务器对。虽然有些漏洞并没有在这些服务器对中找到可利用调用链,但这并不代表它们在现实世界中不可利用。在现实世界的部署中,有非常多来自不同类型、版本、配置的HTTP实现组合。这些漏洞在与其他HTTP实现共同部署时,可能会导致可利用的攻击,比如使用CDN作为前端服务器。

HDiff:一种基于协议标准的语义差异人机协同分析框架

图 4  受到三种攻击影响的服务器对


整体而言,该研究主要发现以下几个方面:

1

所有的HTTP代理服务器都可能被该研究发现的11类CPDoS攻击载荷影响;

2

 9个不同的服务器组合(例如Varnish-IIS,Nginx-Weblogic)容易受到HoT攻击;

3

8个HTTP软件实现没有完全遵循HTTP规范,有可能会被利用来进行HRS攻击。

总结

近年来,各类语义差异安全问题被发现。这些研究揭示了在具有多方中间盒子传输的复杂网络中,协议语义差异问题已经成为严重的安全威胁。但是,之前的研究大多是通过临时性的人工分析发现的,这对于从根本上提高像HTTP网络这样的复杂系统的安全性是完全不够的。


该研究开发了一套新颖的检测框架HDiff,它可以基于RFC规范中提取的规则信息快速发现各类HTTP协议多方实现中的语义差异问题。随着HDiff框架在发现HTTP协议中三类语义差异问题的有效性证明后,HDiff框架有很大的潜力应用于其他的网络协议,用以寻找其他协议的语义差异问题。此外,一旦开发了该检测框架,就可以重用大量测试用例来发现更多现实中的漏洞,尤其是可以通过定期运行该工具以防止软件更新引入的新漏洞。因此,虽然该工具需要仍需要一定的人工工作,但从长远运行的角度来看,该工具将获得非常好的投资回报。该研究成果有助于安全社区发现和消除现实中更多的语义差异漏洞。


参考文献

1. Kettle J. HTTP Desync Attacks: Request Smuggling Reborn[J/OL]. PortSwigger Research, 2019[2021-12-02].https://portswigger.net/research/http-desync-attacks-request-smuggling-reborn.

2. Nguyen H V, Iacono L L, Federrath H. Your cache has fallen: Cache-poisoned denial-of-service attack[C/OL]//CCS ’19: Proceedings of the 2019 ACM SIGSAC Conference on Computer and Communications Security. New York, NY, USA: Association for Computing Machinery, 2019: 1915–1936. https://doi.org/10.1145/3319535.3354215.

3. Chen J, Jiang J, Duan H, et al. Host of troubles: Multiple host ambiguities in http implementations[C/OL]//CCS ’16: Proceedings of the 2016 ACM SIGSAC Conference on Computer and Communications Security. New York, NY, USA: Association for Computing Machinery, 2016: 1516–1527. https://doi.org/10.1145/2976749.2978394.

4. Chu Chen and Cong Tian and Zhenhua Duan and Liang Zhao. Rfc-directed differential testing of certificate validation in SSL/TLS implementations[C/OL]//Chaudron M, Crnkovic I, Chechik M, et al. Proceedings of the 40th International Conference on Software Engineering, ICSE 2018, Gothenburg, Sweden, May 27 - June 03, 2018. ACM, 2018: 859-870. https://doi.org/10 .1145/3180155.3180226.

5. Petsios T, Tang A, Stolfo S J, et al. NEZHA: efficient domain-independent differential testing [C/OL]//2017 IEEE Symposium on Security and Privacy, SP 2017, San Jose, CA, USA, May 22-26, 2017. IEEE Computer Society, 2017: 615-632. https://doi.org/10.1109/SP.2017.27.

6. Chen Y, Su Z. Guided differential testing of certificate validation in ssl/tls implementations [C/OL]//ESEC/FSE 2015: Proceedings of the 2015 10th Joint Meeting on Foundations of Software Engineering. New York, NY, USA: Association for Computing Machinery, 2015: 793804. https://doi.org/10.1145/2786805.2786835.

征  稿

InForSec欢迎来自学术或工业界研究者的研究文章。文章将通过InForSec论坛网站、微信公众号等平台进行传播,并将汇集成册予以出版。


文章内容可以是对已经发表论文的解读,包括但不限于网络安全、系统安全、密码技术和当前应用系统中各种安全技术等领域。


请参考微信公众号以前发表的文章,文章篇幅不限,并请给出作者简历。


投稿邮箱:[email protected]


HDiff:一种基于协议标准的语义差异人机协同分析框架


原文始发于微信公众号(网安国际):HDiff:一种基于协议标准的语义差异人机协同分析框架

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年7月12日08:09:12
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   HDiff:一种基于协议标准的语义差异人机协同分析框架http://cn-sec.com/archives/1166894.html

发表评论

匿名网友 填写信息