Package: release.debian.org Severity: normal User: release.debian....@packages.debian.org Usertags: unblock
Please unblock package libgcrypt20, the upload features the following changes: * Refresh debian/upstream/signing-key.asc, key-expiry-dates bumped. * Pull two fixes from gcrypt 1.7.7 bugfix release: + 30_gcry177_01-ecc-Store-EdDSA-session-key-in-secure-memory.patch Fix possible timing attack on EdDSA session key. + 30_gcry177_02-secmem-Fix-SEGV-and-stat-calculation.patch Fix long standing bug in secure memory implementation which could lead to a segv on free. unblock libgcrypt20/1.7.6-2 Thanks, cu Andreas -- `What a good friend you are to him, Dr. Maturin. His other friends are so grateful to you.' `I sew his ears on from time to time, sure'
diff -Nru libgcrypt20-1.7.6/debian/changelog libgcrypt20-1.7.6/debian/changelog --- libgcrypt20-1.7.6/debian/changelog 2017-01-26 11:58:32.000000000 +0100 +++ libgcrypt20-1.7.6/debian/changelog 2017-06-03 10:58:36.000000000 +0200 @@ -1,3 +1,15 @@ +libgcrypt20 (1.7.6-2) unstable; urgency=high + + * Refresh debian/upstream/signing-key.asc, key-expiry-dates bumped. + * Pull two fixes from gcrypt 1.7.7 bugfix release: + + 30_gcry177_01-ecc-Store-EdDSA-session-key-in-secure-memory.patch + Fix possible timing attack on EdDSA session key. + + 30_gcry177_02-secmem-Fix-SEGV-and-stat-calculation.patch + Fix long standing bug in secure memory implementation which could lead + to a segv on free. + + -- Andreas Metzler <ametz...@debian.org> Sat, 03 Jun 2017 10:58:36 +0200 + libgcrypt20 (1.7.6-1) unstable; urgency=medium * New upstream version, includes diff -Nru libgcrypt20-1.7.6/debian/patches/30_gcry177_01-ecc-Store-EdDSA-session-key-in-secure-memory.patch libgcrypt20-1.7.6/debian/patches/30_gcry177_01-ecc-Store-EdDSA-session-key-in-secure-memory.patch --- libgcrypt20-1.7.6/debian/patches/30_gcry177_01-ecc-Store-EdDSA-session-key-in-secure-memory.patch 1970-01-01 01:00:00.000000000 +0100 +++ libgcrypt20-1.7.6/debian/patches/30_gcry177_01-ecc-Store-EdDSA-session-key-in-secure-memory.patch 2017-06-03 10:53:37.000000000 +0200 @@ -0,0 +1,35 @@ +From f9494b3f258e01b6af8bd3941ce436bcc00afc56 Mon Sep 17 00:00:00 2001 +From: Jo Van Bulck <jo.vanbu...@cs.kuleuven.be> +Date: Thu, 19 Jan 2017 17:00:15 +0100 +Subject: [PATCH 1/2] ecc: Store EdDSA session key in secure memory. + +* cipher/ecc-eddsa.c (_gcry_ecc_eddsa_sign): use mpi_snew to allocate +session key. +-- + +An attacker who learns the EdDSA session key from side-channel +observation during the signing process, can easily revover the long- +term secret key. Storing the session key in secure memory ensures that +constant time point operations are used in the MPI library. + +Signed-off-by: Jo Van Bulck <jo.vanbu...@cs.kuleuven.be> +--- + cipher/ecc-eddsa.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/cipher/ecc-eddsa.c b/cipher/ecc-eddsa.c +index f91f8489..813e030d 100644 +--- a/cipher/ecc-eddsa.c ++++ b/cipher/ecc-eddsa.c +@@ -603,7 +603,7 @@ _gcry_ecc_eddsa_sign (gcry_mpi_t input, ECC_secret_key *skey, + a = mpi_snew (0); + x = mpi_new (0); + y = mpi_new (0); +- r = mpi_new (0); ++ r = mpi_snew (0); + ctx = _gcry_mpi_ec_p_internal_new (skey->E.model, skey->E.dialect, 0, + skey->E.p, skey->E.a, skey->E.b); + b = (ctx->nbits+7)/8; +-- +2.11.0 + diff -Nru libgcrypt20-1.7.6/debian/patches/30_gcry177_02-secmem-Fix-SEGV-and-stat-calculation.patch libgcrypt20-1.7.6/debian/patches/30_gcry177_02-secmem-Fix-SEGV-and-stat-calculation.patch --- libgcrypt20-1.7.6/debian/patches/30_gcry177_02-secmem-Fix-SEGV-and-stat-calculation.patch 1970-01-01 01:00:00.000000000 +0100 +++ libgcrypt20-1.7.6/debian/patches/30_gcry177_02-secmem-Fix-SEGV-and-stat-calculation.patch 2017-06-03 10:53:37.000000000 +0200 @@ -0,0 +1,69 @@ +From 91456759b887e153c4d4ce19538d478df260cab2 Mon Sep 17 00:00:00 2001 +From: NIIBE Yutaka <gni...@fsij.org> +Date: Fri, 2 Jun 2017 10:34:42 +0900 +Subject: [PATCH 2/2] secmem: Fix SEGV and stat calculation. + +* src/secmem (init_pool): Care about the header size. +(_gcry_secmem_malloc_internal): Likewise. +(_gcry_secmem_malloc_internal): Use mb->size for stats. + +-- + +GnuPG-bug-id: 3027 +Signed-off-by: NIIBE Yutaka <gni...@fsij.org> +--- + src/secmem.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/src/secmem.c b/src/secmem.c +index 46bbf82e..b2a9667d 100644 +--- a/src/secmem.c ++++ b/src/secmem.c +@@ -454,7 +454,7 @@ init_pool (pooldesc_t *pool, size_t n) + + /* Initialize first memory block. */ + mb = (memblock_t *) pool->mem; +- mb->size = pool->size; ++ mb->size = pool->size - BLOCK_HEAD_SIZE; + mb->flags = 0; + } + +@@ -610,7 +610,7 @@ _gcry_secmem_malloc_internal (size_t size, int xhint) + mb = mb_get_new (pool, (memblock_t *) pool->mem, size); + if (mb) + { +- stats_update (pool, size, 0); ++ stats_update (pool, mb->size, 0); + return &mb->aligned.c; + } + +@@ -624,7 +624,7 @@ _gcry_secmem_malloc_internal (size_t size, int xhint) + mb = mb_get_new (pool, (memblock_t *) pool->mem, size); + if (mb) + { +- stats_update (pool, size, 0); ++ stats_update (pool, mb->size, 0); + return &mb->aligned.c; + } + } +@@ -641,7 +641,7 @@ _gcry_secmem_malloc_internal (size_t size, int xhint) + return NULL; /* Not enough memory available for a new pool. */ + /* Initialize first memory block. */ + mb = (memblock_t *) pool->mem; +- mb->size = pool->size; ++ mb->size = pool->size - BLOCK_HEAD_SIZE; + mb->flags = 0; + + pool->okay = 1; +@@ -660,7 +660,7 @@ _gcry_secmem_malloc_internal (size_t size, int xhint) + mb = mb_get_new (pool, (memblock_t *) pool->mem, size); + if (mb) + { +- stats_update (pool, size, 0); ++ stats_update (pool, mb->size, 0); + return &mb->aligned.c; + } + } +-- +2.11.0 + diff -Nru libgcrypt20-1.7.6/debian/patches/series libgcrypt20-1.7.6/debian/patches/series --- libgcrypt20-1.7.6/debian/patches/series 2017-01-26 11:58:32.000000000 +0100 +++ libgcrypt20-1.7.6/debian/patches/series 2017-06-03 10:55:34.000000000 +0200 @@ -1,3 +1,5 @@ 12_lessdeps_libgcrypt-config.diff 15_multiarchpath_in_-L.diff 25_norevisionfromgit.diff +30_gcry177_01-ecc-Store-EdDSA-session-key-in-secure-memory.patch +30_gcry177_02-secmem-Fix-SEGV-and-stat-calculation.patch diff -Nru libgcrypt20-1.7.6/debian/upstream/signing-key.asc libgcrypt20-1.7.6/debian/upstream/signing-key.asc --- libgcrypt20-1.7.6/debian/upstream/signing-key.asc 2016-02-12 10:25:57.000000000 +0100 +++ libgcrypt20-1.7.6/debian/upstream/signing-key.asc 2017-01-26 16:24:47.000000000 +0100 @@ -1,5 +1,4 @@ -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: GnuPG v1 mQENBE0ti4EBCACqGtKlX9jI/enhlBdy2cyQP6Q7JoyxtaG6/ckAKWHYrqFTQk3I Ue8TuDrGT742XFncG9PoMBfJDUNltIPgKFn8E9tYQqAOlpSA25bOb30cA2ADkrjg @@ -13,151 +12,53 @@ 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 -=cOKL +E4F5XeCB/0ovao2/bk22w1TxzP6PMxo6sLkmaF6D0frhM2bl4C/uSsq5AQ0ETS2L +gQEIAKHwucgbaRj0V7Ht0FnM6RmbqwZ7IFV2lR+YN1gkZaWRRCaJoPEZFKhhPEBX +1bDVwr/iTPaPPEtpi7oQoHk65yeLrhtOmXXpNVkV/5WQjAJIrWn+JQ3z/ZejxHUL +hzKsGg5FC6pRYcEyzRXHtv4BO9kBIKNVirZjEkQG4BnIrQgl6e2YFa47GNMqcQH7 +nJdwG1cGQOZOIDQQM41gBzwoSrStMA6DjHkukFegKfcSbSLArBtYNAwTwmW7RqOM +EJwlo0+NYx2Yn75x66bYwdlsP0FLOgez/O/IxoPRxXr0l4e+uj6dFHqvBi04dx6J +sPmXEyeAyLiCWSh7Rwq8uIhBUBUAEQEAAYkBJQQYAQIADwUCTS2LgQIbIAUJEN2f +AgAKCRAkmznSTyXjtrsSCACRNgfGkD0OqOiwYo1/+KyWnrQLusVvSYOw8hN66geU +3BO8iQ0Koy+m0QKY1kWjaHwewpg8ZebY4E2sHbNIC9Spyiyz29sAJ2invf4/4Mep +TgpxNiw4+XmykCkN1AfVhvMTQXMzRbO5ZwRtPpjsMr1j5vX1s6U3/RxSAItpAkCu +1GGTTOH0r12Ochc/um+QGAyO6WUj/IiZ1MX7toXW0SCo8DSl8z5Q7KmJWF6TQLK1 +Lku4bIVG1Huwo1/0WHc2vCad5BxHjgoy8TsKLTmvYQZWtnjWvQGV2UOABYWcacut +ZXQQ2PPCIY7LlpuS/45CXWbT5Y+mxY3y7dbz4aF+8uyCiJwEEAECAAYFAk0tjQQA +CgkQU7Yg0BzgxjBGTwQAi5qzI6cJslbyOl+TeDZVnLV0FmPuDg8dojvQrVDPxfem +IjxZZoMLCVM8ly8AC2JPrIYfN040C343saIc0tTtOwwmVMuy7G/Uex22CdWH/0HB +MpG4gFuOuQmW9QQDjEdh1DgwU2gAWonX54ZlMybWss+2NCikRwMflVUupH57BauZ +AQ0EVFA7IwEIAOYQcDfRdzqin/vZlwl1AyuJW+cDI3bYvesRtOIAJ+8FqOzp+nOZ +7a4mULkXUeRh3HcO91wughXoR3qP3klWIlqgTQQHxPVM25BEvnGPuMA86lWnKoSs +Xe9F5h0IMiu6aURvzMJC9VMgKwhhgCjejFf9n8zuiBkMN457Ubnt/9jxhpxmorDQ +Cpb7bR1mfdbsuCmOXwTNfbkAoGXceL/P6z9PskKrFk8CVCr8pseRiHzWgib4Bfr/ +mj68LKcQTH/Y6R16g154eC6PAvxrEDA+hgpVX0I7L781Byh9nqC+KDX5LvlGuQbg +B2IvrgLs6lfU3aRfTwqUDMj37rmXJTDy3TMAEQEAAbQyTklJQkUgWXV0YWthIChH +bnVQRyBSZWxlYXNlIEtleSkgPGduaWliZUBmc2lqLm9yZz6JATwEEwEIACYCGwMF +CwcICQMEFQgJCgUWAgMBAAIeAQIXgAUCWA8UWQUJC0uQNgAKCRAgcbCKM70/Brxv +CADASJRs/b6GHEklwHUDrr89oDNpDo7zB8zelZUvVT9OiI5089g53oxWcC5sScPH +vJmY1KNI8NtrqNR0REIQ653t0tSGszzHk1AlDc6VhTMVzXOkgMq8PWqVmvIKLhlF +ib9xzsFbPBBQNhPVHbQydrhuzGP/nguSv2njgMrnWRG70vK4GcqUxawbQXDSlFmY +c+xUZ+tx8RJmCxN6eiNfWQ163NVk2sxdqM9fM8punLlEa+sGkW3UnplE7IaS5ygg +WV8yfNm1wYFzZ33ZnN4LUtuGZjN2Xyv62M7RA5Ik5LNkdYMA8H+UbQ6Wn+Sw9rnx +EnWy7k/vG5QJbHG4GCwXMA6ruQENBFRQOyMBCAC94CWuMHLmP1B7oFxU0FjKv3D6 +RTpLSLqC/nqRWeKVdlSddR4LnO/r9ahRsGgekAEVyeD04SKAD7g3OWMhWvEsK6aY +gmzc0cLJCJRTsLW+X7kRWo33KUAKIpKYO8VF8iErWejajvo5UgN3y1V/anqlBU45 +DalLk/mu6JXOr6t7u83+IscTrFQTkW17wOxoc6i9zDOU1FoWZFyNU+hxpPCGndfn +S25qzaEpb1qzxYoHpyttCkGX4R3siX6gAkRLIPhsYK4sZihBZhTBgHdAVYSYkCrK +hRNWoSb3XpUhdT5l88uPozwxXruXmzk6WCv6ZdCJ+0rGShwJjU1j6g+Fksk9ABEB +AAGJASUEGAEIAA8FAlRQOyMCGwwFCQPCZwAACgkQIHGwijO9Pwbgqwf7BfdPgAkx +Mrt0BJeLJu1ItnCQ4cZ8rbuS5gwAxrY80QXDoJquwRWs1AXaBu0VW+9KvWdp0uhQ +b0Wy7fv40rRtC+T8nuE/1jaf2byMIfQwPVp3ODH+O3WZew1KvrQZquDKimgHxRso +WH5vq2VjohI8oQuQNN8AYeyxYo74eB8+3WfUrdw4MYiJcKd20MjoZZS16Klb99qm +LVZfE/dt/+wwZYFB7cpb5vvvE1voqS+ycD2Rt0irRg6ulw7OXoUrJ25sfkrv9otD +omDl9V//pyJZSp+IiwK4r0xnk8sjXHgXkzUdIyS0AB17Aw1+G2sbUKyX/SdOgzN7 +D8qEd3C7n53TwokBJQQYAQgADwIbDAUCWA8URgUJC0uQIwAKCRAgcbCKM70/BgoN +B/0ddDVFvid4L+z/+9F/CqkSxhOoYuB387x3/QGseiMTV3qLKJ1kgZfjRKCarU49 +RkT0a1bmXZa7CPJyGsjJJHw2dDyH1w3RqBiMt+n7ewkUZhEawvYnsSYlU9R3r6Ad +yrYvn7OGbd73xppLEyVLlAZwT0jIO1015NQHJreSDqW1rNKj3O3MZXqfnzk/ZSJJ +CcvV+y+KTmJCQPyToNzKCaEGfF9ufLmM9pXs9NynHBjyTqMcgvxnXjgZgdlhu4cx +C7Affnu9GC+rR6l2H7snEma0O1LyCmdH9TaRWGiBLA9CcHTrO1w+9efBnOdgavD5 +ndrnvD55/YxnhuLyA60R3TOH +=dqO2 -----END PGP PUBLIC KEY BLOCK-----
signature.asc
Description: PGP signature