Skip to content

Commit 4cabf69

Browse files
committed
[release-branch.go1.13-security] crypto/dsa: prevent bad public keys from causing panic
dsa.Verify might currently use a nil s inverse in a multiplication if the public key contains a non-prime Q, causing a panic. Change this to check that the mod inverse exists before using it. Fixes CVE-2019-17596 Change-Id: I94d5f3cc38f1b5d52d38dcb1d253c71b7fd1cae7 Reviewed-on: https://team-review.git.corp.google.com/c/golang/go-private/+/572809 Reviewed-by: Filippo Valsorda <valsorda@google.com> (cherry picked from commit 9119dfb0511326d4485b248b83d4fde19c95d0f7) Reviewed-on: https://team-review.git.corp.google.com/c/golang/go-private/+/575233
1 parent b17fd8e commit 4cabf69

File tree

1 file changed

+3
-0
lines changed

1 file changed

+3
-0
lines changed

src/crypto/dsa/dsa.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -279,6 +279,9 @@ func Verify(pub *PublicKey, hash []byte, r, s *big.Int) bool {
279279
}
280280

281281
w := new(big.Int).ModInverse(s, pub.Q)
282+
if w == nil {
283+
return false
284+
}
282285

283286
n := pub.Q.BitLen()
284287
if n&7 != 0 {

0 commit comments

Comments
 (0)