漏洞概述 漏洞名称: CWE-295: Improper Certificate Validation(不正确的证书验证) 描述: 产品未验证或错误地验证了证书。这可能导致攻击者通过干扰通信路径中的主机和客户端之间的通信,欺骗受信任的实体。产品可能会连接到恶意主机,同时认为它是受信任的主机,或者产品可能会接收到看似来自受信任主机的欺骗数据。 影响范围 影响范围: 完整性、身份验证 具体影响: 当证书无效或恶意时,攻击者可能通过干扰通信路径中的主机和客户端之间的通信,欺骗受信任的实体。产品可能会连接到恶意主机,同时认为它是受信任的主机,或者产品可能会接收到看似来自受信任主机的欺骗数据。 修复方案 架构和设计: 证书应被仔细管理和检查,以确保数据是使用预期所有者的公钥加密的。 实现: 如果使用证书固定,确保在固定证书之前完全验证证书的所有相关属性,包括主机名。 POC代码 示例1 说明: 在这种情况下,由于证书是自签名的,没有外部权威可以证明主机的身份。程序可能与欺骗主机的不同系统进行通信,例如通过DNS缓存中毒或中间人攻击(MITM)修改服务器到客户端的流量。 示例2 说明: 尽管“verify”步骤返回X509_V_OK,但此步骤不包括检查通用名称与主机名的匹配。也就是说,没有保证证书是为所需主机颁发的。SSL连接可能与提供有效证书的恶意主机建立。 示例3 说明: 如果调用SSL_get_verify_result()返回X509_V_ERR_CERT_HAS_EXPIRED,这意味着证书已过期。随着时间的推移,攻击者利用证书的机会增加。 示例4 说明: 由于此代码不使用SSL_get_verify_result()来检查证书,它可以接受已被吊销的证书(X509_V_ERR_CERT_REVOKED)。软件可能与恶意主机通信。 示例5 说明: 注意代码不调用SSL_get_verify_result(),这有效地禁用了检查证书的验证步骤。 其他信息 相关漏洞: 包括不正确的身份验证、不正确的证书链信任、不正确的证书验证等。 背景细节: 证书是关联身份(主体)到加密密钥的令牌。证书可用于检查公钥是否属于假设的所有者。 引入模式: 在架构和设计阶段,实现过程中可能导致此弱点。 适用平台: 非语言特定、非技术特定、Web基础、移动。 检测技术: 包括字节码弱点分析、二进制/字节码反汇编、手动源代码审查等。 成员关系: 与OWASP Top Ten 2004、2017、2021等分类相关。 漏洞映射说明: 此CWE条目在基本抽象级别,适合映射到漏洞的根本原因。 分类映射: 与OWASP Top Ten 2004的A10 - 不安全的配置管理相关。 相关攻击模式: 包括创建假冒证书颁发机构证书、通过不正确的验证进行签名欺骗等。 参考文献: 包括Sascha Fahl, Marian Harbach, Thomas Muders, Matthew Smith, Lars Baumgartner, Bernd Freisleben的《Why Eve and Mallory Love Android: An Analysis of Android SSL (In)Security》等。 内容历史: 提交日期为2006年7月19日,由CWE社区提交。