REDHAT-BUG-479655: High severity openssl vulnerability
The library routines package for NASL (the scripting language designed for the Nessus security scanner) incorrectly checked the result after calling the DSAdoverify function, allowing a malformed signature to be treated as a good signature rather than as an error. This issue affected the signature checks on DSA keys used with SSL/TLS.
Relevant part of the code (nasl/naslcrypto2.c): 647 if (DSAdoverify((unsigned char)data, datalen, sig, dsa)) 648 retc->x.ival = 1;
Proposed patch: - if (DSAdoverify((unsigned char)data, datalen, sig, dsa)) + if (DSAdoverify((unsigned char)data, datalen, sig, dsa) == 1)
References: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=511517
This issue is related with recent OpenSSL's CVE-2008-5077 flaw.
Affected Software
Event History
Frequently Asked Questions
What condition causes a malformed DSA signature to be accepted?
The affected NASL library code treats any nonzero return from DSA_do_verify as success. A malformed signature can therefore be accepted when the verification function returns an error value rather than the success value of 1.
Which cryptographic operations are affected?
The issue affects NASL signature checks for DSA keys used with SSL/TLS. The provided correction is to accept verification only when DSA_do_verify returns exactly 1.
What can be done if an update is not immediately available?
Apply the indicated code change in nasl/nasl_crypto2.c so that the DSA_do_verify result is compared explicitly to 1 rather than evaluated as a generic nonzero value.