CWE

常见的弱点枚举

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

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

cwe - 113:不当中和CRLF序列在HTTP头(HTTP请求/响应分裂)

弱点ID: 113
抽象:变体
结构:简单的
视图定制的信息:
+描述
产品接收数据从一个HTTP代理/组件(例如,web服务器,代理,浏览器,等等),但它并不中和或错误中和CR和低频字符之前的数据包含在即将离任的HTTP标头。
+扩展描述

HTTP代理或组件可能包括web服务器、负载平衡器、反向代理,网络缓存代理,应用防火墙,网络浏览器,等等。不管这个角色,他们预计将保持连贯,一致的所有组件的HTTP通信状态。然而,包括意想不到的数据在一个HTTP头允许攻击者指定HTTP消息的整体所呈现的HTTP代理客户端(如web浏览器)或后端HTTP代理(例如,web服务器),是否请求或响应消息的一部分。

当HTTP请求包含意外的CR和低频字,服务器可能响应的输出流被解释为“分裂”流到两个不同的HTTP消息而不是一个。CR回车,也由% 0 d或\ r,低频换行,也由% 0 a或\ n。

除了CR和低频字,其他有效/ RFC兼容的特殊字符和独特的字符编码可以利用,如HT(水平选项卡,也由% 09或\ t)和SP(空间,也给+签名或者% 20)。

这些类型的用户和意想不到的数据在HTTP消息头允许攻击者控制第二个“分裂”消息发起攻击,如服务器端请求伪造,跨站点脚本,缓存中毒攻击。

HTTP响应分裂时可能存在的弱点:

  1. 数据进入一个web应用程序通过一个不可信的来源,最常见的一个HTTP请求。
  2. HTTP响应头中包含的数据发送到一个web用户没有中和恶意字符可以被作为标题分隔字符。
+替代条款
HTTP请求分割
HTTP响应分裂
+的关系
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”研究概念”(cwe - 1000)
自然 类型 ID 的名字
ChildOf 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 436年 解释的冲突
ChildOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 93年 中和不当CRLF序列(CRLF注入)
CanPrecede 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 79年 中和不当输入在Web页面生成(“跨站点脚本编制”)
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关观点“七有害的王国”(cwe - 700)
自然 类型 ID 的名字
ChildOf 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 20. 不正确的输入验证
+模式的介绍
部分帮助不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
阶段 请注意
实现
+适用的平台
部分帮助该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。

语言

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

技术

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

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

技术的影响:修改应用程序数据;获得特权或假设的身份

CR和低频字符在一个HTTP头可能给攻击者控制剩余的头和身体的消息应用程序打算发送/接收,以及允许他们创建额外的消息完全控制。
+示范例子

示例1

下面的代码段读取一个weblog条目的作者的名字,作者,从一个HTTP请求,并设置它的饼干头一个HTTP响应。

(坏的代码)
例如语言:Java
字符串作者= request.getParameter (AUTHOR_PARAM);

曲奇饼干= new饼干(“作者”,作者);
cookie.setMaxAge (cookieExpiration);
response.addCookie(饼干);

假设一个字符串组成的标准字母数字字符,如“简·史密斯”,提交请求的HTTP响应中包括这个饼干可能采取以下形式:

(结果)
HTTP / 1.1 200 OK

set - cookie:作者=简·史密斯

然而,由于cookie的值是由多组用户输入,反应只会维持这种形式提交的值如果AUTHOR_PARAM不包含任何CR和低频字符。如果攻击者提交一个恶意的字符串,如

(攻击代码)
威利黑客\ r \ nHTTP / 1.1 200 OK \ r \ n

HTTP响应将分裂成两个反应下列形式:

(结果)
HTTP / 1.1 200 OK

set - cookie:作者=威利黑客
HTTP / 1.1 200 OK

第二个反应是完全由攻击者控制的,可以由任何标题和正文内容。构造任意HTTP响应的能力允许产生各种各样的攻击,包括:

  • cross-user乱涂
  • web和浏览器缓存中毒
  • 跨站点脚本编制
  • 网页劫持

示例2

攻击者可以使单个请求一个脆弱的服务器,将导致服务器创建两个反应,第二个可能被误解为响应不同的请求,可能是一个由另一个用户与服务器共享相同的TCP连接。

Cross-User乱涂可以实现通过说服用户提交恶意请求本身,或远程攻击者的情况下,用户共享一个共同的TCP连接到服务器,如一个共享的代理服务器。

  • 在最好的情况下,攻击者可以利用这种能力来说服用户应用程序已经被黑客入侵,导致用户对应用程序的安全失去信心。
  • 在最坏的情况下,攻击者可以提供特别制作的内容旨在模拟应用程序的行为但重定向的私人信息,如账号和密码,攻击者。

