summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Sutton <josephsutton@catalyst.net.nz>2022-05-24 19:34:59 +1200
committerJule Anger <janger@samba.org>2022-07-24 09:23:55 +0200
commit06c7f3d3f672646b2e0e556693df83761e8dc4e1 (patch)
treede78a09dec855b17e01ba4ca4a8d9ceb5f76f552
parent3e52255fd1623883449ab0ef8e759e0463662597 (diff)
downloadsamba-06c7f3d3f672646b2e0e556693df83761e8dc4e1.tar.gz
CVE-2022-2031 tests/krb5: Allow requesting a TGT to a different sname and realm
BUG: https://bugzilla.samba.org/show_bug.cgi?id=15047 BUG: https://bugzilla.samba.org/show_bug.cgi?id=15049 BUG: https://bugzilla.samba.org/show_bug.cgi?id=15074 Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz> Reviewed-by: Andreas Schneider <asn@samba.org> [jsutton@samba.org Fixed conflict due to lacking rc4_support parameter]
-rw-r--r--python/samba/tests/krb5/kdc_base_test.py19
1 files changed, 13 insertions, 6 deletions
diff --git a/python/samba/tests/krb5/kdc_base_test.py b/python/samba/tests/krb5/kdc_base_test.py
index 5316f94511c..a4f0d8541d0 100644
--- a/python/samba/tests/krb5/kdc_base_test.py
+++ b/python/samba/tests/krb5/kdc_base_test.py
@@ -1361,10 +1361,12 @@ class KDCBaseTest(RawKerberosTest):
expected_flags=None, unexpected_flags=None,
pac_request=True, expect_pac=True, fresh=False):
user_name = tgt.cname['name-string'][0]
+ ticket_sname = tgt.sname
if target_name is None:
target_name = target_creds.get_username()[:-1]
cache_key = (user_name, target_name, service, to_rodc, kdc_options,
pac_request, str(expected_flags), str(unexpected_flags),
+ str(ticket_sname),
expect_pac)
if not fresh:
@@ -1433,6 +1435,7 @@ class KDCBaseTest(RawKerberosTest):
expected_account_name=None, expected_upn_name=None,
expected_cname=None,
expected_sid=None,
+ sname=None, realm=None,
pac_request=True, expect_pac=True,
expect_pac_attrs=None, expect_pac_attrs_pac_request=None,
expect_requester_sid=None,
@@ -1446,6 +1449,7 @@ class KDCBaseTest(RawKerberosTest):
client_name_type,
str(expected_flags), str(unexpected_flags),
expected_account_name, expected_upn_name, expected_sid,
+ str(sname), str(realm),
str(expected_cname),
expect_pac, expect_pac_attrs,
expect_pac_attrs_pac_request, expect_requester_sid)
@@ -1456,15 +1460,21 @@ class KDCBaseTest(RawKerberosTest):
if tgt is not None:
return tgt
- realm = creds.get_realm()
+ if realm is None:
+ realm = creds.get_realm()
salt = creds.get_salt()
etype = (AES256_CTS_HMAC_SHA1_96, ARCFOUR_HMAC_MD5)
cname = self.PrincipalName_create(name_type=client_name_type,
names=user_name.split('/'))
- sname = self.PrincipalName_create(name_type=NT_SRV_INST,
- names=['krbtgt', realm])
+ if sname is None:
+ sname = self.PrincipalName_create(name_type=NT_SRV_INST,
+ names=['krbtgt', realm])
+ expected_sname = self.PrincipalName_create(
+ name_type=NT_SRV_INST, names=['krbtgt', realm.upper()])
+ else:
+ expected_sname = sname
if expected_cname is None:
expected_cname = cname
@@ -1533,9 +1543,6 @@ class KDCBaseTest(RawKerberosTest):
expected_realm = realm.upper()
- expected_sname = self.PrincipalName_create(
- name_type=NT_SRV_INST, names=['krbtgt', realm.upper()])
-
rep, kdc_exchange_dict = self._test_as_exchange(
cname=cname,
realm=realm,