CWE

常见的弱点枚举

一个由社区开发的软件&硬件缺陷类型的列表

2021 CWE最重要的硬件的弱点
CWE最危险的弱点
>CWE列表> CWE -个人字典定义(4.10)
ID

cwe - 444:不一致的解释HTTP请求(HTTP请求/响应走私的)

弱点ID: 444
抽象:基地
结构:简单的
视图定制的信息:
+描述
产品作为媒介的HTTP代理(如代理或防火墙)等两个实体之间的数据流的客户机和服务器,但它不解释畸形的HTTP请求和响应的方式符合这些实体将如何处理消息的最终目的地。
+扩展描述

HTTP请求或响应(“信息”)可以畸形或意想不到的方式使web服务器或客户端以不同的方式解释消息比中介HTTP代理如负载平衡器、反向代理,网络缓存代理,应用防火墙,等。例如,敌人可以添加重复的或不同的客户机或服务器头字段,可能解释的一组消息,而中介可能解释相同的字节序列一组不同的消息。例如,差异可以出现在如何处理重复标题像两个传输编码(TE)或两个内容长度(CL),或恶意HTTP消息会有不同的头TE和CL。

消息的解析和解释不一致可以让对手“走私”消息的客户机/服务器没有中介意识到它。

这个弱点的结果通常是过时的或不相容的HTTP协议版本的使用HTTP代理。

+替代条款
HTTP请求走私
HTTP响应走私
HTTP走私
+的关系
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”研究概念”(cwe - 1000)
自然 类型 ID 的名字
ChildOf 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 436年 解释的冲突
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关观点“软件开发”(cwe - 699)
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 438年 行为问题
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+简化映射的相关视图”缺点漏洞发布”(cwe - 1003)
自然 类型 ID 的名字
ChildOf 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 436年 解释的冲突
+模式的介绍
部分帮助不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
阶段 请注意
架构和设计
实现
+适用的平台
部分帮助该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。

语言

类:不是特定于语言的患病率(待定)

技术

类:基于Web的患病率(待定)

+常见的后果
部分帮助这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
范围 影响 可能性
完整性
不可抵赖性
访问控制

技术的影响:意想不到的状态;隐藏活动;旁路保护机制

攻击者可以利用许多缺点包括创建HTTP消息1)消息能欺骗web服务器将URL与另一个URL的网页和缓存网页的内容(web缓存中毒攻击),2)消息可以结构化绕过防火墙保护机制和未经授权地访问一个web应用程序,和3)消息可以调用一个脚本或页面,返回客户端凭据(类似于一个跨站脚本攻击)。
+示范例子

示例1

在接下来的例子中,一个畸形的HTTP请求发送到一个网站,包括代理服务器和web服务器缓存中毒意图的关联与另一个恶意网页一个网页。

(攻击代码)
文章http://www.website.com/foobar.html HTTP / 1.1
主持人:www.website.com
连接:维生
内容类型:应用程序/ x-www-form-urlencoded
内容长度:0
内容长度:54

GET /毒药。html HTTP / 1.1
主持人:www.website.com
Bla: http://www.website.com/page_to_poison.html HTTP / 1.1
主持人:www.website.com
连接:维生

当请求被发送到代理服务器,代理服务器解析的前四行POST请求,遇到两头“内容长度”。代理服务器忽略了第一头,所以假设请求的54个字节长度。因此,它将在未来三行数据完全包含54个字节作为第一个请求的身体:

(结果)
GET /毒药。html HTTP / 1.1
主持人:www.website.com
Bla:

代理然后解析剩余的字节,它对待客户的第二个请求:

(攻击代码)
得到http://www.website.com/page_to_poison.html HTTP / 1.1
主持人:www.website.com
连接:维生

原始请求转发代理服务器到web服务器。与代理不同的是,web服务器使用的第一个内容长度”“头和认为第一个POST请求没有身体。

(攻击代码)
文章http://www.website.com/foobar.html HTTP / 1.1
主持人:www.website.com
连接:维生
内容类型:应用程序/ x-www-form-urlencoded
内容长度:0
内容长度:54(忽略服务器)

因为web服务器认为最初的POST请求长度0,它解析第二个请求,例如得到/ poison.html:

(攻击代码)
GET /毒药。html HTTP / 1.1
主持人:www.website.com
Bla: http://www.website.com/page_to_poison.html HTTP / 1.1
主持人:www.website.com
连接:维生

注意,”Bla:“头都被视为一个常规的头,所以它不是作为一个单独的GET请求进行解析。

