[SCM] Samba Shared Repository - branch master updated

Alexander Bokovoy ab at samba.org
Wed Aug 14 16:27:02 UTC 2019


The branch, master has been updated
       via  9b7825d2d38 auth:ntlmssp: Use generate_random_buffer() for session keys
       via  6fa3e4de7c1 s3:passdb: Use generate_secret_buffer() for generating passwords
       via  a3e36dd8f43 s4:samdb: Use generate_nonce_buffer() for AEC GCM nonce
       via  93196dd823e lib:util: Use generate_secret_buffer() for long term passwords
       via  d73be972ea5 Revert "s4:rpc_server: Use generate_secret_buffer() to create a session key"
       via  38b0695ddac Revert "s4:rpc_server: Use generate_secret_buffer() for backupkey wap_key"
       via  1c68085404c Revert "s4:rpc_server: Use generate_secret_buffer() for netlogon challange"
       via  689760f2652 Revert "libcli:auth: Use generate_secret_buffer() for netlogon challenge"
       via  97c441d7c28 lib:util: Fix documentation for random number functions
      from  4d276a93fc6 smbtorture: extend rpc.lsa to lookup machine over forest-wide LookupNames

https://git.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 9b7825d2d387bcb2515154418a990669ab96358d
Author: Andreas Schneider <asn at samba.org>
Date:   Mon Aug 12 19:07:15 2019 +0200

    auth:ntlmssp: Use generate_random_buffer() for session keys
    
    Signed-off-by: Andreas Schneider <asn at samba.org>
    Reviewed-by: Alexander Bokovoy <ab at samba.org>
    
    Autobuild-User(master): Alexander Bokovoy <ab at samba.org>
    Autobuild-Date(master): Wed Aug 14 16:26:47 UTC 2019 on sn-devel-184

commit 6fa3e4de7c168dc7c869ec9966729a36bda27f57
Author: Andreas Schneider <asn at samba.org>
Date:   Mon Aug 12 18:57:06 2019 +0200

    s3:passdb: Use generate_secret_buffer() for generating passwords
    
    Signed-off-by: Andreas Schneider <asn at samba.org>
    Reviewed-by: Alexander Bokovoy <ab at samba.org>

commit a3e36dd8f43a5c06969ae158fa54fbc649f44d03
Author: Andreas Schneider <asn at samba.org>
Date:   Mon Aug 12 18:56:35 2019 +0200

    s4:samdb: Use generate_nonce_buffer() for AEC GCM nonce
    
    Signed-off-by: Andreas Schneider <asn at samba.org>
    Reviewed-by: Alexander Bokovoy <ab at samba.org>

commit 93196dd823e114f260a68d28bb59eac3909c30d8
Author: Andreas Schneider <asn at samba.org>
Date:   Mon Aug 12 18:55:56 2019 +0200

    lib:util: Use generate_secret_buffer() for long term passwords
    
    Signed-off-by: Andreas Schneider <asn at samba.org>
    Reviewed-by: Alexander Bokovoy <ab at samba.org>

commit d73be972ea58d564c770698bf6374a6074f111fe
Author: Andreas Schneider <asn at samba.org>
Date:   Mon Aug 12 18:50:02 2019 +0200

    Revert "s4:rpc_server: Use generate_secret_buffer() to create a session key"
    
    This reverts commit 4b2480518bd3887be3a6cfb713523ac084e09fd5.
    
    Reviewed-by: Alexander Bokovoy <ab at samba.org>

commit 38b0695ddac244c67b2a33eb927ad3e95d2e8bd6
Author: Andreas Schneider <asn at samba.org>
Date:   Mon Aug 12 18:49:52 2019 +0200

    Revert "s4:rpc_server: Use generate_secret_buffer() for backupkey wap_key"
    
    This reverts commit 5a62056b4530e4c509444be9164a1fca1dce193f.
    
    Reviewed-by: Alexander Bokovoy <ab at samba.org>

