Embargoed until Jan 7th 2009.
Incorrect checks for malformed signatures
Several functions inside NTP incorrectly checked the result after calling the OpenSSL EVP_VerifyFinal function, allowing a malformed signature to be treated as a good signature rather than as an error.
A remote attacker who is in control of a malicious server or who can use a 'man in the middle' attack could present a malformed signature from a certificate chain to a vulnerable client, bypassing validation. This issue would only affect non-default installations that are set up to use cryptography to authenticate clients and servers to each other.
This vulnerability is tracked as CVE-2009-0021 and is similar to
CVE-2008-5077 which affects OpenSSL itself.
The OpenSSL security team would like to thank the Google Security Team
for reporting this issue.
Projects and products using OpenSSL should audit any use of the
routine EVP_VerifyFinal() to ensure that the return code is being
correctly handled. As documented, this function returns 1 for a
successful verification, 0 for failure, and -1 for an error.
I don't have a patch for this but it is easy to spot the problem in the source.
Public now via oCERT advisory:
Fixed upstream in ntp 4.2.4p6, quoting Changelog:
* [Sec 1111] Fix incorrect check of EVP_VerifyFinal()'s return value.
and NEWS file:
NTP 4.2.4p6 (Harlan Stenn <stenn>, 2009/01/07)
Focus: Security Fix
This release fixes oCERT.org's CVE-2009-0021, a vulnerability affecting
the OpenSSL library relating to the incorrect checking of the return
value of EVP_VerifyFinal function.
Credit for finding this issue goes to the Google Security Team for
finding the original issue with OpenSSL, and to ocert.org for finding
the problem in NTP and telling us about it.
ntp-4.2.4p6-1.fc9 has been pushed to the Fedora 9 stable repository. If problems still persist, please make note of it in this bug report.
ntp-4.2.4p6-1.fc10 has been pushed to the Fedora 10 stable repository. If problems still persist, please make note of it in this bug report.
This issue was addressed in:
Red Hat Enterprise Linux: