|
2 | 2 | OpenSSL CHANGES
|
3 | 3 | _______________
|
4 | 4 |
|
| 5 | + Changes between 1.0.1t and 1.0.1u [22 Sep 2016] |
| 6 | + |
| 7 | + *) OCSP Status Request extension unbounded memory growth |
| 8 | + |
| 9 | + A malicious client can send an excessively large OCSP Status Request |
| 10 | + extension. If that client continually requests renegotiation, sending a |
| 11 | + large OCSP Status Request extension each time, then there will be unbounded |
| 12 | + memory growth on the server. This will eventually lead to a Denial Of |
| 13 | + Service attack through memory exhaustion. Servers with a default |
| 14 | + configuration are vulnerable even if they do not support OCSP. Builds using |
| 15 | + the "no-ocsp" build time option are not affected. |
| 16 | + |
| 17 | + This issue was reported to OpenSSL by Shi Lei (Gear Team, Qihoo 360 Inc.) |
| 18 | + (CVE-2016-6304) |
| 19 | + [Matt Caswell] |
| 20 | + |
| 21 | + *) In order to mitigate the SWEET32 attack, the DES ciphers were moved from |
| 22 | + HIGH to MEDIUM. |
| 23 | + |
| 24 | + This issue was reported to OpenSSL Karthikeyan Bhargavan and Gaetan |
| 25 | + Leurent (INRIA) |
| 26 | + (CVE-2016-2183) |
| 27 | + [Rich Salz] |
| 28 | + |
| 29 | + *) OOB write in MDC2_Update() |
| 30 | + |
| 31 | + An overflow can occur in MDC2_Update() either if called directly or |
| 32 | + through the EVP_DigestUpdate() function using MDC2. If an attacker |
| 33 | + is able to supply very large amounts of input data after a previous |
| 34 | + call to EVP_EncryptUpdate() with a partial block then a length check |
| 35 | + can overflow resulting in a heap corruption. |
| 36 | + |
| 37 | + The amount of data needed is comparable to SIZE_MAX which is impractical |
| 38 | + on most platforms. |
| 39 | + |
| 40 | + This issue was reported to OpenSSL by Shi Lei (Gear Team, Qihoo 360 Inc.) |
| 41 | + (CVE-2016-6303) |
| 42 | + [Stephen Henson] |
| 43 | + |
| 44 | + *) Malformed SHA512 ticket DoS |
| 45 | + |
| 46 | + If a server uses SHA512 for TLS session ticket HMAC it is vulnerable to a |
| 47 | + DoS attack where a malformed ticket will result in an OOB read which will |
| 48 | + ultimately crash. |
| 49 | + |
| 50 | + The use of SHA512 in TLS session tickets is comparatively rare as it requires |
| 51 | + a custom server callback and ticket lookup mechanism. |
| 52 | + |
| 53 | + This issue was reported to OpenSSL by Shi Lei (Gear Team, Qihoo 360 Inc.) |
| 54 | + (CVE-2016-6302) |
| 55 | + [Stephen Henson] |
| 56 | + |
| 57 | + *) OOB write in BN_bn2dec() |
| 58 | + |
| 59 | + The function BN_bn2dec() does not check the return value of BN_div_word(). |
| 60 | + This can cause an OOB write if an application uses this function with an |
| 61 | + overly large BIGNUM. This could be a problem if an overly large certificate |
| 62 | + or CRL is printed out from an untrusted source. TLS is not affected because |
| 63 | + record limits will reject an oversized certificate before it is parsed. |
| 64 | + |
| 65 | + This issue was reported to OpenSSL by Shi Lei (Gear Team, Qihoo 360 Inc.) |
| 66 | + (CVE-2016-2182) |
| 67 | + [Stephen Henson] |
| 68 | + |
| 69 | + *) OOB read in TS_OBJ_print_bio() |
| 70 | + |
| 71 | + The function TS_OBJ_print_bio() misuses OBJ_obj2txt(): the return value is |
| 72 | + the total length the OID text representation would use and not the amount |
| 73 | + of data written. This will result in OOB reads when large OIDs are |
| 74 | + presented. |
| 75 | + |
| 76 | + This issue was reported to OpenSSL by Shi Lei (Gear Team, Qihoo 360 Inc.) |
| 77 | + (CVE-2016-2180) |
| 78 | + [Stephen Henson] |
| 79 | + |
| 80 | + *) Pointer arithmetic undefined behaviour |
| 81 | + |
| 82 | + Avoid some undefined pointer arithmetic |
| 83 | + |
| 84 | + A common idiom in the codebase is to check limits in the following manner: |
| 85 | + "p + len > limit" |
| 86 | + |
| 87 | + Where "p" points to some malloc'd data of SIZE bytes and |
| 88 | + limit == p + SIZE |
| 89 | + |
| 90 | + "len" here could be from some externally supplied data (e.g. from a TLS |
| 91 | + message). |
| 92 | + |
| 93 | + The rules of C pointer arithmetic are such that "p + len" is only well |
| 94 | + defined where len <= SIZE. Therefore the above idiom is actually |
| 95 | + undefined behaviour. |
| 96 | + |
| 97 | + For example this could cause problems if some malloc implementation |
| 98 | + provides an address for "p" such that "p + len" actually overflows for |
| 99 | + values of len that are too big and therefore p + len < limit. |
| 100 | + |
| 101 | + This issue was reported to OpenSSL by Guido Vranken |
| 102 | + (CVE-2016-2177) |
| 103 | + [Matt Caswell] |
| 104 | + |
| 105 | + *) Constant time flag not preserved in DSA signing |
| 106 | + |
| 107 | + Operations in the DSA signing algorithm should run in constant time in |
| 108 | + order to avoid side channel attacks. A flaw in the OpenSSL DSA |
| 109 | + implementation means that a non-constant time codepath is followed for |
| 110 | + certain operations. This has been demonstrated through a cache-timing |
| 111 | + attack to be sufficient for an attacker to recover the private DSA key. |
| 112 | + |
| 113 | + This issue was reported by César Pereida (Aalto University), Billy Brumley |
| 114 | + (Tampere University of Technology), and Yuval Yarom (The University of |
| 115 | + Adelaide and NICTA). |
| 116 | + (CVE-2016-2178) |
| 117 | + [César Pereida] |
| 118 | + |
| 119 | + *) DTLS buffered message DoS |
| 120 | + |
| 121 | + In a DTLS connection where handshake messages are delivered out-of-order |
| 122 | + those messages that OpenSSL is not yet ready to process will be buffered |
| 123 | + for later use. Under certain circumstances, a flaw in the logic means that |
| 124 | + those messages do not get removed from the buffer even though the handshake |
| 125 | + has been completed. An attacker could force up to approx. 15 messages to |
| 126 | + remain in the buffer when they are no longer required. These messages will |
| 127 | + be cleared when the DTLS connection is closed. The default maximum size for |
| 128 | + a message is 100k. Therefore the attacker could force an additional 1500k |
| 129 | + to be consumed per connection. By opening many simulataneous connections an |
| 130 | + attacker could cause a DoS attack through memory exhaustion. |
| 131 | + |
| 132 | + This issue was reported to OpenSSL by Quan Luo. |
| 133 | + (CVE-2016-2179) |
| 134 | + [Matt Caswell] |
| 135 | + |
| 136 | + *) DTLS replay protection DoS |
| 137 | + |
| 138 | + A flaw in the DTLS replay attack protection mechanism means that records |
| 139 | + that arrive for future epochs update the replay protection "window" before |
| 140 | + the MAC for the record has been validated. This could be exploited by an |
| 141 | + attacker by sending a record for the next epoch (which does not have to |
| 142 | + decrypt or have a valid MAC), with a very large sequence number. This means |
| 143 | + that all subsequent legitimate packets are dropped causing a denial of |
| 144 | + service for a specific DTLS connection. |
| 145 | + |
| 146 | + This issue was reported to OpenSSL by the OCAP audit team. |
| 147 | + (CVE-2016-2181) |
| 148 | + [Matt Caswell] |
| 149 | + |
| 150 | + *) Certificate message OOB reads |
| 151 | + |
| 152 | + In OpenSSL 1.0.2 and earlier some missing message length checks can result |
| 153 | + in OOB reads of up to 2 bytes beyond an allocated buffer. There is a |
| 154 | + theoretical DoS risk but this has not been observed in practice on common |
| 155 | + platforms. |
| 156 | + |
| 157 | + The messages affected are client certificate, client certificate request |
| 158 | + and server certificate. As a result the attack can only be performed |
| 159 | + against a client or a server which enables client authentication. |
| 160 | + |
| 161 | + This issue was reported to OpenSSL by Shi Lei (Gear Team, Qihoo 360 Inc.) |
| 162 | + (CVE-2016-6306) |
| 163 | + [Stephen Henson] |
| 164 | + |
5 | 165 | Changes between 1.0.1s and 1.0.1t [3 May 2016]
|
6 | 166 |
|
7 | 167 | *) Prevent padding oracle in AES-NI CBC MAC check
|
@@ -8195,7 +8355,7 @@ des-cbc 3624.96k 5258.21k 5530.91k 5624.30k 5628.26k
|
8195 | 8355 |
|
8196 | 8356 | *) Source code cleanups: use const where appropriate, eliminate casts,
|
8197 | 8357 | use void * instead of char * in lhash.
|
8198 |
| - [Ulf Möller] |
| 8358 | + [Ulf Möller] |
8199 | 8359 |
|
8200 | 8360 | *) Bugfix: ssl3_send_server_key_exchange was not restartable
|
8201 | 8361 | (the state was not changed to SSL3_ST_SW_KEY_EXCH_B, and because of
|
|
0 commit comments