lkml.org 
[lkml]   [2017]   [Jun]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.10 003/250] EVM: Use crypto_memneq() for digest comparisons
    Date
    From: Ryan Ware <ware@linux.intel.com>

    commit 613317bd212c585c20796c10afe5daaa95d4b0a1 upstream.

    This patch fixes vulnerability CVE-2016-2085. The problem exists
    because the vm_verify_hmac() function includes a use of memcmp().
    Unfortunately, this allows timing side channel attacks; specifically
    a MAC forgery complexity drop from 2^128 to 2^12. This patch changes
    the memcmp() to the cryptographically safe crypto_memneq().

    Reported-by: Xiaofei Rex Guo <xiaofei.rex.guo@intel.com>
    Signed-off-by: Ryan Ware <ware@linux.intel.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Mimi Zohar <zohar@linux.vnet.ibm.com>
    Signed-off-by: James Morris <james.l.morris@oracle.com>
    Cc: Jason A. Donenfeld <Jason@zx2c4.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>
    ---
    security/integrity/evm/evm_main.c | 3 ++-
    1 file changed, 2 insertions(+), 1 deletion(-)

    diff --git a/security/integrity/evm/evm_main.c b/security/integrity/evm/evm_main.c
    index b980a6c..3db2bf1 100644
    --- a/security/integrity/evm/evm_main.c
    +++ b/security/integrity/evm/evm_main.c
    @@ -20,6 +20,7 @@
    #include <linux/integrity.h>
    #include <linux/evm.h>
    #include <crypto/hash.h>
    +#include <crypto/algapi.h>
    #include "evm.h"

    int evm_initialized;
    @@ -128,7 +129,7 @@ static enum integrity_status evm_verify_hmac(struct dentry *dentry,
    xattr_value_len, calc.digest);
    if (rc)
    break;
    - rc = memcmp(xattr_data->digest, calc.digest,
    + rc = crypto_memneq(xattr_data->digest, calc.digest,
    sizeof(calc.digest));
    if (rc)
    rc = -EINVAL;
    --
    2.8.0.rc2.1.gbe9624a
    \
     
     \ /
      Last update: 2017-06-12 01:15    [W:5.951 / U:0.332 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site