commit 1c68085404cd467c217640e3eabfc4b7f8b1ce9f
Author: Andreas Schneider <asn at samba.org>
Date:   Mon Aug 12 18:49:37 2019 +0200

    Revert "s4:rpc_server: Use generate_secret_buffer() for netlogon challange"
    
    This reverts commit a21770cfdffd2a21045a1bc87e489af0f4c6f130.
    
    Reviewed-by: Alexander Bokovoy <ab at samba.org>

commit 689760f26521fe5b4c8964a25ddd3ab1c9e9977c
Author: Andreas Schneider <asn at samba.org>
Date:   Mon Aug 12 18:49:31 2019 +0200

    Revert "libcli:auth: Use generate_secret_buffer() for netlogon challenge"
    
    This reverts commit c3ba556f52b15dd80efc26e4fb8f43ce2ee3a7f0.
    
    Reviewed-by: Alexander Bokovoy <ab at samba.org>

commit 97c441d7c28feb29168e81ebbc5c55b09a845087
Author: Andreas Schneider <asn at samba.org>
Date:   Mon Aug 12 16:10:20 2019 +0200

    lib:util: Fix documentation for random number functions
    
    Signed-off-by: Andreas Schneider <asn at samba.org>
    Reviewed-by: Alexander Bokovoy <ab at samba.org>

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

Summary of changes:
 auth/ntlmssp/ntlmssp_client.c                      | 2 +-
 lib/util/genrand.c                                 | 9 +++++++--
 lib/util/genrand.h                                 | 8 ++++++--
 lib/util/genrand_util.c                            | 6 +++---
 libcli/auth/netlogon_creds_cli.c                   | 3 +--
 source3/passdb/pdb_nds.c                           | 3 ++-
 source4/dsdb/samdb/ldb_modules/encrypted_secrets.c | 2 +-
 source4/rpc_server/backupkey/dcesrv_backupkey.c    | 3 +--
 source4/rpc_server/netlogon/dcerpc_netlogon.c      | 3 +--
 source4/rpc_server/samr/samr_password.c            | 5 ++---
 10 files changed, 25 insertions(+), 19 deletions(-)


Changeset truncated at 500 lines:

diff --git a/auth/ntlmssp/ntlmssp_client.c b/auth/ntlmssp/ntlmssp_client.c
index b8d1190466b..2a80feb4fed 100644
--- a/auth/ntlmssp/ntlmssp_client.c
+++ b/auth/ntlmssp/ntlmssp_client.c
@@ -696,7 +696,7 @@ NTSTATUS ntlmssp_client_challenge(struct gensec_security *gensec_security,
 			.size = session_key.length,
 		};
 
