CWE

常见的弱点枚举

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

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

cwe - 209:代包含敏感信息的错误消息

弱点ID: 209
抽象:基地
结构:简单的
视图定制的信息:
+描述
产品生成一个错误消息,包括环境的敏感信息,用户,或相关的数据。
+扩展描述

自己的敏感信息可能有价值的信息(如密码),或者它可能是有用的推出,更严重的攻击。错误信息可以以不同的方式创建:

  • 自身:源代码错误消息,并将其显式结构
  • 外部产生的外部环境,如语言翻译,处理错误和构造自己的消息,其内容不是由程序员直接控制

攻击者可以使用错误消息的内容帮助启动另一个,更有针对性的攻击。例如,一个试图利用路径遍历的弱点(CWE-22)可能产生安装应用程序的完整路径名。反过来,这可能是用于选择适当数量的“. .”序列导航到目标文件。使用SQL注入攻击(cwe - 89)最初可能不会成功,但一个错误消息可能揭示了畸形的查询,这将使查询逻辑,甚至可能在查询中使用密码或其他敏感信息。

+的关系
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”研究概念”(cwe - 1000)
自然 类型 ID 的名字
ChildOf 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 755年 异常情况的处理不当
ChildOf 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 200年 暴露敏感信息的未经授权的演员
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 210年 自我包含敏感信息的错误消息
ParentOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 211年 外部生成包含敏感信息的错误消息
ParentOf 变体变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 550年 注册服务器生成的错误消息包含敏感信息
PeerOf 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 1295年 调试消息暴露不必要的信息
光束 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 600年 在Servlet异常
光束 基地Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 756年 失踪的自定义错误页面
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关观点“软件开发”(cwe - 699)
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 199年 信息管理错误
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 389年 错误条件,返回值,状态代码
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+简化映射的相关视图”缺点漏洞发布”(cwe - 1003)
自然 类型 ID 的名字
ChildOf 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 200年 暴露敏感信息的未经授权的演员
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关视图”架构概念”(cwe - 1008)
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1015年 限制访问
+模式的介绍
部分帮助不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
阶段 请注意
架构和设计
实现 实现:造成这一弱点在建筑安全策略的实施。
系统配置
操作
+适用的平台
部分帮助该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。

语言

PHP(通常是普遍的)

Java(通常是普遍的)

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

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

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

这常常会透露敏感信息可能被用于后面的攻击或私人信息存储在服务器中。
+利用的可能性
+示范例子

示例1

在下面的例子中,敏感信息可能是印刷根据异常发生。

(坏的代码)
例如语言:Java
尝试{
/……
}
捕获(异常e) {
System.out.println (e);
}

如果SQL处理相关异常捕获,然后输出可能包含敏感信息,比如SQL查询结构或私人信息。如果这个输出重定向到一个web用户,这可能是一个安全问题。

示例2

这段代码试图打开一个数据库连接,并打印任何发生的异常。

(坏的代码)
例如语言:PHP
尝试{
openDbConnection ();
}
/ /打印异常消息,包括异常消息和配置文件的位置
捕获(异常$ e) {
呼应了例外:,$ e - > getMessage (), ' \ n ';
回声,检查凭证在配置文件:“Mysql_config_location美元,' \ n ';
}

如果发生异常,则打印消息暴露的位置配置文件脚本使用。攻击者可以利用这些信息来目标配置文件(可能利用路径遍历的弱点)。如果文件可以读取,攻击者可以获得凭证访问数据库。攻击者还可以用恶意替换文件,导致应用程序使用一个任意的数据库。

示例3

下面的代码将生成一个错误消息,泄漏的配置文件的完整路径名。

(坏的代码)
例如语言:Perl
$ ConfigDir =“/ home / myprog /配置”;
美元uname = GetUserInput(“用户名”);

#避免CWE-22,cwe - 78,别人。
ExitError(“坏黑客!”)如果(美元uname ! ~ / ^ \ w + /美元);
$ file =“ConfigDir / uname.txt美元”;
如果(!(文件)美元- e) {
ExitError(“错误:文件不存在”);
}

如果这段代码运行在一个服务器上,如一个web应用程序,那么请求人应该不知道什么是配置目录的完整路径名。通过提交一个用户名,不产生一个文件存在,美元攻击者可以得到这个路径名。它可以被用来利用路径遍历或符号链接后可能存在的问题,在应用程序。

示例4

在下面的示例中,该方法getUserBankAccount从数据库检索一个银行帐户对象使用提供的用户名和账号来查询数据库。如果一个SQLException提出查询数据库时,将创建一个错误消息输出到日志文件。

