CWE

常见的弱点枚举

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

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

cwe - 434:无限制上传文件与危险的类型

弱点ID: 434
抽象:基地
结构:简单的
视图定制的信息:
+描述
产品允许攻击者上传或危险的传输文件类型,可以自动处理产品的内环境。
+替代条款
不受限制的文件上传:
用于漏洞数据库和其他地方,但不够精确。这个词可以解释为缺乏对上传文件的大小或数量的限制,这是一个资源消耗问题。
+的关系
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”研究概念”(cwe - 1000)
自然 类型 ID 的名字
ChildOf 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 669年 不正确的资源领域之间的转移
PeerOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 351年 不足的类型的区别
PeerOf 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 436年 解释的冲突
PeerOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 430年 部署错误处理程序
光束 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 73年 外部控制文件名或路径
光束 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 183年 宽容的允许输入列表
光束 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 184年 不允许输入的完整列表
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关观点“软件开发”(cwe - 699)
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 429年 处理程序错误
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+简化映射的相关视图”缺点漏洞发布”(cwe - 1003)
自然 类型 ID 的名字
ChildOf 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 669年 不正确的资源领域之间的转移
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关视图”架构概念”(cwe - 1008)
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1011年 授权的演员
+模式的介绍
部分帮助不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
阶段 请注意
实现
架构和设计 遗漏:这个弱点是由于缺少一个安全策略在体系结构和设计阶段。
+适用的平台
部分帮助该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。

语言

ASP.NET(有时流行)

PHP(通常是普遍的)

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

技术

Web服务器(有时流行)

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

技术的影响:执行未经授权的代码或命令

任意代码执行是可能的如果一个上传文件的代码的解释和执行。特别是asp和php扩展上传到web服务器,因为这些文件类型通常视为自动执行,即使没有指定文件系统权限执行。例如,在Unix环境中,程序通常不能运行,除非执行位被设置,但PHP程序可能执行的web服务器,而不是直接调用操作系统。
+利用的可能性
媒介
+示范例子

示例1

下面的代码将允许用户上传图片到web服务器。驱动形式的HTML代码在用户结束有一个输入字段类型的“文件”。

(好的代码)
例如语言:HTML
< action = " upload_picture形式。php”方法= " post " enctype = " multipart /格式”>

选择一个文件上传:
< input type = " file " name = "文件名" / >
< br / >
< input type = " submit " name =“提交”value = " submit " / >

> < /形式

一旦提交,上面的形式向upload_picture发送文件。php web服务器上。PHP将文件存储在一个临时位置,直到检索服务器端代码(或丢弃)。在本例中,文件是搬到一个更永久的照片/目录。

(坏的代码)
例如语言:PHP

/ /定义目标位置的图片

/ /上传会得救。
$ target = " / "照片。:$带有_file [' uploadedfile ']['名字']);

/ /将上传的文件移动到新的位置。
如果函数(带有_file美元[' uploadedfile '] [' tmp_name '],美元目标))
{
回声”已成功上传照片。”;
}
其他的
{
回声”上传照片时发生了一个错误,请再试一次。”;
}

上面的代码的问题是没有检查关于正在上传的文件类型。假设照片/可在web文档根,攻击者可以上传文件的名称:

(攻击代码)
malicious.php

因为这个文件名以”。php“它可以由web服务器执行。在这上传文件的内容,攻击者可以使用:

(攻击代码)
例如语言:PHP
< ? php
系统($ _GET [' cmd ']);

? >

这个文件已经安装之后,攻击者可以输入任意命令执行使用一个URL,如:

(攻击代码)
http://server.example.com/upload_dir/malicious.php?cmd=ls%20-l

运行“ls - l命令——或任何其他类型的命令,攻击者想要指定。

示例2

下面的代码演示了无限制上传文件的Java servlet和路径遍历的脆弱性。HTML表单的动作属性是上传文件将请求发送给Java servlet。

(好的代码)
例如语言:HTML
<形式action = " FileUploadServlet " method = " post " enctype = "多部分/格式" >

选择一个文件上传:
< input type = " file " name = "文件名" / >
< br / >
< input type = " submit " name =“提交”value = " submit " / >

> < /形式

当提交的Java servlet的doPost方法将接收请求,从Http请求中提取文件的名称标题,读取文件内容从请求和输出文件到本地上传目录。

