关键信息摘要:CWE-209 - 包含敏感信息的错误消息生成 描述 弱点ID: 209 弱点名称: 包含敏感信息的错误消息生成 简要描述: 产品生成包含敏感信息的错误消息,这些信息可能包括环境、用户或关联数据的敏感信息。 常见后果 影响范围: 保密性 详细信息: 通常情况下,泄露的敏感信息可能被用于发起更聚焦的攻击或暴露私有信息存储位置。例如,利用路径遍历(CWE-22)漏洞可能暴露应用安装的完整路径。SQL注入(CWE-89)攻击可能失败,但错误消息可能会揭示恶意查询的查询逻辑,甚至可能暴露查询中使用的密码或其他敏感信息。 潜在缓解措施 实施阶段: - 确保错误消息只包含对目标受众有用的最小细节,不要泄露确定错误的方法。 - 内部处理异常,不要向用户显示包含潜在敏感信息的错误。 - 采用使在使用敏感数据时更容易识别的命名约定和强类型。 - 调试信息不应进入生产发布。 构建和编译: - 调试信息不应进入生产发布。 系统配置: - 尽可能配置环境使用更少冗余的错误消息。例如,在PHP中,配置时禁用display_errors设置,或运行时使用error_reporting()函数。 - 创建不泄露任何信息的默认错误页或消息。 应用平台 语言: PHP, Java, Perl 类: 非特定语言 利用的可能性 高 示例代码 示例包括Java、PHP和Perl代码,展示了敏感信息可能因异常处理不当而泄露的情况。 观察到的示例 CVE列表:CVE-2008-2049, CVE-2007-5172等,显示了实际软件中因错误消息泄露敏感信息的具体案例。 检测方法 手动分析: 高效性高,但潜在错误状况数量可能过大,难以在有限时间内完全覆盖。 自动化分析: 适度有效,可以自动检测特定模式,如暴露的堆栈追踪或路径名,但通常难以检测到违反业务规则或隐私要求的情况。 动态分析: 通过模糊测试、健壮性测试和故障注入等技术与软件交互,观察异常行为。 自动化静态分析: 通过静态代码分析工具,检查源代码或二进制代码中可能连接外部组件与内部数据交互的潜在漏洞模式。 相关攻击模式 如应用模糊、Oracle加密填充值攻击、查询系统以获取信息和盲SQL注入等,展示了攻击者如何利用此类漏洞获取敏感信息。