oCERT-2008-016 multiple OpenSSL signature verification API misuse

Description:

Several functions inside the OpenSSL library incorrectly check the result after calling the EVP_VerifyFinal function.

This bug allows a malformed signature to be treated as a good signature rather than as an error. This issue affects the signature checks on DSA and ECDSA keys used with SSL/TLS.

The flaw may be exploited by a malicious server or a man-in-the-middle attack that presents a malformed SSL/TLS signature from a certificate chain to a vulnerable client, bypassing validation.

A patch fixing the issue with proper return code checking and further important recommendations are described in the original OpenSSL Team advisory.

At the request of the OpenSSL team, oCERT has aided in the remediation coordination for other projects with similar API misuse vulnerabilities. In addition to EVP_VerifyFinal, the return codes from DSA_verify and DSA_do_verify functions were being incorrectly validated, and packages doing so are affected in a similar fashion as OpenSSL.

Affected version:

OpenSSL <= 0.9.8i [1]

The following packages were identified as affected by the same OpenSSL vulnerability, as they use OpenSSL EVP_VerifyFinal function and incorrectly check the return code.

NTP <= 4.2.4p5 (production), <= 4.2.5p150 (development)

Sun GridEngine <= 5.3

Gale <= 0.99

OpenEvidence <= 1.0.6

Belgian eID middleware - eidlib <= 2.6.0 [2]

Freedom Network Server <= 2.x

The following packages were identified as affected by a vulnerability similar to the OpenSSL one, as they use OpenSSL DSA_verify and/or DSA_do_verify function and incorrectly check the return code.

BIND <= 9.4.3

BIND 9.0 (all versions), 9.1 (all versions), >= 9.3.0 & <= 9.3.6, >= 9.4.0 & <= 9.4.3, 9.5.0, 9.5.1, 9.6.0

Lasso <= 2.2.1

ZXID <= 0.29

1 - use of OpenSSL as an SSL/TLS client when connecting to a server whose certificate uses an RSA key is NOT affected. Verification of client certificates by OpenSSL servers for any key type is NOT affected.

2 - Belgian eID middleware latest versions are not available in source form, therefore we cannot confirm if they are affected

Fixed version:

OpenSSL >= 0.9.8j

NTP >= 4.2.4p6 (production), >= 4.2.5p153 (development)

Sun GridEngine >= 6.0

Gale, N/A

OpenEvidence, N/A

Belgian eID middleware - eidlib, N/A

Freedom Network Server, N/A

BIND >= 9.3.6-P1, >= 9.4.3-P1, >= 9.5.1-P1, >= 9.6.0-P1

Lasso >= 2.2.2

ZXID, N/A

Credit: Google Security Team (for the original OpenSSL issue).

CVE: CVE-2008-5077 (OpenSSL), CVE-2009-0021 (NTP), CVE-2009-0025 (BIND) CVE-2009-0046 (Sun GridEngine), CVE-2009-0047 (Gale), CVE-2009-0048 (OpenEvidence), CVE-2009-0049 (Belgian eID middleware (eidlib)), CVE-2009-0050 (Lasso), CVE-2009-0051 (ZXID)

Timeline:

2008-12-16: OpenSSL Security Team requests coordination aid from oCERT
2008-12-16: oCERT investigates packages affected by similar issues
2008-12-16: contacted affected vendors
2008-12-17: investigation expanded to DSA verification, added BIND, Lasso and ZXID to affected packages
2008-12-18: contacted additional affected vendors
2009-01-05: status updates and patch dissemination to affected vendors
2009-01-05: confirmation from BIND of issue and fix
2009-01-06: requested CVE assignment for BIND
2009-01-07: advisory release
2009-01-07: additional CVE assignments noted
2009-01-08: added reference to BIND advisory
2009-01-11: corrected affected version reference for BIND

References:
OpenSSL Security Advisory [07-Jan-2009]
BIND Security Vulnerability