(坏的代码)
例如语言:Java
公开课FileUploadServlet扩展HttpServlet {


保护无效doPost (HttpServletRequest请求,HttpServletResponse响应)抛出ServletException IOException {
response.setContentType (" text / html ");
PrintWriter = response.getWriter ();
字符串contentType = request.getContentType ();

/ /边界头的起始位置
int印第安纳= contentType.indexOf(“边界= ");
字符串边界= contentType.substring(印第安纳州+ 9);

字符串多义线=新的字符串();
字符串uploadLocation =新的字符串(UPLOAD_DIRECTORY_STRING);/ /恒定值

/ /验证内容类型是多部分表单数据
如果(contentType ! = null & & contentType.indexOf(“多部分/格式”)! = 1){
/ /从Http报头中提取文件名
BufferedReader br = new BufferedReader(新InputStreamReader (request.getInputStream ()));

多段线= br.readLine ();
字符串文件名= pLine.substring (pLine.lastIndexOf (“\ \”), pLine.lastIndexOf (" \ "));


/ /输出文件到本地上传目录
尝试{
BufferedWriter bw = new BufferedWriter(新FileWriter (uploadLocation +文件名,真的));
(字符串行;(= br.readLine行())!)=零;{
如果(line.indexOf(边界)= = 1){
bw.write(线);
bw.newLine ();
bw.flush ();
}
}/ / for循环的结束
bw.close ();


}捕捉(IOException特异){…}
/ /输出成功上传响应的HTML页面
}
/ /输出成功上传响应的HTML页面
其他的
{…}
}
}

这段代码不执行检查上传文件的类型(cwe - 434)。这可能允许攻击者上传任何可执行文件或其他文件与恶意代码。

此外,BufferedWriter对象的创建主题相对路径遍历(CWE-23)。由于代码不提供检查文件名的头,攻击者可以使用“. ./“序列写文件之外的目的目录。根据执行环境中,攻击者可以指定任意文件编写,导致各种各样的后果,从代码执行,XSS (cwe - 79),或者系统崩溃。

+观察到的例子
参考 描述
基于网络的邮件产品商店”。shtml”附件,可能包含SSI
PHP不限制上传文件类型
. php文件的上传和执行
上传文件与危险的扩展
程序不限制文件类型
上传文件的类型检查不当
双“php扩展留下了一个积极的php扩展生成的文件名。
ASP程序允许上传的ASP文件绕过客户端检查
ASP文件上传
ASP文件上传
+潜在的缓解措施

阶段:体系结构和设计

生成一个新的,独特的文件名上传文件而不是使用用户提供的文件名,这样根本没有使用外部输入。ref - 422][ref - 423]

阶段:体系结构和设计

战略:执行的转换

组接受对象时,如文件名或url,是有限的或已知,从一组固定的输入值创建一个映射(比如数字id)实际的文件名或url,并拒绝所有其他输入。

阶段:体系结构和设计

考虑存储上传文件之外的web文档根完全。然后,使用其他机制来动态交付文件。(ref - 423]

实施阶段:

策略:输入验证

假设所有的输入是恶意的。使用一个“接受良好的“输入验证策略,即。,use a list of acceptable inputs that strictly conform to specifications. Reject any input that does not strictly conform to specifications, or transform it into something that does.

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

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

例如,限制文件名字母数字字符限制的引入可以帮助意想不到的文件扩展名。

阶段:体系结构和设计

只允许定义一组非常有限的扩展和生成文件名,以这些扩展。考虑XSS的可能性(cwe - 79)允许. html或. htm文件类型。

实施阶段:

策略:输入验证

确保只使用一个扩展的文件名。一些web服务器,包括一些版本的Apache,可能过程文件基于这样“filename.php内部扩展。gif”是美联储PHP解释器。ref - 422][ref - 423]

实施阶段:

当运行在web服务器上支持区分大小写的文件名,扩展所提供的执行不区分大小写的评估。

阶段:体系结构和设计

对于任何一个在客户端执行安全检查,确保这些检查复制在服务器端,为了避免cwe - 602。攻击者可以绕过客户端检查通过修改值后,检查执行,或通过改变客户端完全删除客户端检查。然后,这些修改的值将被提交到服务器。

实施阶段:

不完全依赖健康检查文件内容,确保预期的文件类型和大小。攻击者可能隐藏代码在某些文件片段,仍将由服务器执行。例如,GIF图像可能包含一个自由格式的注释字段。

实施阶段:

不要完全依赖MIME内容类型或文件名属性在确定如何呈现一个文件。验证MIME内容类型,并确保它匹配扩展只能解决部分问题。

阶段:体系结构和设计;操作

