Exponent 3 damage spreads...
Kuehn, Ulrich
Ulrich.Kuehn at telekom.de
Wed Sep 27 05:58:49 EDT 2006
> From: Ralf-Philipp Weinmann
> [...]
> Relevant files to this problem that were patched turned out
> to be security/nss/lib/cryptohi/secvfy.c and
> nss/lib/util/secdig.c. Have a look at the function
> DecryptSigBlock() in secdig.c, lines 92-95
>
> > /* make sure the "parameters" are not too bogus. */
> > if (di->digestAlgorithm.parameters.len > 2) {
> > goto sigloser;
> > }
>
> Quite amused, we also noted the following:
>
> < /* XXX Check that tag is an appropriate algorithm? */
> ---
> > /* Check that tag is an appropriate algorithm */
> > if (tag == SEC_OID_UNKNOWN) {
> > goto sigloser;
> > }
>
> This means, that before the patch was applied, NSS indeed was
> vulnerable to Kaliski's OID attack.
>
While the patch for Firefox obviously fixed the bugs in security/nss/lib/cryptohi/<whatever>,
There is another pkcs#1-padding check in security/nss/lib/softtoken/rsawrapr.c, see function
RSA_CheckSign() and RSA_CheckSignRecover(). Does anybody know what these functions are used for?
I tried to find that out, but did not get very far...
(Hal Finney also noted these functions some days ago).
It seems to be another creative bug:
/*
* check the padding that was used
*/
if (buffer[0] != 0 || buffer[1] != 1)
goto loser;
for (i = 2; i < modulus_len - hash_len - 1; i++) {
if (buffer[i] == 0)
break;
if (buffer[i] != 0xff)
goto loser;
}
/*
* make sure we get the same results
*/
if (PORT_Memcmp(buffer + modulus_len - hash_len, hash, hash_len) != 0)
goto loser;
So it would accept a padding ( 00 || 01 || 00 || garbage || hash ), which is not exactly what pkcs#1 says :)
The same loop is used in RSA_CheckSignRecover(), but I did not succeed in finding out what it is exactly used for and if that is a safe application of the rather wrong code.
Cheers,
Ulrich
---------------------------------------------------------------------
The Cryptography Mailing List
Unsubscribe by sending "unsubscribe cryptography" to majordomo at metzdowd.com
More information about the cryptography
mailing list