CWE

常见的弱点枚举

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

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

cwe - 367: Time-of-check分时(TOCTOU)竞态条件

弱点ID: 367
抽象:基地
结构:简单的
视图定制的信息:
+描述
产品检查资源的状态在使用资源之前,但资源的状态可以改变之间的检查和使用的方式无效的结果检查。这可能会导致产品资源时执行无效的操作在一个意想不到的状态。
+扩展描述
当一个攻击者可以影响这个弱点可以安全相关的资源之间的状态检查和使用。这可能发生在共享资源,如文件、内存、甚至多线程程序中的变量。
+替代条款
TOCTTOU:
TOCTTOU缩略词扩展到检查时使用的“时间”。
TOCCTOU:
TOCCTOU缩写TOCTTOU最有可能是一个错误,但它已被用于一些有影响力的文档,所以错误重复相当频繁。
+的关系
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”研究概念”(cwe - 1000)
自然 类型 ID 的名字
ChildOf 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 362年 使用共享资源与不当同步并发执行(“竞争条件”)
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 363年 竞态条件使链接后
PeerOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 386年 符号名称映射到正确的对象
光束 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 609年 双重检查锁定
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关观点“软件开发”(cwe - 699)
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 557年 并发问题
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+简化映射的相关视图”缺点漏洞发布”(cwe - 1003)
自然 类型 ID 的名字
ChildOf 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 362年 使用共享资源与不当同步并发执行(“竞争条件”)
+模式的介绍
部分帮助不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
阶段 请注意
实现
+适用的平台
部分帮助该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。

语言

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

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

技术的影响:改变执行逻辑;意想不到的状态

攻击者可以获得其他未经授权的资源。
完整性
其他

技术的影响:修改应用程序数据;修改文件或目录;修改内存;其他

竞态条件,如这种可以用来获得读或写对资源的访问不正常可由用户读或写的问题。
完整性
其他

技术的影响:其他

资源的问题,或其他资源(通过损坏),可能会被恶意用户改变不良的方法。
不可抵赖性

技术的影响:隐藏活动

如果一个文件或其他资源是写在这个方法中,而不是在一个有效的方式,记录的活动可能不会发生。
不可抵赖性
其他

技术的影响:其他

在某些情况下它可能会删除文件恶意用户可能没有访问,如日志文件。
+利用的可能性
媒介
+示范例子

示例1

下面的代码检查一个文件,然后更新其内容。

(坏的代码)
例如语言:C
struct stat *某人;

lstat(“…”,某人);/ /还没有更新自上次读取
printf("声明文件\ n”);
如果某人- > st_mtimespec = =…) {
打印(“现在更新\ n”);
updateThings ();
}

可能之间的文件可以被更新的时候检查了lstat,尤其是printf的延迟。

示例2

下面的代码是程序安装setuid root。程序执行某些代表非特权用户,文件操作和使用检查,以确保它不使用root特权来执行操作,否则应不可用当前用户。这个项目使用的访问()系统调用,以检查是否运行程序的人有权限访问指定的文件之前,打开文件,并执行必要的操作。

(坏的代码)
例如语言:C
如果(!访问(文件、W_OK)) {
f = fopen(文件,“w +”);
操作(f);
}
其他{

流(stderr,“无法打开文件% s。\ n”,文件);
}

访问()的调用行为与预期的一样,返回0,如果运行程序的用户有必要权限写入文件,否则和1。然而,因为访问()和fopen()对文件名进行操作而不是文件句柄,仍无法保证文件变量是指同一磁盘上的文件传递给fopen()时,它通过访问()时所做的那样。如果攻击者替换文件后调用访问()符号链接到不同的文件,程序将使用其根特权操作文件,即使它是一个文件,攻击者将无法修改。通过欺骗程序执行一个操作,否则是不允许的,攻击者获得了提升特权。这种类型的漏洞并不局限于使用root特权程序。如果应用程序能够执行任何操作,攻击者将不被允许执行,那么它就是一个可能的目标。

示例3

这段代码打印文件的内容如果用户许可。

(坏的代码)
例如语言:PHP
readFile函数($ filename) {
$ user = getCurrentUser ();

/ /解决文件的符号链接
如果(作用是($ filename) {
(文件名=指向美元文件名);
}

如果(fileowner(文件名美元)= = $ user) {
回声file_get_contents ($ realFile);
返回;
}
其他{
回声“拒绝访问”;
返回错误;
}
}

这段代码试图解决符号链接之前检查文件并打印其内容。然而,攻击者可能会修改文件从一个真正的文件之间的一个符号链接调用函数作用是()和(),允许任意文件的阅读。注意,这段代码失败日志企图访问(cwe - 778)。

示例4

这个例子是改编自REF-18]。假设从多个线程调用这个代码块。switch语句将执行不同的代码取决于MYFILE的时候。三最后一次改变。

(坏的代码)
例如语言:C
# include < sys / types.h >
# include < sys / stat.h >



