We have two places where the current cap on BIGNUM sizes (64 MiB) is too large, both involving Montgomery reduction: bn_mul_mont allocates a spare value on the stack, and BN_mod_exp_mont_constime needs to allocate a buffer of up to 64 contiguous values, which may overflow an int. Make BN_MONT_CTX reject any BIGNUM larger than 8 KiB. This is 65,536 bits which is well above our maximum RSA key size, 16,384 bits. Ideally we'd just apply this in bn_wexpand, to all BIGNUMs across the board, but we found one caller that depends on creating an 8 MiB BIGNUM. Update-Note: This will not affect any cryptography implemented by BoringSSL, such as RSA, but other callers may run into this limit. If necessary, we can raise this a bit, but the stack allocation means we don't want to go *significantly* beyond what's in this CL. Fixed: 541 Change-Id: Ia00f3ea6714a5042434f446943db55a533752dc5 Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/55266 Reviewed-by: Bob Beck <bbe@google.com> Commit-Queue: David Benjamin <davidben@google.com>fips-20230428
parent
de434576d7
commit
db10ae5036
4 changed files with 50 additions and 3 deletions
Loading…
Reference in new issue