示例3

恶意构造响应可以放大的影响如果缓存,通过一个web缓存使用的多个用户,甚至单个用户的浏览器缓存。

缓存中毒:如果一个共享web缓存响应缓存,如常见的代理服务器,那么所有用户的缓存将继续接收恶意内容,直到清除缓存条目。同样,如果响应是单个用户的浏览器缓存,那么用户将继续收到恶意内容,直到缓存条目净化,尽管本地浏览器实例的用户将受到影响。

示例4

一旦攻击者控制应用程序发送的响应,他们有选择的各种恶意用户提供内容。

跨站点脚本:跨站点脚本是常见的攻击,恶意JavaScript或其他代码包含在响应是在用户的浏览器中执行。

各种基于XSS攻击几乎是无限的,但他们通常包括传输私有数据,如饼干或其他会话信息攻击者,将受害者web内容由攻击者控制,或进行其他恶意用户的机器上的操作的幌子下脆弱的网站。

最常见的和危险的攻击向量对脆弱的应用程序使用JavaScript的用户传输会话和身份验证信息回的攻击者可以完全控制受害者的考虑。

示例5

除了使用脆弱的应用程序向用户发送恶意内容,相同的弱点也可以利用重定向敏感内容由服务器生成的攻击者,而不是预期的用户。

页面劫持:通过提交一个请求,结果在两个反应,预期的响应从服务器和反应生成的攻击,攻击者可以造成一个中间节点,如一个共享的代理服务器,误导反应生成的服务器攻击者而不是用户。

因为请求由攻击者产生两种反应,第一个是解读为对攻击者的请求,而第二个悬而未决。当用户是一个合法的请求通过相同的TCP连接,攻击者的请求已经等待和解读为应对受害人的请求。攻击者发送一个请求到服务器,生成的代理服务器与服务器响应请求用于受害者,从而危及任何敏感信息的头部或身体反应用于受害者。

+观察到的例子
参考 描述
链:代理使用一个字符串搜索而不是解析传输编码标头(cwe - 697),允许请求分割(cwe - 113)和缓存中毒
Scala-based HTTP接口允许请求和响应痛不欲生通过头名称,标题值,状态的原因,和uri
基于javascript框架允许请求将通过一个HTTP请求的路径选择
应用程序接受CRLF对象ID,允许HTTP响应分裂。
购物车允许HTTP响应分解执行HTML注入通过CRLF url参数
公告板允许响应通过CRLF分裂参数。
通过在PHPSESSID CRLF响应分裂。
电子商务应用程序允许HTTP响应分裂使用CRLF对象id参数
+潜在的缓解措施

实施阶段:

策略:输入验证

构建HTTP头仔细,避免non-validated输入数据的使用。

实施阶段:

策略:输入验证

假设所有的输入是恶意的。使用一个“接受良好的“输入验证策略,即。,使用一个可接受的输入列表,严格遵守规范。如果输入不严格遵守规范,拒绝或转换成符合的东西。

当执行输入验证,考虑所有可能相关的属性,包括长度,类型的输入,可接受的值的全系列,缺失或额外的输入,语法,一致性相关领域,符合业务规则。作为业务规则逻辑的一个例子,在语法上“船”可能是有效的,因为它只包含字母数字字符,但它不是有效的如果输入预计仅包含颜色,如“红”或“蓝色”。

不完全依赖寻找恶意或畸形的输入。这很可能错过至少有一个不受欢迎的输入,特别是如果代码的环境变化。这可以让攻击者有足够的空间绕过验证。然而,denylists可以用于检测潜在攻击或确定哪些输入是畸形的,应该直接驳回。

实施阶段:

策略:输出编码

使用和指定输出编码可以由下游组件读取输出。常见的编码包括iso - 8859 - 1、utf - 7, utf - 8。如果不指定一个编码,下游组件可能会选择不同的编码,通过假设一个默认的编码或使用自动推断哪些编码,这可能是错误的。编码不一致时,下游组件可能治疗一些特殊字符或字节序列,即使他们没有特别在原始的编码。攻击者就能够利用这种差异,开展注入攻击;他们甚至可以绕过保护机制,假设原编码也被下游组件。

实施阶段:

策略:输入验证

