CWE

常见的弱点枚举

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

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

CWE-22:不当限制限制目录的路径名(“路径遍历”)

弱点ID: 22
抽象:基地
结构:简单的
视图定制的信息:
+描述
产品使用外部输入来构造一个路径名,目的是为了辨别一个文件或目录,坐落在父目录的限制,但是产品不正确路径名中的中和特殊元素可以导致路径名来解决限制目录以外的位置。
+扩展描述

许多文件操作的目的是发生在一个受限制的目录。通过使用特殊的元素,如“. .”和“/”分隔符,攻击者可以逃避限制以外的位置来访问系统上的其他文件或目录。最常见的一种特殊的元素是“. ./”序列,这在大多数现代操作系统都被解释为父目录的当前位置。这被称为相对路径遍历。路径遍历还包括使用绝对路径名,如“/ usr /地方/ bin”,这也可能是有用的在获得意想不到的文件。这被称为绝对路径遍历。

在许多编程语言,注入一个null字节(0或NUL)可能允许攻击者截断生成的文件名扩大攻击范围。例如,产品可能会增加”。txt”任何路径,从而限制了攻击者文本文件,但是零注入可能有效地去除这种限制。

+替代条款
目录遍历
路径遍历:
优先在“路径遍历目录遍历,”这两个术语是attack-focused。
+的关系
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”研究概念”(cwe - 1000)
自然 类型 ID 的名字
ChildOf 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 668年 曝光资源错误的球体
ChildOf 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 706年 使用Incorrectly-Resolved名称或引用
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 23 相对路径遍历
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 36 绝对路径遍历
光束 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 20. 不正确的输入验证
光束 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 73年 外部控制文件名或路径
光束 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 172年 编码错误
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+简化映射的相关视图”缺点漏洞发布”(cwe - 1003)
自然 类型 ID 的名字
ChildOf 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 706年 使用Incorrectly-Resolved名称或引用
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”方案及质量的措施(2020)”(CWE-1305)
自然 类型 ID 的名字
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 23 相对路径遍历
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 36 绝对路径遍历
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”方案及数据保护措施”(cwe - 1340)
自然 类型 ID 的名字
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 23 相对路径遍历
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 36 绝对路径遍历
+模式的介绍
部分帮助不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
阶段 请注意
架构和设计
实现
+适用的平台
部分帮助该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。

语言

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

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

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

攻击者可以创建或覆盖关键文件用于执行代码,如项目或库。
完整性

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

攻击者可以覆盖或创建重要文件,如项目、图书馆、或重要数据。如果目标文件是用于安全机制,那么攻击者可能能够绕过机制。例如,添加一个新帐户的密码文件可能允许攻击者绕过身份验证。
保密

技术的影响:读文件或目录

攻击者可以读意想不到的内容文件和暴露敏感数据。如果目标文件是用于安全机制,那么攻击者可能能够绕过机制。例如,通过阅读密码文件,攻击者可以进行暴力破解密码猜测攻击为了打入系统上的一个帐户。
可用性

技术的影响:DoS:崩溃,退出或重新启动

攻击者可以覆盖、删除或腐败的意想不到的重要文件等项目,图书馆,或重要的数据。这可能防止产品在所有工作和保护机制,如身份验证的情况下,它有可能锁定产品的每个用户。
+利用的可能性
+示范例子

示例1

下面的代码可以为社交网络应用程序的每个用户的配置信息存储在一个单独的文件中。所有文件都存储在一个目录中。

(坏的代码)
例如语言:Perl
dataPath公司美元= " /用户/ cwe /配置文件”;
我的$ username =参数(“用户”);
我的profilePath = dataPath公司美元。“/”。美元的用户名;

开放(我跳频美元," < ",$ profilePath) | | ExitError(“配置文件读取错误:$ profilePath”);
打印“< ul > \ n”;
而(< $ fh >) {
打印”<李> $ _ < /李> \ n”;
}
打印”< / ul > \ n”;

