lkml.org 
[lkml]   [2018]   [Mar]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.9 004/177] CIFS: Enable encryption during session setup phase
    Date
    4.9-stable review patch.  If anyone has any objections, please let me know.

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

    From: Pavel Shilovsky <pshilov@microsoft.com>

    commit cabfb3680f78981d26c078a26e5c748531257ebb upstream.

    In order to allow encryption on SMB connection we need to exchange
    a session key and generate encryption and decryption keys.

    Signed-off-by: Pavel Shilovsky <pshilov@microsoft.com>
    Cc: Steve French <smfrench@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>


    ---
    fs/cifs/sess.c | 22 ++++++++++------------
    fs/cifs/smb2pdu.c | 12 ++----------
    2 files changed, 12 insertions(+), 22 deletions(-)

    --- a/fs/cifs/sess.c
    +++ b/fs/cifs/sess.c
    @@ -344,13 +344,12 @@ void build_ntlmssp_negotiate_blob(unsign
    /* BB is NTLMV2 session security format easier to use here? */
    flags = NTLMSSP_NEGOTIATE_56 | NTLMSSP_REQUEST_TARGET |
    NTLMSSP_NEGOTIATE_128 | NTLMSSP_NEGOTIATE_UNICODE |
    - NTLMSSP_NEGOTIATE_NTLM | NTLMSSP_NEGOTIATE_EXTENDED_SEC;
    - if (ses->server->sign) {
    + NTLMSSP_NEGOTIATE_NTLM | NTLMSSP_NEGOTIATE_EXTENDED_SEC |
    + NTLMSSP_NEGOTIATE_SEAL;
    + if (ses->server->sign)
    flags |= NTLMSSP_NEGOTIATE_SIGN;
    - if (!ses->server->session_estab ||
    - ses->ntlmssp->sesskey_per_smbsess)
    - flags |= NTLMSSP_NEGOTIATE_KEY_XCH;
    - }
    + if (!ses->server->session_estab || ses->ntlmssp->sesskey_per_smbsess)
    + flags |= NTLMSSP_NEGOTIATE_KEY_XCH;

    sec_blob->NegotiateFlags = cpu_to_le32(flags);

    @@ -407,13 +406,12 @@ int build_ntlmssp_auth_blob(unsigned cha
    flags = NTLMSSP_NEGOTIATE_56 |
    NTLMSSP_REQUEST_TARGET | NTLMSSP_NEGOTIATE_TARGET_INFO |
    NTLMSSP_NEGOTIATE_128 | NTLMSSP_NEGOTIATE_UNICODE |
    - NTLMSSP_NEGOTIATE_NTLM | NTLMSSP_NEGOTIATE_EXTENDED_SEC;
    - if (ses->server->sign) {
    + NTLMSSP_NEGOTIATE_NTLM | NTLMSSP_NEGOTIATE_EXTENDED_SEC |
    + NTLMSSP_NEGOTIATE_SEAL;
    + if (ses->server->sign)
    flags |= NTLMSSP_NEGOTIATE_SIGN;
    - if (!ses->server->session_estab ||
    - ses->ntlmssp->sesskey_per_smbsess)
    - flags |= NTLMSSP_NEGOTIATE_KEY_XCH;
    - }
    + if (!ses->server->session_estab || ses->ntlmssp->sesskey_per_smbsess)
    + flags |= NTLMSSP_NEGOTIATE_KEY_XCH;

    tmp = *pbuffer + sizeof(AUTHENTICATE_MESSAGE);
    sec_blob->NegotiateFlags = cpu_to_le32(flags);
    --- a/fs/cifs/smb2pdu.c
    +++ b/fs/cifs/smb2pdu.c
    @@ -707,15 +707,13 @@ SMB2_sess_establish_session(struct SMB2_
    struct cifs_ses *ses = sess_data->ses;

    mutex_lock(&ses->server->srv_mutex);
    - if (ses->server->sign && ses->server->ops->generate_signingkey) {
    + if (ses->server->ops->generate_signingkey) {
    rc = ses->server->ops->generate_signingkey(ses);
    - kfree(ses->auth_key.response);
    - ses->auth_key.response = NULL;
    if (rc) {
    cifs_dbg(FYI,
    "SMB3 session key generation failed\n");
    mutex_unlock(&ses->server->srv_mutex);
    - goto keygen_exit;
    + return rc;
    }
    }
    if (!ses->server->session_estab) {
    @@ -729,12 +727,6 @@ SMB2_sess_establish_session(struct SMB2_
    ses->status = CifsGood;
    ses->need_reconnect = false;
    spin_unlock(&GlobalMid_Lock);
    -
    -keygen_exit:
    - if (!ses->server->sign) {
    - kfree(ses->auth_key.response);
    - ses->auth_key.response = NULL;
    - }
    return rc;
    }


    \
     
     \ /
      Last update: 2018-03-23 12:40    [W:4.136 / U:0.240 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site