策略:环境硬化

使用所需的最低特权运行您的代码来完成必要的任务(ref - 76]。如果可能的话,创建独立帐户权限有限,只用于一个任务。这样,一个成功的攻击不会立即给攻击者访问其他软件或其环境。例如,数据库应用程序很少需要作为数据库管理员运行,特别是在日常操作。

阶段:体系结构和设计;操作

策略:沙盒或监狱

运行代码的“监狱”或类似沙箱环境执行严格的流程和操作系统之间的边界。这可能有效地限制哪些文件可以在一个特定的目录或访问哪些命令可以执行的软件。

操作系统的例子包括Unix chroot监狱,AppArmor对,SELinux。在一般情况下,托管代码可能会提供一些保护。例如,java。在Java SecurityManager FilePermission允许软件指定文件操作的限制。

这可能不是一个可行的解决方案,它只限制对操作系统的影响;应用程序的其余部分可能仍然接受妥协。

应该注意避免cwe - 243和其他相关弱点监狱。

有效性:有限

注意:这种缓解的有效性取决于特定的沙盒或监狱的预防功能使用,只可能有助于减少攻击的范围,比如限制攻击者对特定文件系统的系统调用或限制部分,可以访问。
+弱点Ordinalities
Ordinality 描述
(缺点是一个质量问题,可能会间接更容易引入的安全相关的弱点或使他们更难检测)
这可以主要在没有检查。
合成
(缺点是一个质量问题,可能会间接更容易引入的安全相关的弱点或使他们更难检测)
这是当使用双扩展(如经常合成。“.php.gif”)绕过一个检查。
合成
(缺点是一个质量问题,可能会间接更容易引入的安全相关的弱点或使他们更难检测)
这可以从客户端执行结果(cwe - 602);一些产品将包括在web客户机web脚本检查文件名,没有在服务器端验证。
+检测方法

动态分析与自动化的结果解释

根据飙升,以下检测技术可能是有用的:

成本有效的部分报道:
  • Web应用程序扫描
  • Web服务的扫描仪
  • 数据库扫描仪

有效性:飙升部分

动态分析与人工解释结果

根据飙升,以下检测技术可能是有用的:

成本有效的部分报道:
  • 模糊测试
  • 基于框架Fuzzer

有效性:飙升部分

人工静态分析源代码

根据飙升,以下检测技术可能是有用的:

高成本效益:
  • 关注人工抽查,手动分析来源
  • 手工源代码审查(不检查)

有效性:高

自动静态分析源代码

根据飙升,以下检测技术可能是有用的:

高成本效益:
  • 源代码缺陷分析仪
  • Context-configured源代码分析器

有效性:高

体系结构或设计审查

根据飙升,以下检测技术可能是有用的:

高成本效益:
  • 正式的方法/ Correct-By-Construction
成本有效的部分报道:
  • 检验(IEEE 1028标准)(适用于需求、设计、源代码,等等)。

有效性:高

+功能区域
  • 文件处理
+影响资源
  • 文件或目录
+会员资格
部分帮助这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 714年 OWASP 2007年十大类别A3 -恶意文件执行
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 801年 2010年前25 -安全组件之间的交互
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 813年 OWASP十大2010类别A4 -不安全的直接对象引用
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 864年 2011年前25 -安全组件之间的交互
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 884年 CWE横截面
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1131年 方案》(2016)——安全质量措施
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 1200年 弱点在2019 CWE最危险的软件错误
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1308年 方案及质量措施,安全
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 1337年 2021 CWE最危险软件的弱点的弱点
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 1340年 方案及数据保护措施
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1348年 OWASP 2021年十大类别A04:2021——不安全设计
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 1350年 2020 CWE最危险软件的弱点的弱点
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 1387年 2022 CWE最危险软件的弱点的弱点
+笔记

的关系

这可以有链接关系不完全denylist /宽容allowlist错误当产品尝试,但是失败了,适当限制允许哪些类型的文件(cwe - 183,cwe - 184)。

这对中介机构也可以重叠多个解释错误,如防病毒产品与特定的文件扩展名不删除或检疫附件,可以由客户端处理系统。