(坏的代码)
例如语言:Java
公共BankAccount getUserBankAccount(用户名的字符串,字符串accountNumber) {
BankAccount userAccount =零;
字符串查询=零;
尝试{
如果(isAuthorizedUser(用户名)){
查询= " SELECT *从账户所有者= "
+用户名+”和accountID = " + accountNumber;
DatabaseManager dbManager = new DatabaseManager ();
连接康涅狄格州= dbManager.getConnection ();
=声明支撑conn.createStatement ();
ResultSet queryResult = stmt.executeQuery(查询);
userAccount = (BankAccount) queryResult.getObject (accountNumber);
}
}捕捉(SQLException ex) {
字符串logMessage = "无法从数据库检索帐户信息,\ nquery:”+查询;
Logger.getLogger (BankManager.class.getName ()) . log(水平。严重,logMessage、交货);
}
返回userAccount;
}

创建的错误信息包括数据库查询的信息可能包含敏感信息的数据库或查询逻辑。在本例中,错误消息将公开数据库中使用的表名和列名。这些数据可以用来简化其他的攻击,如SQL注入(cwe - 89)直接访问数据库。

+观察到的例子
参考 描述
POP3服务器显示密码在多个APOP命令后发送一条错误消息。可能结果从另一个弱点。
程序显示密码错误消息,如果攻击者可以触发特定的数据库错误。
复合材料:高特权运行的应用程序(cwe - 250)允许用户指定一个限制文件过程中,会生成一个解析错误,泄漏文件的内容(cwe - 209)。
存在的用户名可以由请求一个不存在的博客和阅读的错误消息。
直接请求在web应用程序触发库文件路径名泄漏在错误消息。
畸形的登录页面输入原因泄漏IMAP调用失败时的完整路径。
畸形的regexp语法暴露会导致信息的错误消息。
详细的日志存储管理凭证world-readablelog文件中
SSH密码私钥存储在构建日志
+潜在的缓解措施

实施阶段:

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

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

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

实施阶段:

内部处理异常和不显示错误可能包含敏感信息给用户。

实施阶段:

策略:减少攻击表面

使用命名约定和强劲的类型更容易发现敏感数据时使用。当创建结构,对象,或其他复杂的实体,独立的敏感和不敏感数据尽可能多。

有效性:深度防御

注意:这使得它更容易在代码点地方未加密的数据被使用。

阶段:实施;构建和编译

策略:编译和构建硬化

调试信息不应使其进入生产。

阶段:实施;构建和编译

策略:环境硬化

调试信息不应使其进入生产。

阶段:系统配置

可用的地方,配置环境少用详细的错误消息。例如,在PHP中,禁用display_errors设置在配置期间,或者在运行时使用error_reporting()函数。

阶段:系统配置

创建默认的错误页面或信息不泄露任何信息。
+弱点Ordinalities
Ordinality 描述
(其他弱点的弱点存在独立的)
合成
(缺点是通常与其他弱点的存在)
+检测方法

手动分析

这个弱点通常要求使用手动分析特定于域的解释。然而,潜在的错误条件的数量可能太大在有限时间内完全约束。

有效性:高

自动化分析

自动化的方法可以自动检测某些习语,如暴露的堆栈跟踪或路径名,但违反业务规则或隐私的需求通常不是可行的。

有效性:温和

自动动态分析

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

错误条件可以触发压力测试通过调用软件同时从大量的线程或进程,并寻找任何意想不到的行为的证据。

有效性:温和

手动动态分析

