diff -Nru strongswan-5.5.1/debian/changelog strongswan-5.5.1/debian/changelog --- strongswan-5.5.1/debian/changelog 2017-05-24 18:53:29.000000000 +0000 +++ strongswan-5.5.1/debian/changelog 2017-08-15 18:00:33.000000000 +0000 @@ -1,3 +1,13 @@ +strongswan (5.5.1-1ubuntu3.2) zesty-security; urgency=medium + + * SECURITY UPDATE: Fix RSA signature verification + - debian/patches/CVE-2017-11185.patch: does some + verifications in order to avoid null-point dereference + in src/libstrongswan/gmp/gmp_rsa_public_key.c + - CVE-2017-11185 + + -- Leonidas S. Barbosa Tue, 15 Aug 2017 15:00:33 -0300 + strongswan (5.5.1-1ubuntu3.1) zesty-security; urgency=medium * SECURITY UPDATE: Insufficient Input Validation in gmp Plugin diff -Nru strongswan-5.5.1/debian/patches/CVE-2017-11185.patch strongswan-5.5.1/debian/patches/CVE-2017-11185.patch --- strongswan-5.5.1/debian/patches/CVE-2017-11185.patch 1970-01-01 00:00:00.000000000 +0000 +++ strongswan-5.5.1/debian/patches/CVE-2017-11185.patch 2017-08-15 17:46:48.000000000 +0000 @@ -0,0 +1,50 @@ +From ed282e9a463c068146c945984fdea7828e663861 Mon Sep 17 00:00:00 2001 +From: Tobias Brunner +Date: Mon, 29 May 2017 11:59:34 +0200 +Subject: [PATCH] gmp: Fix RSA signature verification for m >= n + +By definition, m must be <= n-1, we didn't enforce that and because +mpz_export() returns NULL if the passed value is zero a crash could have +been triggered with m == n. + +Fixes CVE-2017-11185. +--- + src/libstrongswan/plugins/gmp/gmp_rsa_public_key.c | 12 +++++++++--- + 1 file changed, 9 insertions(+), 3 deletions(-) + +diff --git a/src/libstrongswan/plugins/gmp/gmp_rsa_public_key.c b/src/libstrongswan/plugins/gmp/gmp_rsa_public_key.c +index 32a72ac9600b..a741f85d4f62 100644 +--- a/src/libstrongswan/plugins/gmp/gmp_rsa_public_key.c ++++ b/src/libstrongswan/plugins/gmp/gmp_rsa_public_key.c +@@ -78,11 +78,17 @@ static chunk_t rsaep(private_gmp_rsa_public_key_t *this, chunk_t data) + mpz_t m, c; + chunk_t encrypted; + +- mpz_init(c); + mpz_init(m); +- + mpz_import(m, data.len, 1, 1, 1, 0, data.ptr); + ++ if (mpz_cmp_ui(m, 0) <= 0 || mpz_cmp(m, this->n) >= 0) ++ { /* m must be <= n-1, but 0 is a valid value, doesn't really make sense ++ * here, though */ ++ mpz_clear(m); ++ return chunk_empty; ++ } ++ ++ mpz_init(c); + mpz_powm(c, m, this->e, this->n); + + encrypted.len = this->k; +@@ -150,7 +156,7 @@ static bool verify_emsa_pkcs1_signature(private_gmp_rsa_public_key_t *this, + */ + + /* check magic bytes */ +- if (*(em.ptr) != 0x00 || *(em.ptr+1) != 0x01) ++ if (em.len < 2 || *(em.ptr) != 0x00 || *(em.ptr+1) != 0x01) + { + goto end; + } +-- +2.7.4 + diff -Nru strongswan-5.5.1/debian/patches/series strongswan-5.5.1/debian/patches/series --- strongswan-5.5.1/debian/patches/series 2017-05-24 18:53:23.000000000 +0000 +++ strongswan-5.5.1/debian/patches/series 2017-08-15 17:47:03.000000000 +0000 @@ -5,3 +5,4 @@ increase-bliss-test-timeout.patch CVE-2017-9022.patch CVE-2017-9023.patch +CVE-2017-11185.patch