CWE

常见的弱点枚举

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

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

cwe - 73:外部控制文件名或路径

弱点ID: 73
抽象:基地
结构:简单的
视图定制的信息:
+描述
产品允许用户输入控制或影响路径或文件名中使用文件系统操作。
+扩展描述

这可能允许攻击者访问或修改系统文件或其他文件的关键应用程序。

路径操作发生错误时满足以下两个条件:

1。攻击者可以指定一个路径中使用文件系统的操作。
2。通过指定的资源,攻击者获得能力,否则将不会被允许。

例如,程序可以使攻击者能够覆盖指定的文件或运行配置由攻击者控制的。

+的关系
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”研究概念”(cwe - 1000)
自然 类型 ID 的名字
ChildOf 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 610年 在另一个球体外部控制的参考资源
ChildOf 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 642年 外部控制临界状态的数据
ParentOf 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 114年 过程控制
CanPrecede 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 22 不当限制限制目录的路径名(“路径遍历”)
CanPrecede 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 41 不当的解决路径等效
CanPrecede 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 59 不当链接之前决议文件访问(“链接后”)
CanPrecede 变体变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 98年 不当控制包括/需要声明在PHP程序的文件名(PHP远程文件包含)
CanPrecede 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 434年 无限制上传文件与危险的类型
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关观点“软件开发”(cwe - 699)
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 399年 资源管理错误
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关视图”架构概念”(cwe - 1008)
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1015年 限制访问
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关观点“七有害的王国”(cwe - 700)
自然 类型 ID 的名字
ChildOf 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 20. 不正确的输入验证
+模式的介绍
部分帮助不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
阶段 请注意
架构和设计
实现 实现:造成这一弱点在建筑安全策略的实施。
+适用的平台
部分帮助该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。

语言

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

操作系统

Unix类:(通常是普遍的)

类:窗户(通常是普遍的)

类:macOS(通常是普遍的)

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

技术的影响:阅读文件或目录;修改文件或目录

应用程序可以使用意想不到的文件。时违反了保密目标文件名不是直接攻击者可读的。
完整性
保密
可用性

技术的影响:修改文件或目录;执行未经授权的代码或命令

应用程序可以使用意想不到的文件。这可能违反完整性如果文件名写入,或者文件名是一个程序或其他形式的可执行代码。
可用性

技术的影响:DoS:崩溃,退出或重新启动;DoS:资源消耗(其他)

应用程序可以使用意想不到的文件。可用性可以违反如果攻击者指定一个意想不到的文件,应用程序修改。可用性也受到影响,如果攻击者为一个大文件指定一个文件名,或指向一个特殊设备或文件没有格式,应用程序的预期。
+利用的可能性
+示范例子

示例1

下面的代码使用来自HTTP请求来创建一个输入文件的名字。程序员没有考虑的可能性,攻击者可以提供一个文件名称如“. . / . . / / conf / tomcat服务器。xml”,导致应用程序删除自己的配置文件(CWE-22)。

(坏的代码)
例如语言:Java
字符串rName = request.getParameter (“reportName”);
文件rFile =新文件(“/ usr /地方/ apfr /报告/”+ rName);

rFile.delete ();

示例2

下面的代码使用来自一个配置文件,以确定哪些输入文件打开和回声返回给用户。如果程序运行与特权和恶意用户可以更改配置文件,他们可以使用程序读取系统上的任何文件,以扩展. txt。

(坏的代码)
例如语言:Java
fis = new FileInputStream (cfg.getProperty(“子”)+ " . txt ");
amt = fis.read (arr);
out.println (arr);
+观察到的例子
参考 描述
链:外部控制的值为用户所需的语言和主题使路径遍历。
链:外部控制用户的目标语言支持远程文件包含。
+潜在的缓解措施

阶段:体系结构和设计

文件名的集合是有限的或已知时,创建一个映射从一组固定的输入值(比如数字id)实际的文件名,并拒绝所有其他输入。例如,ID 1可以映射到“收件箱。txt”和ID 2可以映射到“profile.txt”。特性如ESAPI AccessReferenceMap提供此功能。

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

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

例子包括Unix chroot监狱和AppArmor对。在一般情况下,托管代码可能会提供一些保护。

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

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

阶段:体系结构和设计

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

实施阶段:

策略:输入验证

假设所有的输入是恶意的。使用一个“接受良好的“输入验证策略,即。,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可以用于检测潜在攻击或确定哪些输入是畸形的,应该直接驳回。

验证文件名时,用严格的allowlists限制使用的字符集。如果可行,只允许一个“。”字符的文件名,以避免弱点等CWE-23,排除目录分隔符“/”等,以避免CWE-36。使用许可文件扩展名的列表,这将有助于避免cwe - 434

不完全依赖一个过滤机制,消除潜在的危险人物。这相当于一个denylist,这可能是不完整的(cwe - 184)。例如,过滤保护“/”是不够的,如果文件系统还支持使用作为目录分隔符“\”。另一个可能的错误可能发生过滤时,仍然会产生危险的数据(cwe - 182)。例如,如果“. ./“序列是远离“……/ /字符串以顺序的方式,两个实例“. ./”将从原始字符串中删除,但其余字符仍将形成“. ./”字符串。

有效性:高

实施阶段:

使用一个内置的路径规范化功能(如realpath (C))产生规范版本的路径名,有效地消除了“. .”序列和符号链接(CWE-23,CWE-59)。

阶段:安装;操作

作为较低权限的用户使用操作系统权限和运行限制范围的任何成功的攻击。

阶段:操作;实现

如果您使用的是PHP配置您的应用程序,以便它不使用register_globals。在实现,开发应用程序,以便它不依赖于这个特性,但是小心实现register_globals的仿真等弱点cwe - 95,cwe - 621和类似的问题。

