描述
产品生成一个错误消息,包括环境的敏感信息,用户,或相关的数据。
扩展描述
自己的敏感信息可能有价值的信息(如密码),或者它可能是有用的推出,更严重的攻击。错误信息可以以不同的方式创建:
- 自身:源代码错误消息,并将其显式结构
- 外部产生的外部环境,如语言翻译,处理错误和构造自己的消息,其内容不是由程序员直接控制
攻击者可以使用错误消息的内容帮助启动另一个,更有针对性的攻击。例如,一个试图利用路径遍历的弱点(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定义显示类似的弱点,用户可能想要探索。
此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
简化映射的相关视图”缺点漏洞发布”(cwe - 1003)
自然 |
类型 |
ID |
的名字 |
ChildOf |
类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 |
200年 |
暴露敏感信息的未经授权的演员 |
此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
相关视图”架构概念”(cwe - 1008)
自然 |
类型 |
ID |
的名字 |
MemberOf |
类别——CWE条目包含一组其他条目,共享一个共同的特点。 |
1015年 |
限制访问 |
模式的介绍
不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
阶段 |
请注意 |
架构和设计 |
|
实现 |
实现:造成这一弱点在建筑安全策略的实施。 |
系统配置 |
|
操作 |
|
常见的后果
这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
范围 |
影响 |
可能性 |
保密
|
这常常会透露敏感信息可能被用于后面的攻击或私人信息存储在服务器中。 |
|
利用的可能性
示范例子
示例1
在下面的例子中,敏感信息可能是印刷根据异常发生。
尝试{
/…… } 捕获(异常e) {
System.out.println (e); }
如果SQL处理相关异常捕获,然后输出可能包含敏感信息,比如SQL查询结构或私人信息。如果这个输出重定向到一个web用户,这可能是一个安全问题。
示例2
这段代码试图打开一个数据库连接,并打印任何发生的异常。
尝试{
openDbConnection (); }
/ /打印异常消息,包括异常消息和配置文件的位置
捕获(异常$ e) {
呼应了例外:,$ e - > getMessage (), ' \ n '; 回声,检查凭证在配置文件:“Mysql_config_location美元,' \ n '; }
如果发生异常,则打印消息暴露的位置配置文件脚本使用。攻击者可以利用这些信息来目标配置文件(可能利用路径遍历的弱点)。如果文件可以读取,攻击者可以获得凭证访问数据库。攻击者还可以用恶意替换文件,导致应用程序使用一个任意的数据库。
示例3
下面的代码将生成一个错误消息,泄漏的配置文件的完整路径名。
$ ConfigDir =“/ home / myprog /配置”; 美元uname = GetUserInput(“用户名”);
#避免CWE-22,cwe - 78,别人。
ExitError(“坏黑客!”)如果(美元uname ! ~ / ^ \ w + /美元); $ file =“ConfigDir / uname.txt美元”; 如果(!(文件)美元- e) {
ExitError(“错误:文件不存在”); } …
如果这段代码运行在一个服务器上,如一个web应用程序,那么请求人应该不知道什么是配置目录的完整路径名。通过提交一个用户名,不产生一个文件存在,美元攻击者可以得到这个路径名。它可以被用来利用路径遍历或符号链接后可能存在的问题,在应用程序。
示例4
在下面的示例中,该方法getUserBankAccount从数据库检索一个银行帐户对象使用提供的用户名和账号来查询数据库。如果一个SQLException提出查询数据库时,将创建一个错误消息输出到日志文件。
公共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命令后发送一条错误消息。可能结果从另一个弱点。 |
|
程序显示密码错误消息,如果攻击者可以触发特定的数据库错误。 |
|
|
|
存在的用户名可以由请求一个不存在的博客和阅读的错误消息。 |
|
直接请求在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 - 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 - 62)马克·多德约翰麦克唐纳和贾斯汀Schuh。“软件安全评估的艺术”。第三章,“过于详细的错误消息”,75页。1版。艾迪生卫斯理》2006。 |
|
内容的历史
提交 |
提交日期 |
提交者 |
组织 |
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 |
通过一个错误消息公开的信息 |
|
|