识别错误情况不太可能发生在正常使用和触发器。例如,在低内存条件下运行程序,运行特权或权限不足,中断一个事务之前完成,或禁用连接DNS等基本网络服务。监控软件为任何意想不到的行为。如果你触发一个未处理的异常或类似的错误被发现,由应用程序的环境中,它仍可能表明意想不到的条件并不是由应用程序本身。
+会员资格
部分帮助这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 717年 OWASP 2007年十大类别A6——信息泄漏和错误处理不当
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 728年 OWASP十大2004类别A7 -错误处理不当
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 731年 OWASP 2004年十大类别A10——不安全的配置管理
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 751年 2009年前25 -安全组件之间的交互
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 801年 2010年前25 -安全组件之间的交互
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 815年 OWASP十大2010类别A6 -安全错误配置
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 851年 CERT甲骨文安全Java编码标准(2011)第八章-异常行为(ERR)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 867年 2011年处于25 -弱点
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 880年 12 - CERT c++安全编码部分异常和错误处理(ERR)
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 884年 CWE横截面
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 933年 OWASP十大2013类别A5 -安全错误配置
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 963年 SFP二级集群:公开数据
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1032年 OWASP十大2017类别A6 -安全错误配置
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1348年 OWASP 2021年十大类别A04:2021——不安全设计
+分类法映射
映射分类名称 节点ID 适合 映射节点名
意外泄漏敏感信息的错误消息
OWASP十大2007 A6 CWE更具体 信息泄漏和错误处理不当
OWASP十大2004 A7 CWE更具体 错误处理不当
OWASP十大2004 A10 CWE更具体 不安全的配置管理
CERT甲骨文安全Java编码标准(2011) ERR01-J 不允许例外暴露敏感信息
软件故障模式 SFP23 公开的数据
+引用
(ref - 174) Web应用程序安全性财团。“信息泄露”。<http://www.webappsec.org/projects/threat/classes/information_leakage.shtml>。
(ref - 175)布莱恩西方象棋雅各。“安全编程与静态分析”。9.2节,326页。addison - wesley。2007年。
[ref - 176]大卫迈克尔·霍华德和勒布朗。编写安全代码。16章,“将军好实践。”Page 415. 1st Edition. Microsoft Press. 2001-11-13.
迈克尔•霍华德(REF-44)大卫·勒布朗和Viega约翰。软件安全的“24宗罪”。“罪孽11:未能正确处理错误。”Page 183. McGraw-Hill. 2010.
迈克尔•霍华德(REF-44)大卫·勒布朗和Viega约翰。软件安全的“24宗罪”。“罪12:信息泄漏。”Page 191. McGraw-Hill. 2010.
[ref - 179]约翰内斯·乌尔里希。“前25系列——排名16 -信息暴露通过一条错误消息”。无软件安全研究所。2010-03-17。<http://software-security.sans.org/blog/2010/03/17/top-25-series-rank-16-information-exposure-through-an-error-message>。
(ref - 62)马克·多德约翰麦克唐纳和贾斯汀Schuh。“软件安全评估的艺术”。第三章,“过于详细的错误消息”,75页。1版。艾迪生卫斯理》2006。
[REF-18]安全软件公司. .“扣应用程序安全性的过程”。2005年。<https://cwe.mitre.org/documents/sources/TheCLASPApplicationSecurityProcess.pdf>。
+内容的历史
+提交
提交日期 提交者 组织
2006-07-19
+贡献
贡献的日期 贡献者 组织
2022-07-11 尼克·约翰斯顿
识别不正确的语言标签在示范例子。
+修改
修改日期 修饰符 组织
2008-07-01 Eric Dalci Cigital
更新Time_of_Introduction
2008-08-15 Veracode
建议OWASP 2004年排名前十的映射
2008-09-08 CWE内容团队 主教法冠
更新Applicable_Platforms Common_Consequences、关系、Other_Notes Taxonomy_Mappings
2008-10-14 CWE内容团队 主教法冠
更新的关系
2009-01-12 CWE内容团队 主教法冠
更新Demonstrative_Examples、描述、名称、Observed_Examples Other_Notes, Potential_Mitigations,关系,Time_of_Introduction
2009-03-10 CWE内容团队 主教法冠
更新Demonstrative_Examples Potential_Mitigations,关系
2009-12-28 CWE内容团队 主教法冠
更新Demonstrative_Examples、名称、Potential_Mitigations、引用Time_of_Introduction
2010-02-16 CWE内容团队 主教法冠
更新Detection_Factors、引用关系
2010-04-05 CWE内容团队 主教法冠
更新Related_Attack_Patterns
2010-06-21 CWE内容团队 主教法冠
更新Common_Consequences Detection_Factors Potential_Mitigations,引用
2010-09-09 Veracode
建议OWASP排名前十的映射
2010-09-27 CWE内容团队 主教法冠
更新Potential_Mitigations、人际关系
2011-03-29 CWE内容团队 主教法冠
更新Demonstrative_Examples Observed_Examples,关系
2011-06-01 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2011-06-27 CWE内容团队 主教法冠
更新的关系
2011-09-13 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2012-05-11 CWE内容团队 主教法冠
更新引用Related_Attack_Patterns、人际关系
2013-07-17 CWE内容团队 主教法冠
更新的引用
2014-06-23 CWE内容团队 主教法冠
更新的关系
2014-07-30 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2017-11-08 CWE内容团队 主教法冠
更新Applicable_Platforms Modes_of_Introduction、引用关系,Taxonomy_Mappings
2018-03-27 CWE内容团队 主教法冠
更新引用关系
2019-01-03 CWE内容团队 主教法冠
更新Taxonomy_Mappings
2019-06-20 CWE内容团队 主教法冠
更新的关系
2019-09-19 CWE内容团队 主教法冠
更新Demonstrative_Examples Observed_Examples
2020-02-24 CWE内容团队 主教法冠
更新Applicable_Platforms、描述、名称、Observed_Examples引用关系,Weakness_Ordinalities
2020-12-10 CWE内容团队 主教法冠
更新Potential_Mitigations Related_Attack_Patterns
2021-07-20 CWE内容团队 主教法冠
更新的关系
2021-10-28 CWE内容团队 主教法冠
更新的关系
2022-10-13 CWE内容团队 主教法冠
更新Demonstrative_Examples
2023-01-31 CWE内容团队 主教法冠
更新描述
+以前的条目名称
改变日期 以前的条目名称
2009-01-12 错误消息的信息泄漏
2009-12-28 错误消息的信息泄漏
2020-02-24 通过一个错误消息公开的信息
更多的信息是可用的,请选择一个不同的过滤器。
页面最后更新:2023年1月31日