]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
CVE-2022-37966 param: let "kdc default domain supportedenctypes = 0" mean the default
authorStefan Metzmacher <metze@samba.org>
Wed, 30 Nov 2022 08:05:51 +0000 (09:05 +0100)
committerStefan Metzmacher <metze@samba.org>
Wed, 14 Dec 2022 10:28:17 +0000 (10:28 +0000)
In order to allow better upgrades we need the default value for smb.conf to the
same even if the effective default value of the software changes in future.

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

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
(cherry picked from commit fa64f8fa8d92167ed15d1109af65bbb4daab4bad)

docs-xml/smbdotconf/security/kdcdefaultdomainsupportedenctypes.xml
lib/param/loadparm.c
python/samba/tests/krb5/etype_tests.py
python/samba/tests/krb5/kdc_base_test.py
source3/param/loadparm.c
source4/kdc/db-glue.c

index e93650ac3e078496b168c2996217209ac71e002b..984611167b595e977fb9bf32439c0f904779d70c 100644 (file)
@@ -38,5 +38,5 @@
 
 </description>
 
-<value type="default">36<comment>equivalent to: rc4-hmac aes256-cts-hmac-sha1-96-sk</comment></value>
+<value type="default">0<comment>maps to what the software supports currently: arcfour-hmac-md5 aes256-cts-hmac-sha1-96-sk</comment></value>
 </samba:parameter>
index e810fa564d68eec10e658d5a0252e15495f9d480..71f08c77bbf2a9293a567cf04132b13f5f1d46e6 100644 (file)
@@ -3083,10 +3083,6 @@ struct loadparm_context *loadparm_init(TALLOC_CTX *mem_ctx)
                                  "rpc start on demand helpers",
                                  "yes");
 
-       lpcfg_do_global_parameter(lp_ctx,
-                                 "kdc default domain supported enctypes",
-                                 "rc4-hmac aes256-cts-hmac-sha1-96-sk");
-
        for (i = 0; parm_table[i].label; i++) {
                if (!(lp_ctx->flags[i] & FLAG_CMDLINE)) {
                        lp_ctx->flags[i] |= FLAG_DEFAULT;
index 1a16518df94e682c32c59cca71c4e9f71b7c0ebe..9725d544c2ac5ac4a983a3f51da13d5ca6c809ad 100755 (executable)
@@ -63,6 +63,8 @@ class EtypeTests(KdcTgsBaseTests):
             lp = self.get_lp()
             self.default_supported_enctypes = lp.get(
                 'kdc default domain supported enctypes')
+            if self.default_supported_enctypes == 0:
+                self.default_supported_enctypes = rc4_bit | aes256_sk_bit
 
     def _server_creds(self, supported=None, force_nt4_hash=False,
                       account_type=None):
index 801d69ca43a584c8edfee35c050cd857e850c78f..ace756ab0d262aae28118fffaa1e0436af66af58 100644 (file)
@@ -58,6 +58,9 @@ from samba.ndr import ndr_pack, ndr_unpack
 from samba import net
 from samba.samdb import SamDB, dsdb_Dn
 
+rc4_bit = security.KERB_ENCTYPE_RC4_HMAC_MD5
+aes256_sk_bit = security.KERB_ENCTYPE_AES256_CTS_HMAC_SHA1_96_SK
+
 from samba.tests import delete_force
 import samba.tests.krb5.kcrypto as kcrypto
 from samba.tests.krb5.raw_testcase import (
@@ -635,7 +638,8 @@ class KDCBaseTest(RawKerberosTest):
         if supported_enctypes is None:
             lp = self.get_lp()
             supported_enctypes = lp.get('kdc default domain supported enctypes')
-
+            if supported_enctypes == 0:
+                supported_enctypes = rc4_bit | aes256_sk_bit
         supported_enctypes = int(supported_enctypes)
 
         if extra_bits is not None:
index c33b0cd3fea58fb177044f6fe18ccb163e073b0e..6d567a9e7e54bf45a29dcdebfb267869ac133f48 100644 (file)
@@ -991,9 +991,6 @@ static void init_globals(struct loadparm_context *lp_ctx, bool reinit_globals)
         */
        Globals.rpc_start_on_demand_helpers = true;
 
-       Globals.kdc_default_domain_supported_enctypes =
-               KERB_ENCTYPE_RC4_HMAC_MD5 | KERB_ENCTYPE_AES256_CTS_HMAC_SHA1_96_SK;
-
        /* Now put back the settings that were set with lp_set_cmdline() */
        apply_lp_set_cmdline();
 }
index cf3a731926e397012232cb0308ef5fad7ec323a8..0b07961f838d2632fac553bbf3bb725f992f5653 100644 (file)
@@ -991,7 +991,11 @@ static krb5_error_code samba_kdc_message2entry(krb5_context context,
        bool force_rc4 = lpcfg_kdc_force_enable_rc4_weak_session_keys(lp_ctx);
        struct ldb_message_element *objectclasses;
        struct ldb_val computer_val;
-       uint32_t default_supported_enctypes = lpcfg_kdc_default_domain_supported_enctypes(lp_ctx);
+       uint32_t config_default_supported_enctypes = lpcfg_kdc_default_domain_supported_enctypes(lp_ctx);
+       uint32_t default_supported_enctypes =
+               config_default_supported_enctypes != 0 ?
+               config_default_supported_enctypes :
+               ENC_RC4_HMAC_MD5 | ENC_HMAC_SHA1_96_AES256_SK;
        uint32_t supported_enctypes
                = ldb_msg_find_attr_as_uint(msg,
                                            "msDS-SupportedEncryptionTypes",