struct stat某人;
stat (“MYFILE.txt”,某人);
printf("文件更改时间:% d \ n”,某人- > st_ctime);
开关(某人- > st_ctime % 2) {
例0:printf("选项1 \ n ");打破;
案例1:printf("选项2 \ n ");打破;
默认值:printf("这应该是遥不可及的吗? \ n ");打破;
}

如果该代码块内执行多个线程,和MYFILE。txt之间改变一个线程的操作,另一个开关可以产生不同的,可能是意想不到的结果。

+观察到的例子
参考 描述
TOCTOU沙箱过程中允许安装不可信的浏览器附加组件的替换一个文件后验证,但之前执行
多线程竞态条件允许远程攻击者造成拒绝服务(崩溃或重启),造成两个线程来处理相同的RPC请求,导致一个线程使用内存后被释放。
PHP缺陷允许远程攻击者通过流产执行任意代码执行前关键数据结构的初始化完成。
链:time-of-check时段(TOCTOU)竞态条件程序允许旁路保护机制,旨在防止符号链接攻击。
链:time-of-check时段(TOCTOU)竞态条件程序允许旁路保护机制,旨在防止符号链接攻击。
+潜在的缓解措施

实施阶段:

最基本的建议TOCTOU漏洞是不执行一个检查之前使用。这并不解决根本问题的执行一个函数在一个资源的状态和身份不能保证,但它确实有助于限制的虚假的安全感。

实施阶段:

当文件被修改属于当前用户和组,设置有效的gid和当前用户和组的uid,当执行该语句。

阶段:体系结构和设计

限制从多个进程上的交叉操作文件。

阶段:实施;架构和设计

如果你不能自动执行操作,你必须在多个进程或线程之间共享访问资源,然后尝试限制的时间(CPU周期)之间的检查和使用资源。这不会解决问题,但它可以使攻击更难成功。

实施阶段:

复核后的资源使用调用验证适当的行动。

阶段:体系结构和设计

确保可以使用一些环保锁定机制来有效地保护资源。

实施阶段:

确保锁定发生在检查之前,而不是之后,这样的资源,作为检查,在使用时是一样的。
+会员资格
部分帮助这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 361年 7 pk -时间和状态
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 743年 CERT C安全编码标准(2008)第十章-输入输出(FIO)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 877年 CERT c++安全编码部分09 -输入输出(FIO)
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 884年 CWE横截面
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 988年 SFP二级集群:竞争条件窗口
+笔记

的关系

TOCTOU问题并不总是涉及到符号链接,而不是每一个符号链接的问题是TOCTOU问题。

研究的差距

Non-symlink TOCTOU问题不经常报道,但它们可能发生在代码是安全的。
+分类法映射
映射分类名称 节点ID 适合 映射节点名
千鸟 Time-of-check分时竞态条件
7有害的王国 文件访问竞争条件:TOCTOU
时间的检查,使用竞态条件
竞态条件的开关
CERT C安全编码 FIO01-C 小心使用函数,使用文件名来识别
软件故障模式 SFP20 竞态条件窗口
+引用
[REF-18]安全软件公司. .“扣应用程序安全性的过程”。5.4.6竞态条件的开关。2005年。<https://cwe.mitre.org/documents/sources/TheCLASPApplicationSecurityProcess.pdf>。
(ref - 367)丹Tsafrir,托马赫兹,大卫·瓦格纳和迪尔玛-达-席尔瓦。“轻松解决文件TOCTTOU种族与硬度放大”。2008-02-28。<http://www.usenix.org/events/fast08/tech/tsafrir.html>。
迈克尔•霍华德(REF-44)大卫·勒布朗和Viega约翰。软件安全的“24宗罪”。“罪13:竞争条件”。Page 205. McGraw-Hill. 2010.
(ref - 62)马克·多德约翰麦克唐纳和贾斯汀Schuh。“软件安全评估的艺术”。第9章,“TOCTOU”, 527页。1版。艾迪生卫斯理》2006。
+内容的历史
+提交
提交日期 提交者 组织
2006-07-19 千鸟
+修改
修改日期 修饰符 组织
2008-07-01 Eric Dalci Cigital
更新Time_of_Introduction
2008-08-01 股的分析
添加/更新白盒定义
2008-09-08 CWE内容团队 主教法冠
更新Common_Consequences、关系、Other_Notes Taxonomy_Mappings
2008-10-14 CWE内容团队 主教法冠
更新描述、名称、关系
2008-11-24 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2009-01-12 CWE内容团队 主教法冠
更新Alternate_Terms、Observed_Examples Other_Notes、引用关系,Research_Gaps Relationship_Notes
2009-05-27 CWE内容团队 主教法冠
更新Demonstrative_Examples
2009-07-17 股的分析
改善了White_Box_Definition
2009-07-27 CWE内容团队 主教法冠
更新White_Box_Definitions
2010-09-27 CWE内容团队 主教法冠
更新描述、人际关系
2010-12-13 CWE内容团队 主教法冠
更新Alternate_Terms、人际关系
2011-06-01 CWE内容团队 主教法冠
更新Common_Consequences
2011-06-27 CWE内容团队 主教法冠
更新Common_Consequences
2011-09-13 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2012-05-11 CWE内容团队 主教法冠
更新Demonstrative_Examples Observed_Examples、引用关系
2012-10-30 CWE内容团队 主教法冠
更新Potential_Mitigations
2014-07-30 CWE内容团队 主教法冠
更新Demonstrative_Examples、关系、Taxonomy_Mappings
2017-11-08 CWE内容团队 主教法冠
更新Applicable_Platforms、Demonstrative_Examples Likelihood_of_Exploit、引用关系,Taxonomy_Mappings White_Box_Definitions
2019-06-20 CWE内容团队 主教法冠
更新的关系
2020-02-24 CWE内容团队 主教法冠
更新引用关系
2022-04-28 CWE内容团队 主教法冠
更新Demonstrative_Examples、引用关系,Taxonomy_Mappings
2022-06-28 CWE内容团队 主教法冠
更新Observed_Examples
2023-01-31 CWE内容团队 主教法冠
更新描述
+以前的条目名称
改变日期 以前的条目名称
2008-10-14 Time-of-check分时竞态条件
更多的信息是可用的,请选择一个不同的过滤器。
页面最后更新:2023年1月31日