而程序员打算访问文件,如“/用户/ cwe / profiles /爱丽丝”或“/用户/ cwe / profiles / bob”,没有验证传入的用户参数。攻击者可以提供一个字符串,例如:

(攻击代码)
. . / . . / . . / etc / passwd

程序将生成一个配置文件路径名是这样的:

(结果)
/用户/ cwe / profiles / . . / . . / . . / etc / passwd

文件打开时,操作系统解决了”。/”在路径规范化和访问这个文件:

(结果)
/ etc / passwd

因此,攻击者可以读取整个密码的文本文件。

注意,这段代码还包含一个错误消息信息泄漏cwe - 209)如果用户参数不会产生一个存在的文件:提供完整的路径名。由于缺乏检索输出编码的文件,也可能是一个跨站点脚本问题(cwe - 79)如果概要文件包含任何HTML,但是其他代码需要检查。

示例2

在下面的示例中,一个字典文件的路径从一个系统属性读取并用来初始化一个文件对象。

(坏的代码)
例如语言:Java
字符串文件名= System.getProperty (“com.domain.application.dictionaryFile”);
文件dictionaryFile =新文件(文件名);

然而,道路并不确认或修改,以防止它包含相对或绝对路径序列之前创建File对象。这允许任何人可以控制系统属性来确定使用什么文件。理想情况下,路径应相对于解决一些应用程序或用户的主目录。

示例3

下面的代码将不受信任的输入,并使用一个正则表达式来过滤”. .从输入/”。然后将这个结果/home/user/目录并试图读取文件最后生成的路径。

(坏的代码)
例如语言:Perl
我的用户名=美元GetUntrustedInput ();
用户名= ~ s / \美元。\ \ / / /;
我的$ filename =“/ home / user /”。美元的用户名;
ReadAndSendFile ($ filename);

自正则表达式没有/ g全球匹配修饰符,它只删除第一个实例“. ./“遇到。所以一个输入值,例如:

(攻击代码)
. . / . . / . . / etc / passwd

将第一个“. ./“剥夺,导致:

(结果)
. . / . . / etc / passwd

这个值然后连接/home/user/目录:

(结果)
/home/user/../../etc/passwd

导致检索/ etc / passwd文件一旦操作系统解决了. .在路径名/序列。这导致相对路径遍历(CWE-23)。

示例4

下面的代码尝试验证给定输入路径通过检查它对一个allowlist一旦删除给定的文件进行验证。在这个特定的例子中,被认为是有效的路径字符串开头“safe_dir /”。

(坏的代码)
例如语言:Java
字符串路径= getInputPath ();
如果(path.startsWith (" / safe_dir / "))
{
文件f =新文件(路径);
f.delete ()
}

攻击者可以提供这样的一个输入:

(攻击代码)
/ safe_dir / . . / important.dat

软件假设路径是有效的,因为它始于“safe_path /”序列,但“. ./”将导致程序删除重要的序列。dat文件的父目录

示例5

下面的代码演示了无限制上传文件的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),或者系统崩溃。