web服务器的请求将是“后/ foobar。html”和“GET /毒药。html”,所以它发送回两个反应的内容“foobar。html页面”和“毒药。分别html”页面。代理匹配这些反应的两个请求它认为是客户端发送的“后/ foobar。html”和“GET / page_to_poison.html”。如果响应缓存,代理缓存的内容“毒药。html page_to_poison根据URL。html”和缓存中毒!任何客户端请求”page_to_poison。html”从代理将获得“毒药。html”页面。

当一个网站包括代理服务器和web服务器,一些防止这种类型的攻击可以通过安装一个web应用程序防火墙,或者使用一个web服务器,其中包括更严格的HTTP解析过程或让所有网页停机。

此外,如果一个web应用程序包含一个Java servlet来处理请求,servlet可以检查多个内容长度”“头和如果他们发现servlet可以返回一个错误响应从而防止毒页面缓存,如下所示。

(好的代码)
例如语言:Java
保护无效processRequest (HttpServletRequest请求,HttpServletResponse响应)抛出ServletException IOException {

/ /设置响应作家对象

尝试{
/ /检查多个内容标题长度
内容长度枚举contentLengthHeaders = request.getHeaders (“”);
int数= 0;
而(contentLengthHeaders.hasMoreElements ()) {
数+ +;
}
如果(数> 1){
/ /输出错误响应
}
其他{
/ /处理请求
}
}捕捉(例外的前女友){…}
}

示例2

在接下来的例子中,一个畸形的HTTP请求发送到一个网站,包括一个web服务器和防火墙的目的绕过web服务器防火墙将恶意代码到系统中。

(攻击代码)
文章/页。asp HTTP / 1.1
主持人:www.website.com
连接:维生
内容长度:49223

打鼾声……打鼾声(“z”x 49152)
文章/页。asp HTTP / 1.0
连接:维生
内容长度:30

文章/页。asp HTTP / 1.0
Bla: POST / page.asp ? cmd。exe HTTP / 1.0
连接:维生

当请求被发送到web服务器,第一POST请求内容长度为49223字节,和防火墙将与49152份“z”和线与一个额外的线以71字节为(49152 + 71 = 49223)。防火墙然后继续解析什么是它认为第二个请求从第三POST请求。

注意,没有CRLF后“Bla:“头在直线解析后的价值“Bla:“头。虽然行包含模式识别与蠕虫(用于cmd . exe),它不是阻止,因为它被认为是一个头的一部分价值。因此,“cmd。exe”是通过防火墙走私。

当请求通过防火墙web服务器第一个请求被忽略,因为web服务器不找到一个预期的“内容类型:应用程序/ x-www-form-urlencoded”头,并开始解析第二个请求。

第二个请求内容长度30字节,这正是的长度下两行后的空间“Bla:“头。与防火墙不同,web服务器进程的最后一个帖子作为一个独立的第三方的请求和“cmd。exe”蠕虫通过防火墙走私到web服务器。

为了避免这种攻击Web服务器必须使用防火墙产品,旨在防止这种类型的攻击。

示例3

HTTP响应的解释可以操纵响应头包括一个标题名称和结肠之间的空间,或者通过代理配置为发送HTTP 1.1头是HTTP 1.0,允许HTTP响应走私。这可以利用web浏览器和其他应用程序结合使用时不同的代理服务器。例如,HTTP响应解释由前端/端HTTP代理/实体——在这种情况下,web浏览器可以解释的单个响应adversary-compromised web服务器作为两个反应从两个不同的网站。在下面的例子中,注意内容长度和set - cookie头后的额外空间。

(攻击代码)
HTTP / 1.1 200 OK
时间:星期五,2016年8月08年08:12:31格林尼治时间
服务器:Apache (Unix)
连接:维生
内容编码:gzip
内容类型:text / html
内容长度:2345年
传输编码:分块
set - cookie:令牌=“恶意代码”

< HTML >…“恶意代码”
+观察到的例子
参考 描述
SSL / TLS-capable代理允许HTTP走私与HTTP / 1.0服务串联使用时,由于不一致的解释和输入检查体内的HTTP消息的另一个消息
链:缓存代理服务器有不当输入验证(CWE-20)的头,允许HTTP响应走私(cwe - 444)使用一个“低频行结束”
节点。js平台允许请求走私通过两个传输编码标头
Web服务器允许请求走私通过HTTP头信息不一致。
HTTP服务器允许请求走私“传输编码:分块”标题和内容长度头
HTTP服务器允许请求走私“传输编码:分块”标题和内容长度头
+潜在的缓解措施

