CWE

常见的弱点枚举

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

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

cwe - 642:外部控制临界状态的数据

弱点ID: 642
抽象:
结构:简单的
视图定制的信息:
+描述
重要产品商店安全状态信息对其用户,或产品本身的位置可以访问未经授权的演员。
+扩展描述

如果攻击者可以修改状态信息没有检测,那么它可以被用来执行未经授权的操作或意想不到的资源的访问,因为应用程序程序员不希望国家可以改变。

状态信息可以存储在不同的地方,比如饼干,在一个隐藏的web表单字段中,输入参数或参数,一个环境变量,一个数据库记录,在一个设置文件,等。所有这些位置有可能被攻击者修改。当这个国家信息用于控制安全或确定资源的使用,那么它可能会创建一个漏洞。例如,应用程序可能执行身份验证,然后保存在一个“验证= true”cookie。攻击者可以简单地创建这个饼干为了绕过身份验证。

+的关系
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”研究概念”(cwe - 1000)
自然 类型 ID 的名字
ChildOf 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 668年 曝光资源错误的球体
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 15 外部控制系统或配置设置
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 73年 外部控制文件名或路径
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 426年 不可信的搜索路径
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 472年 外部控制Assumed-Immutable Web参数
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 565年 依赖饼干没有验证和完整性检查
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关视图”架构概念”(cwe - 1008)
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1011年 授权的演员
+模式的介绍
部分帮助不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
阶段 请注意
架构和设计 遗漏:这个弱点是由于缺少一个安全策略在体系结构和设计阶段。
实现
+适用的平台
部分帮助该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。

语言

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

技术

Web服务器(通常是普遍的)

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

技术的影响:旁路保护机制;获得特权或假设的身份

在恶意攻击者可能会修改状态的方式。如果状态是相关特权或级别用户的身份验证,然后状态修改可能允许用户绕过身份验证或提升特权。
保密

技术的影响:读取应用程序数据

状态变量可能包含敏感信息,不应该被客户端。
可用性

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

通过修改状态变量,攻击者可能违反的内容应用程序的预期状态,导致拒绝服务由于一个意想不到的错误条件。
+利用的可能性
+示范例子

示例1

在接下来的例子中,一个身份验证标记从一个浏览器读取cookie,从而允许外部用户状态数据的控制。

(坏的代码)
例如语言:Java
饼干饼干[]= request.getCookies ();
for (int i = 0;我< cookies.length;我+ +){
饼干c =饼干(我);
如果(c.getName () .equals(“验证”)& & Boolean.TRUE.equals (c.getValue ())) {
验证= true;
}
}

示例2

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

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

rFile.delete ();

示例3

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

(坏的代码)
例如语言:Java
fis = new FileInputStream (cfg.getProperty(“子”)+ " . txt ");
amt = fis.read (arr);
out.println (arr);

示例4

这个项目的目的是执行一个命令列表的内容限制目录,然后执行其他操作。假设它运行setuid特权为了绕过权限检查由操作系统。

(坏的代码)
例如语言:C
#定义DIR /限制/目录”

char cmd [500];
sprintf (cmd,“ls - l % 480年代”,DIR);
/ *提高特权访问所需DIR。* /

RaisePrivileges (…);
系统(cmd);
DropPrivileges (…);

这段代码看起来无害,因为目录和命令设置为固定值,攻击者无法控制。攻击者可以只看到迪尔的内容,这是预期的程序行为。最后,程序员也谨慎地限制了特权的执行的代码。

然而,由于程序不修改PATH环境变量,以下攻击工作:

(攻击代码)
  • 用户设置的路径参考目录攻击者的控制,如“/我/ dir /”。
  • 攻击者创建一个名为“ls”的恶意程序,并将程序的/我的/ dir
  • 执行程序的用户。
  • 执行系统()时,shell咨询路径找到ls程序
  • 程序发现攻击者的恶意程序,“/我/ dir / ls”。没有找到“/ bin / ls”,因为路径不包含“/ bin /”。
  • 在程序执行攻击者的恶意程序的特权。