+观察到的例子
参考 描述
Python包管理器指定的文件名不正确地限制在一个附加头,允许任意文件读取使用路径遍历序列,如“. . /”
使用不安全的os.path Python包构造文件名。加入呼吁不受信任的输入,允许因为os.path绝对路径遍历。加入重置路径名指定绝对路径,作为输入的一部分。
目录遍历Go-based Kubernetes运营商应用允许访问数据从文件系统控制器的豆荚通过. ./在yaml文件序列
链:云计算虚拟化平台不需要身份验证上传的tar格式文件(cwe - 306),然后使用. .路径遍历序列(CWE-23)在文件访问意想不到的文件,如利用每中钢协KEV在野外。
Kubernetes包经理写的去允许恶意插件路径遍历序列插入插件存档(“Zip”)来复制一个文件在目标目录
链:安全产品不当输入验证(CWE-20)导致目录遍历(CWE-22),利用每中钢协KEV在野外。
Go-based归档库允许提取的文件位置之外的目标文件夹与“. ./“路径遍历序列在一个zip文件的文件名,又名“邮政滑”
万博下载包通讯模块允许读取任意文件使用“. ./”序列。
FTP服务器允许删除任意文件使用“. .”删除命令。
FTP服务器允许创建任意目录使用[“. .”命令。
FTP服务的蓝牙设备允许清单目录,和创建或阅读的文件使用“. .”序列。
软件包维护程序允许覆盖任意文件使用“. ./”序列。
公告板允许攻击者使用《阿凡达》来确定文件的存在。
PHP程序允许任意代码执行使用美联储的文件名“. .”包括()函数。
覆盖的文件使用. .Torrent文件。
聊天程序使用一个定制的笑脸请求允许覆盖文件。
链:外部控制的值为用户所需的语言和主题使路径遍历。
链:库文件直接发送重定向如果要求但继续执行,允许远程文件包含和路径遍历。
+潜在的缓解措施

实施阶段:

策略:输入验证

假设所有的输入是恶意的。使用一个“接受良好的“输入验证策略,即。,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)。例如,如果“. ./“序列是远离“……/ /字符串以顺序的方式,两个实例“. ./”将从原始字符串中删除,但其余字符仍将形成“. ./”字符串。

阶段:体系结构和设计

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

实施阶段:

策略:输入验证

输入应该解码和规范化应用程序当前的内部表示之前验证(cwe - 180)。确保应用程序不会解码输入两次相同(cwe - 174)。这些错误可以用来绕过allowlist验证方案通过引入危险的输入后检查。

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

  • 在C realpath ()
  • 在Java getCanonicalPath ()
  • GetFullPath()在ASP.NET
  • 在Perl realpath()或abs_path ()
  • 在PHP realpath ()

阶段:体系结构和设计

策略:库或框架

使用审查库或框架不允许这个弱点发生或提供了结构,使这个弱点更容易避免的。

阶段:操作

防火墙策略:

使用应用程序防火墙,可以检测到攻击这个弱点。它可以是有益的情况下,代码不能固定(因为它是由第三方控制),作为一项紧急预防措施,更全面的软件保证措施被应用,或者提供深度防御。

有效性:温和

注意:应用程序防火墙不可能覆盖所有可能的输入向量。此外,攻击技术可能可以绕过保护机制,比如使用畸形的输入,仍然可以由组件接收处理这些输入。根据功能的不同,应用程序防火墙可能会无意中拒绝或修改合法请求。最后,一些手动工作可能需要定制。

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

策略:环境硬化

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

阶段:体系结构和设计

战略:执行的转换

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