输入应该解码和规范化应用程序当前的内部表示之前验证(cwe - 180)。确保应用程序不会解码输入两次相同(cwe - 174)。这些错误可以用来绕过allowlist验证方案通过引入危险的输入后检查。
+会员资格
部分帮助这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
自然 类型 ID 的名字
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 884年 CWE横截面
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 990年 SFP二级集群:污染输入命令
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1347年 OWASP十大2021类别A03:2021 -注射
+分类法映射
映射分类名称 节点ID 适合 映射节点名
千鸟 HTTP响应分裂
7有害的王国 HTTP响应分裂
WASC 25 HTTP响应分裂
软件故障模式 SFP24 污染输入命令
+引用
REF-43 OWASP。“OWASP前十名”。<http://www.owasp.org/index.php/Top_10_2007>。
迈克尔•霍华德(REF-44)大卫·勒布朗和Viega约翰。软件安全的“24宗罪”。“罪恶之2:服务器相关的漏洞(XSS, XSRF和响应分裂)。”Page 31. McGraw-Hill. 2010.
[ref - 1272]罗伯特钻。“HTTP请求分割”。2011-02-01。<http://projects.webappsec.org/w/page/13246929/HTTP%20Request%20Splitting>。
+内容的历史
+提交
提交日期 提交者 组织
2006-07-19 千鸟
+贡献
贡献的日期 贡献者 组织
2022-02-25 乔纳森Leitschuh 丹Kaminsky奖学金@人类安全
提出了一个新的条目HTTP请求分割,导致范围扩张cwe - 113
+修改
修改日期 修饰符 组织
2008-07-01 Eric Dalci Cigital
更新引用,Potential_Mitigations Time_of_Introduction
2008-09-08 CWE内容团队 主教法冠
更新的关系,Observed_Example, Other_Notes、引用Taxonomy_Mappings
2008-10-14 CWE内容团队 主教法冠
更新描述
2008-11-24 CWE内容团队 主教法冠
更新描述,Other_Notes
2009-03-10 CWE内容团队 主教法冠
更新Demonstrative_Examples
2009-05-27 CWE内容团队 主教法冠
更新后的名字
2009-07-27 CWE内容团队 主教法冠
更新Demonstrative_Examples Potential_Mitigations
2009-10-29 CWE内容团队 主教法冠
Common_Consequences更新,描述、Other_Notes Theoretical_Notes
2010-02-16 CWE内容团队 主教法冠
更新Taxonomy_Mappings
2010-06-21 CWE内容团队 主教法冠
更新描述、名称
2011-03-29 CWE内容团队 主教法冠
更新Potential_Mitigations
2011-06-01 CWE内容团队 主教法冠
更新Common_Consequences、描述
2012-05-11 CWE内容团队 主教法冠
更新Common_Consequences、引用关系
2012-10-30 CWE内容团队 主教法冠
更新Potential_Mitigations
2014-06-23 CWE内容团队 主教法冠
更新Demonstrative_Examples
2014-07-30 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2015-12-07 CWE内容团队 主教法冠
更新的关系
2017-05-03 CWE内容团队 主教法冠
更新Related_Attack_Patterns
2017-11-08 CWE内容团队 主教法冠
更新Applicable_Platforms Demonstrative_Examples
2019-06-20 CWE内容团队 主教法冠
更新的关系
2020-02-24 CWE内容团队 主教法冠
更新Applicable_Platforms Potential_Mitigations、关系类型
2020-06-25 CWE内容团队 主教法冠
更新Potential_Mitigations
2021-10-28 CWE内容团队 主教法冠
更新的关系
2022-06-28 CWE内容团队 主教法冠
扩展的抽象进入包括HTTP请求和响应分裂。
2022-06-28 CWE内容团队 主教法冠
更新Alternate_Terms、Common_Consequences Demonstrative_Examples、描述、名称、Observed_Examples, Potential_Mitigations,引用关系,Theoretical_Notes
2022-10-13 CWE内容团队 主教法冠
更新Demonstrative_Examples Related_Attack_Patterns
2023-01-31 CWE内容团队 主教法冠
更新描述
+以前的条目名称
改变日期 以前的条目名称
2008-04-11 HTTP响应分裂
2009-05-27 未能Sanitize CRLF序列在HTTP头(又名“HTTP响应分裂”)
2010-06-21 未能Sanitize CRLF序列在HTTP头(HTTP响应分裂)
2022-06-28 不当中和CRLF序列在HTTP头(HTTP响应分裂)
更多的信息是可用的,请选择一个不同的过滤器。
页面最后更新:2023年1月31日