J-Security Center

Title: Gnu Transport Layer Security Library X.509 Certificate Verification Denial Of Service Vulnerability

Severity: HIGH

Description:

Gnu Transport Layer Security Library (GnuTLS) is a library which attempts to provide a secure layer, over a reliable transport layer. It provides support for authentication using both X.509 certificates and OpenPGP keys.

Reportedly Gnu Transport Layer Security Library (GnuTLS) is affected by a X.509 certificate verification denial of service vulnerability. This issue is due to a design error that causes the application to attempt to verify invalid X.509 certificates.

The problem is reported to present itself when an application implementing the affected library attempts to verify a certificate chain. The correct implementation of the X.509 certificate verification procedure attempts to verify a certificate chain starting from the last root certificate, and proceeding to the initial certificate; ensures that only signatures signed by trusted certificates are checked, and so only trusted keys are processed.

Apparently GnuTLS implements the algorithm in reverse, potentially forcing the application to allocate large amounts of CPU processing time verifying all certificates signed with arbitrary RSA/DSA keys chosen by an attacker; this method forces an application to check all keys for all certificates. It has also been reported that GnuTLS fails to compare the verify depth with the number of certificates included in the chain, facilitating the attempted validation of invalid certificate chains.

This issue could be leveraged to carry out a sustained denial of service attack by specifying excessively large key values; the complexity for verification is exponentially related to the key size.

This issue would allow an attacker to cause an affected application to consume CPU resources and hang while attempted verification takes place, denying service to legitimate users.

Affected Products:

  • GNU GnuTLS 1.0.0
  • GNU GnuTLS 1.0.1
  • GNU GnuTLS 1.0.14
  • GNU GnuTLS 1.0.15
  • GNU GnuTLS 1.0.16
  • GNU GnuTLS 1.0.2
  • GNU GnuTLS 1.0.3
  • GNU GnuTLS 1.0.4
  • GNU GnuTLS 1.0.5
  • GNU GnuTLS 1.0.6
  • GNU GnuTLS 1.0.7
  • GNU GnuTLS 1.0.8
  • GNU GnuTLS 1.0.9

References:

Juniper Networks provides this content via a wide variety of sources and production methods. If notified of errors or omissions in the content of this page, Juniper Networks, at its discretion, will modify or remove the page or leave the content as is, depending on various factors including but not limited to the reputation and authority of the party providing the notification. Please use the contact information displayed elsewhere on this page to report any errors or omissions regarding the content on this page.