描述
产品允许用户输入控制或影响路径或文件名中使用文件系统操作。
扩展描述
这可能允许攻击者访问或修改系统文件或其他文件的关键应用程序。
路径操作发生错误时满足以下两个条件:
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.
不正确的输入验证
模式的介绍
不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
阶段
请注意
架构和设计
实现
实现:造成这一弱点在建筑安全策略的实施。
常见的后果
这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
范围
影响
可能性
完整性 保密
应用程序可以使用意想不到的文件。时违反了保密目标文件名不是直接攻击者可读的。
完整性 保密 可用性
技术的影响: 修改文件或目录;执行未经授权的代码或命令
应用程序可以使用意想不到的文件。这可能违反完整性如果文件名写入,或者文件名是一个程序或其他形式的可执行代码。
可用性
技术的影响: DoS:崩溃,退出或重新启动;DoS:资源消耗(其他)
应用程序可以使用意想不到的文件。可用性可以违反如果攻击者指定一个意想不到的文件,应用程序修改。可用性也受到影响,如果攻击者为一个大文件指定一个文件名,或指向一个特殊设备或文件没有格式,应用程序的预期。
利用的可能性
示范例子
示例1
下面的代码使用来自HTTP请求来创建一个输入文件的名字。程序员没有考虑的可能性,攻击者可以提供一个文件名称如“. . / . . / / conf / tomcat服务器。xml”,导致应用程序删除自己的配置文件(CWE-22 )。
字符串rName = request.getParameter (“reportName”); 文件rFile =新文件(“/ usr /地方/ apfr /报告/”+ rName); … rFile.delete ();
示例2
下面的代码使用来自一个配置文件,以确定哪些输入文件打开和回声返回给用户。如果程序运行与特权和恶意用户可以更改配置文件,他们可以使用程序读取系统上的任何文件,以扩展. txt。
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 - 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类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
笔记
的关系
文件名可以的外部控制的主要环节链与其他与弱点,见CanPrecede关系。这是因为软件系统使用文件为许多不同的目的:执行程序,加载代码库,存储应用程序数据,存储配置设置,临时数据记录,作为信号或信号量其他进程,等等。
然而,这些弱点并不总是需要外部控制。例如,link-following弱点(CWE-59 )经常涉及到路径名攻击者不可控的。
外部控制可以从其他合成问题。例如,在PHP应用程序中,register_globals设置可以让攻击者修改变量,程序员认为是不可变的,使文件包括(cwe - 98 )和路径遍历(CWE-22 )。操作过度特权(cwe - 250 )可能允许攻击者指定一个输入文件名没有直接攻击者可读的,但访问特权的程序。缓冲区溢出(cwe - 119 )可能让攻击者控制附近的内存位置相关的路径名,但被攻击者不能直接修改。
分类法映射
映射分类名称
节点ID
适合
映射节点名
7有害的王国
路径操作
软件故障模式
SFP16
路径遍历
引用
内容的历史
提交
提交日期
提交者
组织
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
路径操作