测试阶段:

使用自动静态分析工具针对这种类型的弱点。许多现代技术利用数据流分析,减少假阳性的数量。这不是一个完美的解决方案,因为100%的准确率和覆盖率不可行。

测试阶段:

使用动态交互的工具和技术与产品使用大型测试套件和许多不同的输入,如模糊测试(起毛)健壮性测试和故障注入。产品的操作可能慢下来,但它不应该成为不稳定,崩溃,或者产生不正确的结果。

测试阶段:

使用工具和技术,需要手动(人类)的分析,如渗透测试、威胁建模和交互工具,允许测试人员记录和修改一个活跃的会话。这些可能是更有效的比严格的自动化技术。尤其如此弱点设计和相关的业务规则。
+弱点Ordinalities
Ordinality 描述
(其他弱点的弱点存在独立的)
+检测方法

自动静态分析

文件名的外部控制或影响使用自动静态分析模型常常可以发现产品内的数据流。

自动静态分析可能无法识别在执行适当的输入验证时,导致假阳性——即。警告,没有任何安全后果或需要任何代码更改。

+会员资格
部分帮助这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 723年 OWASP十大2004类别A2 -破碎的访问控制
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 752年 2009年前25 -资源管理风险
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 877年 CERT c++安全编码部分09 -输入输出(FIO)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 981年 SFP二级集群:路径遍历
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1348年 OWASP 2021年十大类别A04:2021——不安全设计
+笔记

的关系

文件名可以的外部控制的主要环节链与其他与弱点,见CanPrecede关系。这是因为软件系统使用文件为许多不同的目的:执行程序,加载代码库,存储应用程序数据,存储配置设置,临时数据记录,作为信号或信号量其他进程,等等。

然而,这些弱点并不总是需要外部控制。例如,link-following弱点(CWE-59)经常涉及到路径名攻击者不可控的。

外部控制可以从其他合成问题。例如,在PHP应用程序中,register_globals设置可以让攻击者修改变量,程序员认为是不可变的,使文件包括(cwe - 98)和路径遍历(CWE-22)。操作过度特权(cwe - 250)可能允许攻击者指定一个输入文件名没有直接攻击者可读的,但访问特权的程序。缓冲区溢出(cwe - 119)可能让攻击者控制附近的内存位置相关的路径名,但被攻击者不能直接修改。

维护

cwe - 114是一个类,但是它是上市的孩子cwe - 73在1000年的观点。这表明一些抽象的问题,应该在未来的版本中解决。
+分类法映射
映射分类名称 节点ID 适合 映射节点名
7有害的王国 路径操作
软件故障模式 SFP16 路径遍历
+引用
卡特里娜REF-6 Tsipenyuk,布莱恩象棋和加里·麦克格劳博士。“七有害的王国:分类软件安全错误”。NIST研讨会软件安全保障技术和度量工具。NIST的。2005-11-07。<https://samate.nist.gov/SSATTM_Content/papers/Seven%20Pernicious%20Kingdoms%20-%20Taxonomy%20of%20Sw%20Security%20Errors%20-%20Tsipenyuk%20-%20Chess%20-%20McGraw.pdf>。
REF-45 OWASP。“OWASP企业安全API (ESAPI)项目”。<http://www.owasp.org/index.php/ESAPI>。
+内容的历史
+提交
提交日期 提交者 组织
2006-07-19 7有害的王国
+修改
修改日期 修饰符 组织
2008-07-01 Eric Dalci Cigital
更新Time_of_Introduction
2008-09-08 CWE内容团队 主教法冠
更新的关系,Other_Notes, Taxonomy_Mappings Weakness_Ordinalities
2009-01-12 CWE内容团队 主教法冠
更新Applicable_Platforms、Causal_Nature Common_Consequences Demonstrative_Examples,描述,Observed_Examples, Other_Notes, Potential_Mitigations,引用,Relationship_Notes,关系,Weakness_Ordinalities
2009-03-10 CWE内容团队 主教法冠
更新Potential_Mitigations、人际关系
2009-07-27 CWE内容团队 主教法冠
更新Demonstrative_Examples
2009-10-29 CWE内容团队 主教法冠
更新Common_Consequences、描述
2009-12-28 CWE内容团队 主教法冠
更新Detection_Factors
2010-02-16 CWE内容团队 主教法冠
更新Potential_Mitigations
2011-06-01 CWE内容团队 主教法冠
更新Common_Consequences、关系、Taxonomy_Mappings
2011-09-13 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2012-05-11 CWE内容团队 主教法冠
更新Demonstrative_Examples、引用关系,Taxonomy_Mappings Related_Attack_Patterns
2012-10-30 CWE内容团队 主教法冠
更新Potential_Mitigations
2014-07-30 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2017-11-08 CWE内容团队 主教法冠
更新Applicable_Platforms、Likelihood_of_Exploit Modes_of_Introduction、关系、Taxonomy_Mappings
2020-02-24 CWE内容团队 主教法冠
更新Potential_Mitigations、引用关系,Time_of_Introduction,类型
2020-06-25 CWE内容团队 主教法冠
更新Potential_Mitigations、人际关系
2021-03-15 CWE内容团队 主教法冠
更新Maintenance_Notes Potential_Mitigations
2021-10-28 CWE内容团队 主教法冠
更新的关系
2023-01-31 CWE内容团队 主教法冠
更新描述、Detection_Factors Potential_Mitigations
+以前的条目名称
改变日期 以前的条目名称
2008-04-11 路径操作
更多的信息是可用的,请选择一个不同的过滤器。
页面最后更新:2023年1月31日