lkml.org 
[lkml]   [2018]   [May]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.14 122/496] PKCS#7: fix direct verification of SignerInfo signature
    Date
    4.14-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Eric Biggers <ebiggers@google.com>

    [ Upstream commit 6459ae386699a5fe0dc52cf30255f75274fa43a4 ]

    If none of the certificates in a SignerInfo's certificate chain match a
    trusted key, nor is the last certificate signed by a trusted key, then
    pkcs7_validate_trust_one() tries to check whether the SignerInfo's
    signature was made directly by a trusted key. But, it actually fails to
    set the 'sig' variable correctly, so it actually verifies the last
    signature seen. That will only be the SignerInfo's signature if the
    certificate chain is empty; otherwise it will actually be the last
    certificate's signature.

    This is not by itself a security problem, since verifying any of the
    certificates in the chain should be sufficient to verify the SignerInfo.
    Still, it's not working as intended so it should be fixed.

    Fix it by setting 'sig' correctly for the direct verification case.

    Fixes: 757932e6da6d ("PKCS#7: Handle PKCS#7 messages that contain no X.509 certs")
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    crypto/asymmetric_keys/pkcs7_trust.c | 1 +
    1 file changed, 1 insertion(+)

    --- a/crypto/asymmetric_keys/pkcs7_trust.c
    +++ b/crypto/asymmetric_keys/pkcs7_trust.c
    @@ -106,6 +106,7 @@ static int pkcs7_validate_trust_one(stru
    pr_devel("sinfo %u: Direct signer is key %x\n",
    sinfo->index, key_serial(key));
    x509 = NULL;
    + sig = sinfo->sig;
    goto matched;
    }
    if (PTR_ERR(key) != -ENOKEY)

    \
     
     \ /
      Last update: 2018-05-28 15:32    [W:2.968 / U:0.172 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site