Skip to content

Commit

Permalink
Fix SRP buffer overrun vulnerability.
Browse files Browse the repository at this point in the history
Invalid parameters passed to the SRP code can be overrun an internal
buffer. Add sanity check that g, A, B < N to SRP code.

Thanks to Sean Devlin and Watson Ladd of Cryptography Services, NCC
Group for reporting this issue.
  • Loading branch information
snhenson authored and mattcaswell committed Aug 6, 2014
1 parent 80bd7b4 commit 4a23b12
Showing 1 changed file with 6 additions and 0 deletions.
6 changes: 6 additions & 0 deletions crypto/srp/srp_lib.c
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,9 @@ static BIGNUM *srp_Calc_k(BIGNUM *N, BIGNUM *g)
int longg ;
int longN = BN_num_bytes(N);

if (BN_ucmp(g, N) >= 0)
return NULL;

if ((tmp = OPENSSL_malloc(longN)) == NULL)
return NULL;
BN_bn2bin(N,tmp) ;
Expand Down Expand Up @@ -121,6 +124,9 @@ BIGNUM *SRP_Calc_u(BIGNUM *A, BIGNUM *B, BIGNUM *N)
if ((A == NULL) ||(B == NULL) || (N == NULL))
return NULL;

if (BN_ucmp(A, N) >= 0 || BN_ucmp(B, N) >= 0)
return NULL;

longN= BN_num_bytes(N);

if ((cAB = OPENSSL_malloc(2*longN)) == NULL)
Expand Down

0 comments on commit 4a23b12

Please sign in to comment.