+分类法映射
映射分类名称 节点ID 适合 映射节点名
千鸟 不受限制的文件上传
OWASP十大2007 A3 CWE更具体 恶意文件执行
OMG ASCSM ASCSM -cwe - 434
+引用
(ref - 422)理查德Stanway (r1CH)。“动态文件上传、安全和你”。<http://shsc.info/FileUploadSecurity>。
[ref - 423]约翰内斯·乌尔里希。“8基本规则来实现安全的文件上传”。2009-12-28。<http://blogs.sans.org/appsecstreetfighter/2009/12/28/8-basic-rules-to-implement-secure-file-uploads/>。
[ref - 424]约翰内斯·乌尔里希。“前25系列-危险等级的8 -无限制上传文件类型”。无软件安全研究所。2010-02-25。<http://blogs.sans.org/appsecstreetfighter/2010/02/25/top-25-series-rank-8-unrestricted-upload-of-dangerous-file-type/>。
(ref - 76)肖恩·巴纳姆和迈克尔Gegick。“最小特权”。2005-09-14。<https://www.cisa.gov/uscert/bsi/articles/knowledge/principles/least-privilege>。
(ref - 62)马克·多德约翰麦克唐纳和贾斯汀Schuh。“软件安全评估的艺术”。17章,“文件上传”,1068页。1版。艾迪生卫斯理》2006。
(ref - 962)对象管理组织(OMG)。“自动源代码安全措施(ASCSM)”。ascsm - cwe - 434。2016 - 01。<http://www.omg.org/spec/ASCSM/1.0/>。
+内容的历史
+提交
提交日期 提交者 组织
2006-07-19 千鸟
+修改
修改日期 修饰符 组织
2008-07-01 Eric Dalci Cigital
更新Time_of_Introduction
2008-09-08 CWE内容团队 主教法冠
更新Alternate_Terms、关系、Other_Notes Taxonomy_Mappings
2009-01-12 CWE内容团队 主教法冠
更新的关系
2009-12-28 CWE内容团队 主教法冠
更新Applicable_Platforms、Functional_Areas Likelihood_of_Exploit、Potential_Mitigations Time_of_Introduction
2010-02-16 CWE内容团队 主教法冠
转换从Compound_Element弱点
2010-02-16 CWE内容团队 主教法冠
更新Alternate_Terms、Applicable_Platforms Common_Consequences Demonstrative_Examples,名字,Other_Notes, Potential_Mitigations,引用,Related_Attack_Patterns, Relationship_Notes,关系类型,Weakness_Ordinalities
2010-04-05 CWE内容团队 主教法冠
更新Related_Attack_Patterns
2010-06-21 CWE内容团队 主教法冠
更新引用,Relationship_Notes
2010-09-27 CWE内容团队 主教法冠
更新Potential_Mitigations
2010-12-13 CWE内容团队 主教法冠
更新Potential_Mitigations
2011-06-27 CWE内容团队 主教法冠
更新的关系
2011-09-13 CWE内容团队 主教法冠
更新Potential_Mitigations、引用关系
2012-05-11 CWE内容团队 主教法冠
更新引用关系
2012-10-30 CWE内容团队 主教法冠
更新Potential_Mitigations
2014-07-30 CWE内容团队 主教法冠
更新Detection_Factors
2015-12-07 CWE内容团队 主教法冠
更新的关系
2017-11-08 CWE内容团队 主教法冠
更新Affected_Resources、Applicable_Platforms Likelihood_of_Exploit Modes_of_Introduction,引用关系,Weakness_Ordinalities
2019-01-03 CWE内容团队 主教法冠
更新引用关系,Taxonomy_Mappings
2019-06-20 CWE内容团队 主教法冠
更新Related_Attack_Patterns
2019-09-19 CWE内容团队 主教法冠
更新的关系
2020-02-24 CWE内容团队 主教法冠
更新Applicable_Platforms Potential_Mitigations
2020-06-25 CWE内容团队 主教法冠
更新Potential_Mitigations Relationship_Notes
2020-08-20 CWE内容团队 主教法冠
更新的关系
2020-12-10 CWE内容团队 主教法冠
更新的关系
2021-03-15 CWE内容团队 主教法冠
更新Demonstrative_Examples
2021-07-20 CWE内容团队 主教法冠
更新的关系
2021-10-28 CWE内容团队 主教法冠
更新的关系
2022-04-28 CWE内容团队 主教法冠
更新Research_Gaps
2022-06-28 CWE内容团队 主教法冠
更新的关系
2022-10-13 CWE内容团队 主教法冠
更新的引用
2023-01-31 CWE内容团队 主教法冠
更新Alternate_Terms、描述
+以前的条目名称
改变日期 以前的条目名称
2010-02-16 不受限制的文件上传
更多的信息是可用的,请选择一个不同的过滤器。
页面最后更新:2023年1月31日