File tree 2 files changed +16
-4
lines changed
2 files changed +16
-4
lines changed Original file line number Diff line number Diff line change @@ -8,6 +8,12 @@ Version 4.3 is almost a re-tagged release of version 4.0. It is the last to
8
8
support Python 2.7. This is now made explicit in the `python_requires` argument
9
9
in `setup.py`. Python 3.4 is not supported by this release.
10
10
11
+ - Fix #165: CVE-2020-25658 - Bleichenbacher-style timing oracle in PKCS#1 v1.5
12
+ decryption code
13
+
14
+
15
+ ## Version 4.4 & 4.6 - released 2020-06-12
16
+
11
17
Two security fixes have also been backported, so 4.3 = 4.0 + these two fixes.
12
18
13
19
- Choose blinding factor relatively prime to N. Thanks Christian Heimes for pointing this out.
Original file line number Diff line number Diff line change 30
30
31
31
import hashlib
32
32
import os
33
+ import sys
34
+ import typing
35
+ from hmac import compare_digest
33
36
34
37
from rsa ._compat import range
35
38
from rsa import common , transform , core
@@ -237,17 +240,20 @@ def decrypt(crypto, priv_key):
237
240
# Detect leading zeroes in the crypto. These are not reflected in the
238
241
# encrypted value (as leading zeroes do not influence the value of an
239
242
# integer). This fixes CVE-2020-13757.
240
- if len (crypto ) > blocksize :
241
- raise DecryptionError ('Decryption failed' )
243
+ crypto_len_bad = len (crypto ) > blocksize
242
244
243
245
# If we can't find the cleartext marker, decryption failed.
244
- if cleartext [0 :2 ] != b'\x00 \x02 ' :
245
- raise DecryptionError ('Decryption failed' )
246
+ cleartext_marker_bad = not compare_digest (cleartext [:2 ], b'\x00 \x02 ' )
246
247
247
248
# Find the 00 separator between the padding and the message
248
249
try :
249
250
sep_idx = cleartext .index (b'\x00 ' , 2 )
250
251
except ValueError :
252
+ sep_idx = - 1
253
+ sep_idx_bad = sep_idx < 0
254
+
255
+ anything_bad = crypto_len_bad | cleartext_marker_bad | sep_idx_bad
256
+ if anything_bad :
251
257
raise DecryptionError ('Decryption failed' )
252
258
253
259
return cleartext [sep_idx + 1 :]
You can’t perform that action at this time.
0 commit comments