示例5

下面的代码段实现了一个基本的服务器使用“ls”计划的执行目录清单中列出的目录“HOMEDIR”环境变量。代码将允许用户指定一个替代“朗”环境变量。这将导致“ls”来定制其输出基于给定的语言,这是一个重要的能力当支持国际化。

(坏的代码)
例如语言:Perl
$ ENV {}“HOMEDIR”=“/ home / mydir /公共/”;
我的美元流= AcceptUntrustedInputStream ();
而(< $流>){
chomp;
如果(/ ^ ENV (\ w \ [_] +) (. *) /) {
ENV{$ 1} = 2美元;
}
elsif(/ ^辞职/){…}
elsif(/ ^列表/){
开放(fh美元,”/ bin / ls - l $ ENV {HOMEDIR} | ");
而(< $ fh >) {
SendOutput($流,“FILEINFO: $ _”);
}
关闭(fh);
}
}

程序员负责调用一个特定的“ls”计划,将HOMEDIR设置为固定值。然而,攻击者可以使用一个命令,如“ENV HOMEDIR /机密/目录”来指定另一个目录,使路径遍历攻击(CWE-22)。与此同时,其他的攻击被启用,比如OS命令注入(cwe - 78)通过设置HOMEDIR值如“/ tmp;rm射频/”。在这种情况下,程序员从来不刻意HOMEDIR被修改,所以输入验证HOMEDIR并非解决之道。部分解决方案是一个allowlist只允许朗变量ENV命令中指定。交替,假设这是一个身份验证的用户,语言可以存储在一个本地文件,因此需要任何ENV命令。

虽然这个例子可能不现实的出现,这种类型的问题出现在代码相当频繁。看到cve - 1999 - 0073中所观察到的例子来了解一个真实的例子,类似的行为。

+观察到的例子
参考 描述
邮件客户端为不相关的账户密码散列存储在一个隐藏的表单字段。
特权程序信托指定环境变量修改关键配置设置。
Telnet守护进程允许远程客户端指定关键环境变量为服务器,导致代码执行。
通过修改LD_LIBRARY_PATH环境变量不受信任的搜索路径的脆弱性。
通过修改LD_LIBRARY_PATH环境变量不受信任的搜索路径的脆弱性。
日历应用程序允许绕过身份验证通过设置一定的cookie值为1。
语言首选项的设置cookie使路径遍历攻击。
应用程序允许管理员权限通过设置cookie值来“管理”。
应用程序允许管理员权限通过设置cookie值来“管理”。
应用程序允许管理员权限通过设置cookie值来“管理”。
购物车通过隐藏表单字段允许修改价格。
购物车通过隐藏表单字段允许修改价格。
服务器允许客户机指定的搜索路径,可以指一个程序修改客户端上传了。
+潜在的缓解措施

阶段:体系结构和设计

理解所有潜在的攻击者可以访问的位置。例如,一些程序员认为饼干和隐藏的表单字段由攻击者不能修改的,或者他们可能不会考虑到环境变量可以修改之前有特权的程序被调用。

阶段:体系结构和设计

策略:减少攻击表面

在服务器端存储状态信息和敏感数据。

确保系统明确地和明确地跟踪自己的状态和用户状态和为合法的状态转换规则定义。不允许任何应用程序用户以任何方式直接影响国家除了通过合法的行动导致状态转换。

如果信息必须存储在客户端,不没有加密和完整性检查,或者在服务器端有一个机制篡改。使用一个消息身份验证代码(MAC)算法,如散列消息验证码(HMAC) (ref - 529]。应用此反国家或者你必须暴露敏感数据,可以保证数据的完整性,即。数据没有被修改。确保使用强大的哈希函数(cwe - 328)。

阶段:体系结构和设计

仅在服务器端存储状态信息。确保系统明确地和明确地跟踪自己的状态和用户状态和为合法的状态转换规则定义。不允许任何应用程序用户以任何方式直接影响国家除了通过合法的行动导致状态转换。

阶段:体系结构和设计

策略:库或框架

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

使用无状态的协议(例如,HTTP,有些框架可以保持状态。

例子包括ASP。网络视图状态和OWASP ESAPI会话管理功能。

小心提供政府支持的语言特性,因为这些可能是为了方便程序员提供,不得考虑安全。

阶段:体系结构和设计

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

阶段:操作;实现

策略:环境硬化

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

测试阶段:

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

测试阶段:

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

测试阶段:

使用工具和技术,需要手动(人类)的分析,如渗透测试、威胁建模和交互工具,允许测试人员记录和修改一个活跃的会话。这些可能是更有效的比严格的自动化技术。尤其如此弱点设计和相关的业务规则。
+会员资格
部分帮助这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 752年 2009年前25 -资源管理风险
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 884年 CWE横截面
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 963年 SFP二级集群:公开数据
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1348年 OWASP 2021年十大类别A04:2021——不安全设计
+分类法映射
映射分类名称 节点ID 适合 映射节点名
软件故障模式 SFP23 公开的数据
+引用
OWASP (ref - 528)。“2007年十大不安全的直接对象引用”。2007年。<http://www.owasp.org/index.php/Top_10_2007-A4>。
[ref - 529]“HMAC”。维基百科。2011-08-18。<http://en.wikipedia.org/wiki/Hmac>。
迈克尔•霍华德(REF-44)大卫·勒布朗和Viega约翰。软件安全的“24宗罪”。“罪4:使用魔术url,可以预测饼干,和隐藏表单字段”。Page 75. McGraw-Hill. 2010.
+内容的历史
+提交
提交日期 提交者 组织
2008-01-30 Evgeny Lebanidze Cigital
+修改
修改日期 修饰符 组织
2008-07-01 肖恩Eidemiller Cigital
添加/更新示范例子
2008-09-08 CWE内容团队 主教法冠
更新Common_Consequences、人际关系
2008-10-14 CWE内容团队 主教法冠
更新描述
2009-01-12 CWE内容团队 主教法冠
更新Applicable_Platforms、Common_Consequences Demonstrative_Examples、描述、名称、Observed_Examples, Potential_Mitigations,引用关系,Relevant_Properties、类型
2009-03-10 CWE内容团队 主教法冠
更新Potential_Mitigations
2009-07-27 CWE内容团队 主教法冠
更新Related_Attack_Patterns
2010-02-16 CWE内容团队 主教法冠
更新Potential_Mitigations
2010-06-21 CWE内容团队 主教法冠
更新Potential_Mitigations
2011-06-01 CWE内容团队 主教法冠
更新Common_Consequences
2012-05-11 CWE内容团队 主教法冠
更新Demonstrative_Examples Potential_Mitigations、引用关系
2012-10-30 CWE内容团队 主教法冠
更新Potential_Mitigations
2014-02-18 CWE内容团队 主教法冠
更新Potential_Mitigations
2014-07-30 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2017-01-19 CWE内容团队 主教法冠
更新Related_Attack_Patterns、人际关系
2017-11-08 CWE内容团队 主教法冠
更新Applicable_Platforms、Demonstrative_Examples Enabling_Factors_for_Exploitation Modes_of_Introduction,引用关系,Relevant_Properties
2020-02-24 CWE内容团队 主教法冠
更新的关系
2020-06-25 CWE内容团队 主教法冠
更新Demonstrative_Examples
2021-03-15 CWE内容团队 主教法冠
更新Demonstrative_Examples
2021-10-28 CWE内容团队 主教法冠
更新的关系
2023-01-31 CWE内容团队 主教法冠
更新描述,Potential_Mitigations
+以前的条目名称
改变日期 以前的条目名称
2008-04-11 用户状态管理不足
2009-01-12 用户状态数据的外部控制
更多的信息是可用的,请选择一个不同的过滤器。
页面最后更新:2023年1月31日