From: Stefan Metzmacher Date: Fri, 7 Aug 2015 07:50:30 +0000 (+0200) Subject: CVE-2016-2118: s3:rpc_server/{samr,lsa,netlogon}: reject DCERPC_AUTH_LEVEL_CONNECT... X-Git-Tag: samba-4.2.10~100 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e34628f881993c14f5a450998373f50145594752;p=thirdparty%2Fsamba.git CVE-2016-2118: s3:rpc_server/{samr,lsa,netlogon}: reject DCERPC_AUTH_LEVEL_CONNECT by default This prevents man in the middle downgrade attacks. BUG: https://bugzilla.samba.org/show_bug.cgi?id=11616 Pair-Programmed-With: Günther Deschner Signed-off-by: Stefan Metzmacher Signed-off-by: Günther Deschner --- diff --git a/selftest/knownfail b/selftest/knownfail index fc711babf3b..f8a52cf91e3 100644 --- a/selftest/knownfail +++ b/selftest/knownfail @@ -328,3 +328,7 @@ ^samba4.ldb.simple.ldaps.*SERVER_IP.*tlsverifypeer=ca_and_name\( ^samba4.ldb.simple.ldaps.*SERVER_IP.*tlsverifypeer=as_strict_as_possible\( ^samba4.ldb.simple.ldaps.*SERVER.REALM.*tlsverifypeer=as_strict_as_possible.*fl2008r2dc +# +# we don't allow auth_level_connect anymore... +# +^samba3.blackbox.rpcclient.*ncacn_np.*with.*connect.*rpcclient # we don't allow auth_level_connect anymore diff --git a/source3/rpc_server/srv_pipe.c b/source3/rpc_server/srv_pipe.c index 49026765a14..57043231b97 100644 --- a/source3/rpc_server/srv_pipe.c +++ b/source3/rpc_server/srv_pipe.c @@ -45,6 +45,9 @@ #include "auth/gensec/gensec.h" #include "librpc/ndr/ndr_dcerpc.h" #include "lib/tsocket/tsocket.h" +#include "../librpc/gen_ndr/ndr_samr.h" +#include "../librpc/gen_ndr/ndr_lsa.h" +#include "../librpc/gen_ndr/ndr_netlogon.h" #undef DBGC_CLASS #define DBGC_CLASS DBGC_RPC_SRV @@ -378,6 +381,22 @@ static bool check_bind_req(struct pipes_struct *p, context_fns->syntax = *abstract; context_fns->allow_connect = lp_allow_dcerpc_auth_level_connect(); + /* + * for the samr, lsarpc and netlogon interfaces we don't allow "connect" + * auth_level by default. + */ + ok = ndr_syntax_id_equal(abstract, &ndr_table_samr.syntax_id); + if (ok) { + context_fns->allow_connect = false; + } + ok = ndr_syntax_id_equal(abstract, &ndr_table_lsarpc.syntax_id); + if (ok) { + context_fns->allow_connect = false; + } + ok = ndr_syntax_id_equal(abstract, &ndr_table_netlogon.syntax_id); + if (ok) { + context_fns->allow_connect = false; + } /* * every interface can be modified to allow "connect" auth_level by * using a parametric option like: