CVE-2015-5370: s4:rpc_server: make sure alter_context and auth3 can't change auth_...
authorStefan Metzmacher <metze@samba.org>
Fri, 26 Jun 2015 06:10:46 +0000 (08:10 +0200)
committerStefan Metzmacher <metze@samba.org>
Wed, 30 Mar 2016 02:39:43 +0000 (04:39 +0200)
BUG: https://bugzilla.samba.org/show_bug.cgi?id=11344

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Günther Deschner <gd@samba.org>
source4/rpc_server/dcesrv_auth.c

index 565c3733727b656fc8ee8e99819f90c4c18dfeb8..afa584b164bc9328eb3d78cce7440de73f098b5c 100644 (file)
@@ -238,6 +238,18 @@ bool dcesrv_auth_auth3(struct dcesrv_call_state *call)
                return false;
        }
 
+       if (call->in_auth_info.auth_type != dce_conn->auth_state.auth_type) {
+               return false;
+       }
+
+       if (call->in_auth_info.auth_level != dce_conn->auth_state.auth_level) {
+               return false;
+       }
+
+       if (call->in_auth_info.auth_context_id != dce_conn->auth_state.auth_context_id) {
+               return false;
+       }
+
        call->_out_auth_info = (struct dcerpc_auth) {
                .auth_type = dce_conn->auth_state.auth_type,
                .auth_level = dce_conn->auth_state.auth_level,
@@ -306,6 +318,18 @@ bool dcesrv_auth_alter(struct dcesrv_call_state *call)
                return false;
        }
 
+       if (call->in_auth_info.auth_type != dce_conn->auth_state.auth_type) {
+               return false;
+       }
+
+       if (call->in_auth_info.auth_level != dce_conn->auth_state.auth_level) {
+               return false;
+       }
+
+       if (call->in_auth_info.auth_context_id != dce_conn->auth_state.auth_context_id) {
+               return false;
+       }
+
        return true;
 }