mirror of
https://github.com/samba-team/samba.git
synced 2025-08-04 08:22:08 +03:00
CVE-2016-2115: s3:libsmb: add signing constant SMB_SIGNING_IPC_DEFAULT
SMB_SIGNING_IPC_DEFAULT must be used from s3 client code when opening RPC connections. BUG: https://bugzilla.samba.org/show_bug.cgi?id=11756 Signed-off-by: Ralph Boehme <slow@samba.org> Reviewed-by: Stefan Metzmacher <metze@samba.org>
This commit is contained in:
committed by
Stefan Metzmacher
parent
a046ffd6cd
commit
b720575f16
@ -3393,10 +3393,13 @@ bool lpcfg_server_signing_allowed(struct loadparm_context *lp_ctx, bool *mandato
|
|||||||
case SMB_SIGNING_DESIRED:
|
case SMB_SIGNING_DESIRED:
|
||||||
case SMB_SIGNING_IF_REQUIRED:
|
case SMB_SIGNING_IF_REQUIRED:
|
||||||
break;
|
break;
|
||||||
case SMB_SIGNING_DEFAULT:
|
|
||||||
case SMB_SIGNING_OFF:
|
case SMB_SIGNING_OFF:
|
||||||
allowed = false;
|
allowed = false;
|
||||||
break;
|
break;
|
||||||
|
case SMB_SIGNING_DEFAULT:
|
||||||
|
case SMB_SIGNING_IPC_DEFAULT:
|
||||||
|
smb_panic(__location__);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return allowed;
|
return allowed;
|
||||||
|
@ -382,6 +382,7 @@ struct smbXcli_conn *smbXcli_conn_create(TALLOC_CTX *mem_ctx,
|
|||||||
conn->desire_signing = true;
|
conn->desire_signing = true;
|
||||||
conn->mandatory_signing = false;
|
conn->mandatory_signing = false;
|
||||||
break;
|
break;
|
||||||
|
case SMB_SIGNING_IPC_DEFAULT:
|
||||||
case SMB_SIGNING_REQUIRED:
|
case SMB_SIGNING_REQUIRED:
|
||||||
/* always */
|
/* always */
|
||||||
conn->allow_signing = true;
|
conn->allow_signing = true;
|
||||||
|
@ -95,6 +95,7 @@ enum protocol_types {
|
|||||||
#define PROTOCOL_LATEST PROTOCOL_SMB3_11
|
#define PROTOCOL_LATEST PROTOCOL_SMB3_11
|
||||||
|
|
||||||
enum smb_signing_setting {
|
enum smb_signing_setting {
|
||||||
|
SMB_SIGNING_IPC_DEFAULT = -2, /* Only used in C code */
|
||||||
SMB_SIGNING_DEFAULT = -1,
|
SMB_SIGNING_DEFAULT = -1,
|
||||||
SMB_SIGNING_OFF = 0,
|
SMB_SIGNING_OFF = 0,
|
||||||
SMB_SIGNING_IF_REQUIRED = 1,
|
SMB_SIGNING_IF_REQUIRED = 1,
|
||||||
|
@ -170,6 +170,15 @@ struct cli_state *cli_state_create(TALLOC_CTX *mem_ctx,
|
|||||||
use_level_II_oplocks = true;
|
use_level_II_oplocks = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (signing_state == SMB_SIGNING_IPC_DEFAULT) {
|
||||||
|
/*
|
||||||
|
* Ensure for IPC/RPC the default is to require
|
||||||
|
* signing unless explicitly turned off by the
|
||||||
|
* administrator.
|
||||||
|
*/
|
||||||
|
signing_state = lp_client_ipc_signing();
|
||||||
|
}
|
||||||
|
|
||||||
if (signing_state == SMB_SIGNING_DEFAULT) {
|
if (signing_state == SMB_SIGNING_DEFAULT) {
|
||||||
signing_state = lp_client_signing();
|
signing_state = lp_client_signing();
|
||||||
}
|
}
|
||||||
|
@ -147,6 +147,7 @@ static NTSTATUS smb2srv_negprot_backend(struct smb2srv_request *req, struct smb2
|
|||||||
|
|
||||||
switch (signing_setting) {
|
switch (signing_setting) {
|
||||||
case SMB_SIGNING_DEFAULT:
|
case SMB_SIGNING_DEFAULT:
|
||||||
|
case SMB_SIGNING_IPC_DEFAULT:
|
||||||
smb_panic(__location__);
|
smb_panic(__location__);
|
||||||
break;
|
break;
|
||||||
case SMB_SIGNING_OFF:
|
case SMB_SIGNING_OFF:
|
||||||
|
Reference in New Issue
Block a user