CWE-297 · Słabość
Improper Validation of Certificate with Host Mismatch
- Abstrakcja
- Wariant
- Status
- Niekompletny
- Ryzyko wykorzystania
- wysokie
- Dodano
- 19 lipca 2006
- Ostatnia zmiana
- 30 kwietnia 2026
Opis
The product communicates with a host that provides a certificate, but the product does not properly ensure that the certificate is actually associated with that host.
Even if a certificate is well-formed, signed, and follows the chain of trust, it may simply be a valid certificate for a different site than the site that the product is interacting with. In order to ensure data integrity, the certificate must be valid, and it must pertain to the site that is being accessed.
Even if the product attempts to check the hostname, it is still possible to incorrectly check the hostname. For example, attackers could create a certificate with a name that begins with a trusted name followed by a NUL byte, which could cause some string-based comparisons to only examine the portion that contains the trusted name.
Skutki
Access Control
Gain Privileges or Assume Identity
The data read from the system vouched for by the certificate may not be from the expected system.
Authentication, Other
Other
Trust afforded to the system in question - based on the malicious certificate - may allow for spoofing or redirection attacks.
Access Control, Other
Gain Privileges or Assume Identity; Other
If the certificate's host-specific data is not properly checked - such as the Common Name (CN) in the Subject or the Subject Alternative Name (SAN) extension of an X.509 certificate - it may be possible for a redirection or spoofing attack to allow a malicious host with a valid certificate to provide data, impersonating a trusted host.
Zapobieganie
Architecture and Design
Fully check the hostname of the certificate and provide the user with adequate information about the nature of the problem and how to proceed.
Implementation
If certificate pinning is being used, ensure that all relevant properties of the certificate are fully validated before the certificate is pinned, including the hostname.
Przykłady podatności
- CVE-2012-5810 Mobile banking application does not verify hostname, leading to financial loss.
- CVE-2012-5811 Mobile application for printing documents does not verify hostname, allowing attackers to read sensitive documents.
- CVE-2012-5807 Software for electronic checking does not verify hostname, leading to financial loss.
- CVE-2012-3446 Cloud-support library written in Python uses incorrect regular expression when matching hostname.
- CVE-2009-2408 Web browser does not correctly handle '\0' character (NUL) in Common Name, allowing spoofing of https sites.
- CVE-2012-0867 Database program truncates the Common Name during hostname verification, allowing spoofing.
- CVE-2010-2074 Incorrect handling of '\0' character (NUL) in hostname verification allows spoofing.
- CVE-2009-4565 Mail server's incorrect handling of '\0' character (NUL) in hostname verification allows spoofing.
- CVE-2009-3767 LDAP server's incorrect handling of '\0' character (NUL) in hostname verification allows spoofing.
- CVE-2012-5806 Payment processing module does not verify hostname when connecting to PayPal using PHP fsockopen function.
- CVE-2012-2993 Smartphone device does not verify hostname, allowing spoofing of mail services.
- CVE-2012-5804 E-commerce module does not verify hostname when connecting to payment site.
- CVE-2012-5824 Chat application does not validate hostname, leading to loss of privacy.
- CVE-2012-5822 Application uses third-party library that does not validate hostname.
- CVE-2012-5819 Cloud storage management application does not validate hostname.
- CVE-2012-5817 Java library uses JSSE SSLSocket and SSLEngine classes, which do not verify the hostname.
- CVE-2012-5784 SOAP platform does not verify the hostname.
- CVE-2012-5782 PHP library for payments does not verify the hostname.
- CVE-2012-5780 Merchant SDK for payments does not verify the hostname.
- CVE-2003-0355 Web browser does not validate Common Name, allowing spoofing of https sites.
Słabość nadrzędna
Kiedy powstaje
- Implementation — When the product uses certificate pinning, the developer might not properly validate all relevant components of the certificate, such as verifying the hostname, before pinning the certificate. This can make it difficult or expensive to test after the pinning is complete.
- Implementation — REALIZATION: This weakness is caused during implementation of an architectural security tactic.
Dotyczy
Not Language-Specific, Not Technology-Specific, Mobile, Web Based
Źródła
- The CLASP Application Security Process — Secure Software, Inc., 2005
- The Most Dangerous Code in the World: Validating SSL Certificates in Non-Browser Software — Martin Georgiev, Subodh Iyengar, Suman Jana, Rishita Anubhai, Dan Boneh, Vitaly Shmatikov, 2012
- Why Eve and Mallory Love Android: An Analysis of Android SSL (In)Security — Sascha Fahl, Marian Harbach, Thomas Muders, Matthew Smith, Lars Baumgärtner, Bernd Freisleben, 2012
- Secure programming with the OpenSSL API, Part 2: Secure handshake — Kenneth Ballard, 2005
- An Introduction to OpenSSL Programming (Part I) — Eric Rescorla, 2001
- 24 Deadly Sins of Software Security — Michael Howard, David LeBlanc, John Viega, "Sin 23: Improper Use of PKI, Especially SSL." Page 347, McGraw-Hill, 2010
- Spinner: Semi-Automatic Detection of Pinning without Hostname Verification — Chris McMahon Stone, Tom Chothia, Flavio D. Garcia
Wpis z katalogu CWE 4.20.