例如,ID 1可以映射到“收件箱。txt”和ID 2可以映射到“profile.txt”。特性如ESAPI AccessReferenceMap [ref - 185提供此功能。

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

策略:沙盒或监狱

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

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

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

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

有效性:有限

注意:这种缓解的有效性取决于特定的沙盒或监狱的预防功能使用,只可能有助于减少攻击的范围,比如限制攻击者对特定文件系统的系统调用或限制部分,可以访问。

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

策略:减少攻击表面

存储库,包括和实用程序文件之外的web文档根,如果可能的话。否则,将它们存储在一个单独的目录,并使用web服务器的访问控制功能,防止攻击者直接请求。一个常见的做法是定义一个固定的常数在每个调用程序,然后检查存在的恒定在图书馆/包含文件;如果持续的不存在,那么直接请求的文件,它可以立即退出。

这会显著减少的机会攻击者能够绕过任何保护机制的基础程序但不包括文件。这也会减少攻击表面。

实施阶段:

确保错误消息只包含最小的细节,目标受众是有用的,没有其他人。消息需要罢工之间的平衡过于神秘的(可以迷惑用户)或过于详细的(可能揭示超过预期)。不应该透露的消息的方法被用来确定错误。攻击者可以使用详细信息完善或优化他们最初的攻击,从而增加成功的机会。

如果必须捕捉到一些细节错误,记录在日志消息,但想想会发生什么,如果日志消息可以被攻击者。高度敏感的信息,如密码永远不应该被保存到日志文件中。

避免不一致的消息可能会意外地提示攻击者对内部状态,如是否存在一个用户帐户。

的上下文路径遍历,错误消息披露路径信息可以帮助攻击者起草相应的攻击字符串通过文件系统层次结构。

阶段:操作;实现

策略:环境硬化

使用PHP时,配置应用程序,以便它不使用register_globals。在实现,开发应用程序,以便它不依赖于这个特性,但是小心实现register_globals的模拟等弱点cwe - 95,cwe - 621和类似的问题。
+弱点Ordinalities
Ordinality 描述
(其他弱点的弱点存在独立的)
合成
(缺点是通常与其他弱点的存在)
+检测方法

自动静态分析

自动化技术可以找到路径遍历的弱点存在的领域。然而,调整或定制可能需要删除或de-prioritize path-traversal问题由产品的管理员只是可利用的-或其他特权用户,因此潜在的有效的行为或,在最坏的情况下,一个错误,而不是弱点。

有效性:高

人工静态分析

手动白盒技术可以提供足够的代码覆盖率和减少误报,如果所有的文件访问操作可以在有限的时间约束。

有效性:高

自动静态分析——二进制或字节码

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

高成本效益:
  • 字节码的弱点分析,包括反汇编程序+源代码弱点分析
成本有效的部分报道:
  • 二进制弱点分析,包括反汇编程序+源代码弱点分析

有效性:高

人工静态分析——二进制或字节码

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

成本有效的部分报道:
  • 二进制/字节码反汇编程序,然后使用手动分析缺陷和异常

有效性:飙升部分

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

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

高成本效益:
  • Web应用程序扫描
  • Web服务的扫描仪
  • 数据库扫描仪

有效性:高

动态分析与人工解释结果

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

高成本效益:
  • 模糊测试
  • 基于框架Fuzzer

有效性:高

人工静态分析源代码

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

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

有效性:高

自动静态分析源代码

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

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

有效性:高

体系结构或设计审查

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

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

有效性:高

+功能区域
  • 文件处理
+影响资源
  • 文件或目录
+会员资格
部分帮助这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
自然 类型 ID 的名字
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 635年 最初使用的弱点NVD从2008年到2016年
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 715年 OWASP十大2007类别A4 -不安全的直接对象引用
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 723年 OWASP十大2004类别A2 -破碎的访问控制
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 743年 CERT C安全编码标准(2008)第十章-输入输出(FIO)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 802年 2010年前25 -资源管理风险
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 813年 OWASP十大2010类别A4 -不安全的直接对象引用
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 865年 2011年前25 -资源管理风险
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 877年 CERT c++安全编码部分09 -输入输出(FIO)
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 884年 CWE横截面
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 932年 OWASP十大2013类别A4 -不安全的直接对象引用
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 981年 SFP二级集群:路径遍历
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1031年 OWASP 2017年十大类别A5,破碎的访问控制
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1131年 方案》(2016)——安全质量措施
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1179年 01 SEI CERT Perl编码标准,指导方针。输入验证和数据卫生处理(IDS)
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 1200年 弱点在2019 CWE最危险的软件错误
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1308年 方案及质量措施,安全
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 1337年 2021 CWE最危险软件的弱点的弱点
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 1340年 方案及数据保护措施
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1345年 OWASP 2021年十大类别A01:2021——破碎的访问控制
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 1350年 2020 CWE最危险软件的弱点的弱点
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 1387年 2022 CWE最危险软件的弱点的弱点
+笔记

的关系

路径名等价可以被看作是一种规范化的错误。

的关系

一些路径名等价问题并不直接相关目录遍历,而用于绕过安全相关的检查文件/目录是否可以被攻击者访问(例如一个落后于“/”文件名可以绕过末尾不要指望/访问规则,导致服务器提供文件时,通常不会)。

术语

像其他弱点,术语通常是基于使用的操作类型,而不是潜在的弱点。有些人使用“目录遍历”只指注入“. .”和相同的序列,它的具体含义是遍历目录。

其他变体,如“绝对路径”和“驱动器”的影响* *目录遍历,但有些人可能不叫它,因为它不涉及“. .”或等价的。

研究的差距

许多变体的路径遍历超对袭击可能是根本原因。cwe - 790cwe - 182开始覆盖这部分差距。

研究的差距

不完整的诊断或报告的漏洞可以让它很难知道哪些变量影响。例如,研究人员可能会说,“. .\“是脆弱的,但不是测试”。/”,也可能是脆弱的。

目录分隔符的任意组合(“/”、“\”,等等)和数字的“。”(e.g. "....") can produce unique variants; for example, the "//../" variant is not listed (CVE-2004-0325). See this entry's children and lower-level descendants.

+分类法映射
映射分类名称 节点ID 适合 映射节点名
千鸟 路径遍历
OWASP十大2007 A4 CWE更具体 不安全的直接对象引用
OWASP十大2004 A2 CWE更具体 破碎的访问控制
CERT C安全编码 FIO02-C 规范化路径名来自不受信任的来源
SEI CERT Perl编码标准 IDS00-PL 确切的 规范化路径名之前验证它们
WASC 33 路径遍历
软件故障模式 SFP16 路径遍历
OMG ASCSM ASCSM -CWE-22
+引用
[REF-7]大卫迈克尔·霍华德和勒布朗。编写安全代码。11章,“目录遍历和使用父路径(. .)”Page 370. 2nd Edition. Microsoft Press. 2002-12-04. <https://www.microsoftpressstore.com/store/writing -安全-代码- 9780735617223>。
REF-45 OWASP。“OWASP企业安全API (ESAPI)项目”。<http://www.owasp.org/index.php/ESAPI>。
OWASP (ref - 185)。“测试路径遍历(owasp -阿兹- 001)”。<http://www.owasp.org/index.php/Testing_for_Path_Traversal_ (owasp -阿兹- 001)>。
[ref - 186]约翰内斯·乌尔里希。“前25系列——等级7 -路径遍历”。无软件安全研究所。2010-03-09。<http://blogs.sans.org/appsecstreetfighter/2010/03/09/top-25-series-rank-7-path-traversal/>。
(ref - 76)肖恩·巴纳姆和迈克尔Gegick。“最小特权”。2005-09-14。<https://www.cisa.gov/uscert/bsi/articles/knowledge/principles/least-privilege>。
(ref - 62)马克·多德约翰麦克唐纳和贾斯汀Schuh。“软件安全评估的艺术”。第9章,“文件名和路径”,503页。1版。艾迪生卫斯理》2006。
(ref - 962)对象管理组织(OMG)。“自动源代码安全措施(ASCSM)”。ASCSM-CWE-22。2016 - 01。<http://www.omg.org/spec/ASCSM/1.0/>。
+内容的历史
+提交
提交日期 提交者 组织
2006-07-19 千鸟
+贡献
贡献的日期 贡献者 组织
2022-07-11 尼克·约翰斯顿
识别的弱点在Perl中演示的例子
+修改
修改日期 修饰符 组织
2008-07-01 Eric Dalci Cigital
更新Potential_Mitigations Time_of_Introduction
2008-08-15 Veracode
建议OWASP 2004年排名前十的映射
2008-09-08 CWE内容团队 主教法冠
更新Alternate_Terms、关系、Other_Notes、Relationship_Notes Relevant_Properties, Taxonomy_Mappings Weakness_Ordinalities
2008-10-14 CWE内容团队 主教法冠
更新描述
2008-11-24 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2009-07-27 CWE内容团队 主教法冠
更新Potential_Mitigations
2010-02-16 CWE内容团队 主教法冠
更新Alternate_Terms、Applicable_Platforms Common_Consequences Demonstrative_Examples,描述,Detection_Factors, Likelihood_of_Exploit,名字,Observed_Examples, Other_Notes, Potential_Mitigations,引用,Related_Attack_Patterns, Relationship_Notes,关系,Research_Gaps, Taxonomy_Mappings, Terminology_Notes, Time_of_Introduction Weakness_Ordinalities
2010-06-21 CWE内容团队 主教法冠
更新Common_Consequences Demonstrative_Examples,描述、Detection_Factors Potential_Mitigations引用关系
2010-09-27 CWE内容团队 主教法冠
更新Potential_Mitigations
2010-12-13 CWE内容团队 主教法冠
更新Potential_Mitigations
2011-03-29 CWE内容团队 主教法冠
更新Potential_Mitigations
2011-06-27 CWE内容团队 主教法冠
更新的关系
2011-09-13 CWE内容团队 主教法冠
更新Potential_Mitigations、引用关系,Taxonomy_Mappings
2012-05-11 CWE内容团队 主教法冠
更新Demonstrative_Examples、引用关系
2012-10-30 CWE内容团队 主教法冠
更新Potential_Mitigations
2013-02-21 CWE内容团队 主教法冠
更新Observed_Examples
2013-07-17 CWE内容团队 主教法冠
更新Related_Attack_Patterns、人际关系
2014-06-23 CWE内容团队 主教法冠
更新Other_Notes Research_Gaps
2014-07-30 CWE内容团队 主教法冠
更新Detection_Factors、关系、Taxonomy_Mappings
2015-12-07 CWE内容团队 主教法冠
更新的关系
2017-01-19 CWE内容团队 主教法冠
更新Related_Attack_Patterns
2017-05-03 CWE内容团队 主教法冠
更新Demonstrative_Examples
2017-11-08 CWE内容团队 主教法冠
更新Affected_Resources、Causal_Nature Likelihood_of_Exploit、引用关系,Relevant_Properties Taxonomy_Mappings
2018-03-27 CWE内容团队 主教法冠
更新引用关系
2019-01-03 CWE内容团队 主教法冠
更新引用,Related_Attack_Patterns、关系、Taxonomy_Mappings
2019-06-20 CWE内容团队 主教法冠
更新Related_Attack_Patterns、关系类型
2019-09-19 CWE内容团队 主教法冠
更新的关系
2020-02-24 CWE内容团队 主教法冠
更新Potential_Mitigations、人际关系
2020-06-25 CWE内容团队 主教法冠
更新Demonstrative_Examples Potential_Mitigations
2020-08-20 CWE内容团队 主教法冠
更新的关系
2020-12-10 CWE内容团队 主教法冠
更新Potential_Mitigations、人际关系
2021-03-15 CWE内容团队 主教法冠
更新Demonstrative_Examples、人际关系
2021-07-20 CWE内容团队 主教法冠
更新的关系
2021-10-28 CWE内容团队 主教法冠
更新Observed_Examples、人际关系
2022-06-28 CWE内容团队 主教法冠
更新Observed_Examples、人际关系
2022-10-13 CWE内容团队 主教法冠
更新Observed_Examples,引用
2023-01-31 CWE内容团队 主教法冠
更新Common_Consequences、描述Detection_Factors
+以前的条目名称
改变日期 以前的条目名称
2010-02-16 路径遍历
更多的信息是可用的,请选择一个不同的过滤器。
页面最后更新:2023年1月31日