The product uses a cryptographic key or password past its
expiration date, which diminishes its safety significantly by increasing the
timing window for cracking attacks against that key.
Time of Introduction
Architecture and Design
Applicable Platforms
Languages
All
Common Consequences
Scope
Effect
Authentication
The cryptographic key in question may be compromised, providing a
malicious user with a method for authenticating as the victim.
Likelihood of Exploit
Low
Demonstrative Examples
Example 1
(Bad Code)
C and C++
if (!(cert = SSL_get_peer(certificate(ssl)) || !host)
foo=SSL_get_verify_result(ssl);
if ((X509_V_OK==foo) || (X509_V_ERRCERT_NOT_YET_VALID==foo)) //do
stuff
Potential Mitigations
Phase
Description
Architecture and Design
Adequate consideration should be put in to the user interface in order
to notify users previous to the key's expiration, to explain the
importance of new key generation and to walk users through the process
as painlessly as possible.
Run time: Users must heed warnings and generate new keys and passwords
when they expire.
Other Notes
While the expiration of keys does not necessarily ensure that they are
compromised, it is a significant concern that keys which remain in use for
prolonged periods of time have a decreasing probability of integrity. For
this reason, it is important to replace keys within a period of time
proportional to their strength.