Package: libssh / 0.4.5-3+squeeze3

CVE-2016-0739.patch Patch series | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
From: Huzaifa Sidhpurwala <huzaifas@redhat.com>
Date: Mon, 22 Feb 2016 21:25:42 +0100
Subject: libssh: bits/bytes confuson resulting in truncated Difffie-Hellman secret length

[benh: Backported to squeeze: only key exchange type is DH group 1 SHA-1]
---
--- a/libssh/dh.c
+++ b/libssh/dh.c
@@ -229,15 +229,17 @@ void ssh_print_hexa(const char *descr, c
 }
 
 int dh_generate_x(ssh_session session) {
+  int keysize = 1023;
+
   session->next_crypto->x = bignum_new();
   if (session->next_crypto->x == NULL) {
     return -1;
   }
 
 #ifdef HAVE_LIBGCRYPT
-  bignum_rand(session->next_crypto->x, 128);
+  bignum_rand(session->next_crypto->x, keysize);
 #elif defined HAVE_LIBCRYPTO
-  bignum_rand(session->next_crypto->x, 128, 0, -1);
+  bignum_rand(session->next_crypto->x, keysize, -1, 0);
 #endif
 
   /* not harder than this */
@@ -250,15 +258,17 @@ int dh_generate_x(ssh_session session) {
 
 /* used by server */
 int dh_generate_y(ssh_session session) {
+  int keysize = 1023;
+
     session->next_crypto->y = bignum_new();
   if (session->next_crypto->y == NULL) {
     return -1;
   }
 
 #ifdef HAVE_LIBGCRYPT
-  bignum_rand(session->next_crypto->y, 128);
+  bignum_rand(session->next_crypto->y, keysize);
 #elif defined HAVE_LIBCRYPTO
-  bignum_rand(session->next_crypto->y, 128, 0, -1);
+  bignum_rand(session->next_crypto->y, keysize, -1, 0);
 #endif
 
   /* not harder than this */