实施阶段:

使用HTTP web服务器,它采用一个严格解析程序,例如Apache (ref - 433]。

实施阶段:

只使用SSL通信。

实施阶段:

每个请求后终止客户端会话。

阶段:系统配置

将所有页面停机。
+会员资格
部分帮助这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
自然 类型 ID 的名字
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 884年 CWE横截面
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 990年 SFP二级集群:污染输入命令
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1348年 OWASP 2021年十大类别A04:2021——不安全设计
+笔记

理论

请求走私可以由于执行多个解释错误,目标是一个中介或监视器,通过一致性操作(传输编码和内容长度头)。
+分类法映射
映射分类名称 节点ID 适合 映射节点名
千鸟 HTTP请求走私
WASC 26 HTTP请求走私
WASC 27 HTTP响应走私
+引用
[ref - 433] Chaim Linhart Amit Klein Ronen冥界和史蒂夫•奥林。“HTTP请求走私”。<http://www.cgisecurity.com/lib/HTTP-Request-Smuggling.pdf>。
[ref - 1273]罗伯特钻。“HTTP响应走私”。2011-02-01。<http://projects.webappsec.org/w/page/13246930/HTTP%20Response%20Smuggling>。
[ref - 1274] Dzevad Alibegovic。“HTTP请求走私:完整的攻击类型和预防指南”。2021-08-23。<https://brightsec.com/blog/http-request-smuggling-hrs/>。
[ref - 1275]布斯拉Demir。“一个HTTP请求走私pentest指南”。2020-10-15。<https://www.cobalt.io/blog/a-pentesters-guide-to-http-request-smuggling>。
[ref - 1276] Edi Kogan和丹尼尔·科曼地毯。在野外“HTTP Desync攻击以及如何抵御它们”。2019-10-29。<https://www.imperva.com/blog/http-desync-attacks-and-defence-methods/>。
[ref - 1277]詹姆斯水壶。“HTTP Desync攻击:请求走私重生”。2019-08-07。<https://portswigger.net/research/http-desync-attacks-request-smuggling-reborn>。
(ref - 1278) PortSwigger。“HTTP请求走私”。<https://portswigger.net/web-security/request-smuggling>。
+内容的历史
+提交
提交日期 提交者 组织
2006-07-19 千鸟
+修改
修改日期 修饰符 组织
2008-07-01 Eric Dalci Cigital
更新Potential_Mitigations Time_of_Introduction
2008-09-08 CWE内容团队 主教法冠
更新姓名、关系、Other_Notes Taxonomy_Mappings
2009-05-27 CWE内容团队 主教法冠
更新的名字,Related_Attack_Patterns
2010-02-16 CWE内容团队 主教法冠
更新Taxonomy_Mappings
2011-06-01 CWE内容团队 主教法冠
更新Common_Consequences
2012-05-11 CWE内容团队 主教法冠
更新Common_Consequences、人际关系
2012-10-30 CWE内容团队 主教法冠
更新Demonstrative_Examples Potential_Mitigations
2014-06-23 CWE内容团队 主教法冠
更新Other_Notes、Potential_Mitigations Theoretical_Notes
2014-07-30 CWE内容团队 主教法冠
更新的关系
2015-12-07 CWE内容团队 主教法冠
更新的关系
2017-11-08 CWE内容团队 主教法冠
更新Applicable_Platforms
2020-02-24 CWE内容团队 主教法冠
更新Applicable_Platforms、人际关系
2021-10-28 CWE内容团队 主教法冠
更新的关系
2022-04-28 CWE内容团队 主教法冠
更新Related_Attack_Patterns
2022-06-28 CWE内容团队 主教法冠
扩展的抽象这个条目包括HTTP请求和响应走私。
2022-06-28 CWE内容团队 主教法冠
更新Alternate_Terms、Common_Consequences Demonstrative_Examples、描述、名称、引用,Taxonomy_Mappings Observed_Examples
2022-10-13 CWE内容团队 主教法冠
更新Related_Attack_Patterns
+以前的条目名称
改变日期 以前的条目名称
2008-04-11 HTTP请求走私
2008-09-09 解释网络流量冲突(又名“HTTP请求走私”)
2009-05-27 不一致的解释HTTP请求(又名“HTTP请求走私”)
2022-06-28 不一致的解释HTTP请求(HTTP请求走私的)
更多的信息是可用的,请选择一个不同的过滤器。
页面最后更新:2023年1月31日