CVE-2016-2118: docs-xml: add "allow dcerpc auth level connect" defaulting to "yes"
authorStefan Metzmacher <metze@samba.org>
Thu, 10 Mar 2016 16:03:59 +0000 (17:03 +0100)
committerStefan Metzmacher <metze@samba.org>
Tue, 12 Apr 2016 17:25:27 +0000 (19:25 +0200)
We sadly need to allow this for now by default.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=11616

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Günther Deschner <gd@samba.org>
docs-xml/smbdotconf/security/allowdcerpcauthlevelconnect.xml [new file with mode: 0644]
lib/param/loadparm.c
source3/param/loadparm.c

diff --git a/docs-xml/smbdotconf/security/allowdcerpcauthlevelconnect.xml b/docs-xml/smbdotconf/security/allowdcerpcauthlevelconnect.xml
new file mode 100644 (file)
index 0000000..27a9733
--- /dev/null
@@ -0,0 +1,29 @@
+<samba:parameter name="allow dcerpc auth level connect"
+                 context="G"
+                 type="boolean"
+                 xmlns:samba="http://www.samba.org/samba/DTD/samba-doc">
+<description>
+       <para>This option controls whether DCERPC services are allowed to
+       be used with DCERPC_AUTH_LEVEL_CONNECT, which provides authentication,
+       but no per message integrity nor privacy protection.</para>
+
+       <para>Some interfaces like samr, lsarpc and netlogon have a hard-coded default of
+       <constant>no</constant> and epmapper, mgmt and rpcecho have a hard-coded default of
+       <constant>yes</constant>.
+       </para>
+
+       <para>The behavior can be overwritten per interface name (e.g. lsarpc, netlogon, samr, srvsvc,
+       winreg, wkssvc ...) by using 'allow dcerpc auth level connect:interface = yes' as option.</para>
+
+       <para>This option yields precedence to the implementation specific restrictions.
+       E.g. the drsuapi and backupkey protocols require DCERPC_AUTH_LEVEL_PRIVACY.
+       The dnsserver protocol requires DCERPC_AUTH_LEVEL_INTEGRITY.
+       </para>
+
+       <para>Note the default will very likely change to <constant>no</constant> for Samba 4.5.</para>
+</description>
+
+<value type="default">yes</value>
+<value type="example">no</value>
+
+</samba:parameter>
index f6a7cfefdffa21b892cf093c2adc025c699adb7d..c47759d94c79aa195ba3ce1dd52b0e1c4421dbf2 100644 (file)
@@ -2634,6 +2634,8 @@ struct loadparm_context *loadparm_init(TALLOC_CTX *mem_ctx)
        lpcfg_do_global_parameter(lp_ctx, "RawNTLMv2Auth", "False");
        lpcfg_do_global_parameter(lp_ctx, "client use spnego principal", "False");
 
+       lpcfg_do_global_parameter(lp_ctx, "allow dcerpc auth level connect", "True");
+
        lpcfg_do_global_parameter(lp_ctx, "UnixExtensions", "True");
 
        lpcfg_do_global_parameter(lp_ctx, "PreferredMaster", "Auto");
index 47d2a929834526dee37486dfd9f905925327c19f..2af0f310ee92b190d7b0dec347d82655dbccd09e 100644 (file)
@@ -697,6 +697,8 @@ static void init_globals(struct loadparm_context *lp_ctx, bool reinit_globals)
        Globals.client_ntlmv2_auth = true; /* Client should always use use NTLMv2, as we can't tell that the server supports it, but most modern servers do */
        /* Note, that we will also use NTLM2 session security (which is different), if it is available */
 
+       Globals.allow_dcerpc_auth_level_connect = true; /* we need to allow this for now by default */
+
        Globals.map_to_guest = 0;       /* By Default, "Never" */
        Globals.oplock_break_wait_time = 0;     /* By Default, 0 msecs. */
        Globals.enhanced_browsing = true;