-		generate_secret_buffer(client_session_key, sizeof(client_session_key));
+		generate_random_buffer(client_session_key, sizeof(client_session_key));
 
 		/* Encrypt the new session key with the old one */
 		encrypted_session_key = data_blob_talloc(ntlmssp_state,
diff --git a/lib/util/genrand.c b/lib/util/genrand.c
index a5809aa2bc9..18ffa0d95e6 100644
--- a/lib/util/genrand.c
+++ b/lib/util/genrand.c
@@ -33,13 +33,16 @@
 
 _PUBLIC_ void generate_random_buffer(uint8_t *out, int len)
 {
-	/* Thread and fork safe random number generator for temporary keys. */
+	/* Random number generator for temporary keys. */
 	gnutls_rnd(GNUTLS_RND_RANDOM, out, len);
 }
 
 _PUBLIC_ void generate_secret_buffer(uint8_t *out, int len)
 {
-	/* The key generator, will re-seed after a fixed amount of bytes is
+	/*
+	 * Random number generator for long term keys.
+	 *
+	 * The key generator, will re-seed after a fixed amount of bytes is
 	 * generated (typically less than the nonce), and will also re-seed
 	 * based on time, i.e., after few hours of operation without reaching
 	 * the limit for a re-seed. For its re-seed it mixes mixes data obtained
@@ -51,6 +54,8 @@ _PUBLIC_ void generate_secret_buffer(uint8_t *out, int len)
 _PUBLIC_ void generate_nonce_buffer(uint8_t *out, int len)
 {
 	/*
+	 * Random number generator for nonce and initialization vectors.
+	 *
 	 * The nonce generator will reseed after outputting a fixed amount of
 	 * bytes (typically few megabytes), or after few hours of operation
 	 * without reaching the limit has passed.
diff --git a/lib/util/genrand.h b/lib/util/genrand.h
index abb8ce2c10a..70f36312e58 100644
--- a/lib/util/genrand.h
+++ b/lib/util/genrand.h
@@ -20,12 +20,16 @@
 */
 
 /**
- * Thread and fork safe random number generator for temporary keys.
+ * @brief Generate random values for session and temporary keys.
+ *
+ * @param[in]  out  A pointer to the buffer to fill with random data.
+ *
+ * @param[in]  len  The size of the buffer to fill.
  */
 void generate_random_buffer(uint8_t *out, int len);
 
 /**
- * @brief Generate random values for key buffers (e.g. session keys)
+ * @brief Generate random values for long term keys and passwords.
  *
  * @param[in]  out  A pointer to the buffer to fill with random data.
  *
diff --git a/lib/util/genrand_util.c b/lib/util/genrand_util.c
index d7b74c6cf1a..05d1f3ef6e5 100644
--- a/lib/util/genrand_util.c
+++ b/lib/util/genrand_util.c
@@ -185,7 +185,7 @@ _PUBLIC_ char *generate_random_str_list(TALLOC_CTX *mem_ctx, size_t len, const c
 	char *retstr = talloc_array(mem_ctx, char, len + 1);
 	if (!retstr) return NULL;
 
-	generate_random_buffer((uint8_t *)retstr, len);
+	generate_secret_buffer((uint8_t *)retstr, len);
 	for (i = 0; i < len; i++) {
 		retstr[i] = list[retstr[i] % list_len];
 	}
@@ -247,7 +247,7 @@ _PUBLIC_ char *generate_random_password(TALLOC_CTX *mem_ctx, size_t min, size_t
 	if (diff > 0 ) {
 		size_t tmp;
 
-		generate_random_buffer((uint8_t *)&tmp, sizeof(tmp));
+		generate_secret_buffer((uint8_t *)&tmp, sizeof(tmp));
 
 		tmp %= diff;
 
@@ -317,7 +317,7 @@ _PUBLIC_ char *generate_random_machine_password(TALLOC_CTX *mem_ctx, size_t min,
 	if (diff > 0) {
 		size_t tmp;
 
-		generate_random_buffer((uint8_t *)&tmp, sizeof(tmp));
+		generate_secret_buffer((uint8_t *)&tmp, sizeof(tmp));
 
 		tmp %= diff;
 
diff --git a/libcli/auth/netlogon_creds_cli.c b/libcli/auth/netlogon_creds_cli.c
index 18143ca36d0..50a5f50a57d 100644
--- a/libcli/auth/netlogon_creds_cli.c
+++ b/libcli/auth/netlogon_creds_cli.c
@@ -1177,8 +1177,7 @@ static void netlogon_creds_cli_auth_challenge_start(struct tevent_req *req)
 
 	TALLOC_FREE(state->creds);
 
-	/* We need to use a CSPRNG which reseeds for generating session keys. */
-	generate_secret_buffer(state->client_challenge.data,
+	generate_random_buffer(state->client_challenge.data,
 			       sizeof(state->client_challenge.data));
 
 	subreq = dcerpc_netr_ServerReqChallenge_send(state, state->ev,
diff --git a/source3/passdb/pdb_nds.c b/source3/passdb/pdb_nds.c
index 349ea0b6c38..216c9e6b50b 100644
--- a/source3/passdb/pdb_nds.c
+++ b/source3/passdb/pdb_nds.c
@@ -814,7 +814,8 @@ static NTSTATUS pdb_nds_update_login_attempts(struct pdb_methods *methods,
 				got_clear_text_pw = True;
 			}
 		} else {
-			generate_random_buffer((unsigned char *)clear_text_pw, 24);
+			/* This is a long term key */
+			generate_secret_buffer((unsigned char *)clear_text_pw, 24);
 			clear_text_pw[24] = '\0';
 			DEBUG(5,("pdb_nds_update_login_attempts: using random password %s\n", clear_text_pw));
 		}
diff --git a/source4/dsdb/samdb/ldb_modules/encrypted_secrets.c b/source4/dsdb/samdb/ldb_modules/encrypted_secrets.c
index b2df15c08f4..deaa03cbb35 100644
--- a/source4/dsdb/samdb/ldb_modules/encrypted_secrets.c
+++ b/source4/dsdb/samdb/ldb_modules/encrypted_secrets.c
@@ -447,7 +447,7 @@ static struct ldb_val samba_encrypt_aead(int *err,
 			goto error_exit;
 		}
 
-		generate_random_buffer(iv, AES_GCM_128_IV_SIZE);
+		generate_nonce_buffer(iv, AES_GCM_128_IV_SIZE);
 
 		es->iv.length = AES_GCM_128_IV_SIZE;
 		es->iv.data   = iv;
diff --git a/source4/rpc_server/backupkey/dcesrv_backupkey.c b/source4/rpc_server/backupkey/dcesrv_backupkey.c
index d192858e468..a826ae083f4 100644
--- a/source4/rpc_server/backupkey/dcesrv_backupkey.c
+++ b/source4/rpc_server/backupkey/dcesrv_backupkey.c
@@ -1263,8 +1263,7 @@ static WERROR generate_bkrp_server_wrap_key(TALLOC_CTX *ctx, struct ldb_context
 	char *secret_name;
 	TALLOC_CTX *frame = talloc_stackframe();
 
-	/* We need to use a CSPRNG which reseeds for generating session keys. */
-	generate_secret_buffer(wrap_key.key, sizeof(wrap_key.key));
+	generate_random_buffer(wrap_key.key, sizeof(wrap_key.key));
 
 	ndr_err = ndr_push_struct_blob(&blob_wrap_key, ctx, &wrap_key, (ndr_push_flags_fn_t)ndr_push_bkrp_dc_serverwrap_key);
 	if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
diff --git a/source4/rpc_server/netlogon/dcerpc_netlogon.c b/source4/rpc_server/netlogon/dcerpc_netlogon.c
index f4e24b7fd7f..ac745e32b02 100644
--- a/source4/rpc_server/netlogon/dcerpc_netlogon.c
+++ b/source4/rpc_server/netlogon/dcerpc_netlogon.c
@@ -90,8 +90,7 @@ static NTSTATUS dcesrv_netr_ServerReqChallenge(struct dcesrv_call_state *dce_cal
 
 	pipe_state->client_challenge = *r->in.credentials;
 
-	/* We need to use a CSPRNG which reseeds for generating session keys. */
-	generate_secret_buffer(pipe_state->server_challenge.data,
+	generate_random_buffer(pipe_state->server_challenge.data,
 			       sizeof(pipe_state->server_challenge.data));
 
 	*r->out.return_credentials = pipe_state->server_challenge;
diff --git a/source4/rpc_server/samr/samr_password.c b/source4/rpc_server/samr/samr_password.c
index 6bf907181c8..b04e37f06f3 100644
--- a/source4/rpc_server/samr/samr_password.c
+++ b/source4/rpc_server/samr/samr_password.c
@@ -733,10 +733,9 @@ NTSTATUS samr_set_password_buffers(struct dcesrv_call_state *dce_call,
 			 nt_errstr(nt_status)));
 
 		/*
-		 * Windows just uses a random key. We need to use a CSPRNG
-		 * which reseeds for generating session keys.
+		 * Windows just uses a random key
 		 */
-		generate_secret_buffer(random_session_key,
+		generate_random_buffer(random_session_key,
 				       sizeof(random_session_key));
 		session_key = data_blob_const(random_session_key,
 					      sizeof(random_session_key));


-- 
Samba Shared Repository



More information about the samba-cvs mailing list