129 Commits

Author SHA1 Message Date
ece456b028 krb5: Do not fail to rd_req if no AD-KDC-ISSUED
We reject tickets that have no AD-KDC-ISSUED(!).

This was reported by Samba.  The workaround they found was to set
check_pac = true in krb5.conf, as that clobbers the ret from
krb5_ticket_get_authorization_data_type() not having found an
AD-KDC-ISSUED element.

This was introduced in 1cede09a0b.
2023-01-05 17:57:36 -06:00
1eda4920c8 krb5: Fix coverity warnings 2022-01-19 23:38:27 -06:00
1685c34b0d remove (krb5_enctype) cast for ETYPE_xxx
Now that ETYPE_xxx names are macros to the KRB5_ENCTYPE_xxx
symbols there is no longer a need to cast to (krb5_enctype).

Change-Id: Ib561f6e45346abac7a53eb1db0bfef60ee3bcb74
2022-01-15 22:05:50 -05:00
5a952ee7b5 krb5: decorate PrincipalNameAttrs with krb5_pac
Add krb5_pac to PrincipalNameAttrs to avoid needing to re-parse it each time
gss_get_name_attribute() is called.
2022-01-15 18:54:57 +11:00
fb553dde1d krb5: Fix warnings 2022-01-14 17:10:16 -06:00
b102c3c27f krb5: Fix canon name w/ attrs issue 2022-01-03 20:39:12 -06:00
1cede09a0b krb5: Add support for AD-KDC-ISSUED 2022-01-01 23:30:15 -06:00
87f8c0d2b5 krb5: Add name attributes to krb5_principal
We now have what we need in krb5_principal to implement much of RFC6680.
Now we populate those fields so that they can be accessed by GSS-API
RFC6680 name attributes functions.

The next commit should add much of the GSS-API RFC6680 name attributes
functions and functionality.
2022-01-01 23:30:15 -06:00
0ab3b7b2dd krb5: support for canonical name in PAC
If the UPN_DNS_INFO buffer in the Windows PAC contains a canonical principal
name, use it in lieu of the ticket client name to determine the GSS-API
initiator name.
2021-12-22 10:36:26 +11:00
85756bd228 krb5: make keyed checksums mandatory where possible
Make keyed checksums mandatory when generating and verifying checksums, with
the following exceptions:

* the checksum is being generated or verified as part of encrypting data for
  a legacy (DES) encryption type

* the KRB5_CRYPTO_FLAG_ALLOW_UNKEYED_CHECKSUM flag was set on the crypto
  context, used to allow unkeyed checksums in krb5 authenticators

By making unkeyed checksums opt-in, we eliminate a class of potential
vulnerabilities where callers could pass unkeyed checksums.

Any code that uses the mandatory checksum type for a given non-legacy
encryption type should not be affected by this change. It could potentially
break, say, a client trying to do FAST with DES keys but, that should not be
supported (because FAST KDCs also support AES).

Closes: 
2021-09-21 18:02:25 +10:00
f538f0e5c2 krb5: use new krb5_time_abs() function
From Apple Heimdal-597.121.1: replace calls to labs() with krb5_time_abs()
2021-08-09 21:46:39 +10:00
a5e289f4f7 kdc: Add warn_ticket_addresses config option 2021-04-13 23:22:45 -05:00
db7763ca7b asn1: X.681/682/683 magic handling of open types
Status:

 - And it works!

 - We have an extensive test based on decoding a rich EK certficate.

   This test exercises all of:

    - decoding
    - encoding with and without decoded open types
    - copying of decoded values with decoded open types
    - freeing of decoded values with decoded open types

   Valgrind finds no memory errors.

 - Added a manual page for the compiler.

 - rfc2459.asn1 now has all three primary PKIX types that we care about
   defined as in RFC5912, with IOS constraints and parameterization:

    - `Extension`       (embeds open type in an `OCTET STRING`)
    - `OtherName`       (embeds open type in an        `ANY`-like type)
    - `SingleAttribute` (embeds open type in an        `ANY`-like type)
    - `AttributeSet`    (embeds open type in a  `SET OF ANY`-like type)

   All of these use OIDs as the open type type ID field, but integer
   open type type ID fields are also supported (and needed, for
   Kerberos).

   That will cover every typed hole pattern in all our ASN.1 modules.

   With this we'll be able to automatically and recursively decode
   through all subject DN attributes even when the subject DN is a
   directoryName SAN, and subjectDirectoryAttributes, and all
   extensions, and all SANs, and all authorization-data elements, and
   PA-data, and...

   We're not really using `SingleAttribute` and `AttributeSet` yet
   because various changes are needed in `lib/hx509` for that.

 - `asn1_compile` builds and recognizes the subset of X.681/682/683 that
   we need for, and now use in, rfc2459.asn1.  It builds the necessary
   AST, generates the correct C types, and generates templating for
   object sets and open types!

 - See READMEs for details.

 - Codegen backend not tested; I won't make it implement automatic open
   type handling, but it should at least not crash by substituting
   `heim_any` for open types not embedded in `OCTET STRING`.

 - We're _really_ starting to have problems with the ITU-T ASN.1
   grammar and our version of it...

   Type names have to start with upper-case, value names with
   lower-case, but it's not enough to disambiguate.

   The fact the we've allowed value and type names to violate their
   respective start-with case rules is causing us trouble now that we're
   adding grammar from X.681/682/683, and we're going to have to undo
   that.

   In preparation for that I'm capitalizing the `heim_any` and
   `heim_any_set` types, and doing some additional cleanup, which
   requires changes to other parts of Heimdal (all in this same commit
   for now).

   Problems we have because of this:

    - We cannot IMPORT values into modules because we have no idea if a
      symbol being imported refers to a value or a type because the only
      clue we would have is the symbol's name, so we assume IMPORTed
      symbols are for types.

      This means we can't import OIDs, for example, which is super
      annoying.

      One thing we might be able to do here is mark imported symbols as
      being of an undetermined-but-not-undefined type, then coerce the
      symbol's type the first time it's used in a context where its type
      is inferred as type, value, object, object set, or class.  (Though
      since we don't generate C symbols for objects or classes, we won't
      be able to import them, especially since we need to know them at
      compile time and cannot defer their handling to link- or
      run-time.)

    - The `NULL` type name, and the `NULL` value name now cause two
      reduce/reduce conflicts via the `FieldSetting` production.

    - Various shift/reduce conflicts involving `NULL` values in
      non-top-level contexts (in constraints, for example).

 - Currently I have a bug where to disambiguate the grammar I have a
   CLASS_IDENTIFIER token that is all caps, while TYPE_IDENTIFIER must
   start with a capital but not be all caps, but this breaks Kerberos
   since all its types are all capitalized -- oof!

   To fix this I made it so class names have to be all caps and
   start with an underscore (ick).

TBD:

 - Check all the XXX comments and address them
 - Apply this treatment to Kerberos!  Automatic handling of authz-data
   sounds useful :)
 - Apply this treatment to PKCS#10 (CSRs) and other ASN.1 modules too.
 - Replace various bits of code in `lib/hx509/` with uses of this
   feature.
 - Add JER.
 - Enhance `hxtool` and `asn1_print`.

Getting there!
2021-02-28 18:13:08 -06:00
3ba12317a0 Misc fixes (coverity) 2016-11-28 15:09:55 -06:00
b4cf4de807 Fix warnings (clang 3.6) 2016-02-26 01:04:31 -06:00
13814606f4 Fix keytab file and lock leak when trying all keys 2013-07-31 18:17:17 -05:00
39abb10aa9 move where we reset etypelist 2013-07-18 16:36:08 +02:00
28611511ec adopt _krb5_get_ad 2013-07-16 15:10:24 +02:00
f0f07ff408 Use krb5_enomem() more consistently in lib/krb5. 2013-02-13 16:15:00 +08:00
894008ab82 Add doxygen and source comments to some functions of the krb5 API
Signed-off-by: Love Hornquist Astrand <lha@h5l.org>
2012-05-09 08:15:42 +02:00
3bebbe5323 Fixes to make Heimdal -Wall -Werror clean
These fixes make developer mode build, at least on Ubuntu.
2011-11-02 21:42:08 -05:00
84bc108d8f lib/krb5: Allow any kvno to match when searching the keytab.
Windows does not use a KVNO when it checks it's passwords, and MIT
doesn't check the KVNO when no acceptor identity is specified (looping
over all keys in the keytab).

Andrew Bartlett

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Signed-off-by: Love Hörnquist Åstrand <lha@h5l.org>
2011-07-24 10:37:40 -07:00
0879b9831a remove trailing whitespace 2011-05-21 11:57:31 -07:00
9ed040da38 fix compile warning 2011-05-17 23:01:40 -07:00
6850d6a65f avoid uninit variable and unreachable code warnings
most of these warnings are not problems because of ample
use of abort() calls.  However, the large number of warnings
makes it difficult to identify real problems.  Initialize
the variables to shut up the compilers.

Change-Id: I8477c11b17c7b6a7d9074c721fdd2d7303b186a8
2011-05-17 12:02:16 -04:00
77c7747cc3 plug memory leak 2011-05-08 11:21:44 -07:00
f5f9014c90 Warning fixes from Christos Zoulas
- shadowed variables
- signed/unsigned confusion
- const lossage
- incomplete structure initializations
- unused code
2011-04-29 20:25:05 -07:00
035106be97 s4-krb5: Fix typos in comment.
Karolin

Signed-off-by: Love Hornquist Astrand <lha@h5l.org>
2010-09-26 15:12:09 -07:00
d893207413 add check-rd-req-server 2010-09-01 21:56:17 -07:00
687db64c56 Patch from Secure Endpoints/Asanka Herath for windows support 2009-12-21 08:45:28 +01:00
942a821fab remove RCSID
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@25171 ec53bebd-3082-4978-b11e-865c3cabbd6b
2009-05-04 06:17:40 +00:00
8915cd15a7 If caller specified a server, fail on failure to find keytab entry.
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@24460 ec53bebd-3082-4978-b11e-865c3cabbd6b
2009-01-25 00:47:41 +00:00
e19011086b drop shadowing variable
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@24457 ec53bebd-3082-4978-b11e-865c3cabbd6b
2009-01-25 00:47:13 +00:00
9b826e1a62 x
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@24427 ec53bebd-3082-4978-b11e-865c3cabbd6b
2009-01-25 00:42:16 +00:00
10269ef2f0 doxygen fixup
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@24271 ec53bebd-3082-4978-b11e-865c3cabbd6b
2009-01-11 21:47:05 +00:00
4f39ee6fd9 doxygen
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@24270 ec53bebd-3082-4978-b11e-865c3cabbd6b
2009-01-11 21:46:55 +00:00
e8648d75b0 Use principal not found in keytab code.
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@24267 ec53bebd-3082-4978-b11e-865c3cabbd6b
2009-01-11 21:46:26 +00:00
5112116a84 Allow inctx to be NULL.
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@24258 ec53bebd-3082-4978-b11e-865c3cabbd6b
2009-01-11 21:44:58 +00:00
6239532d9a If no server given, interate over keytab to find a key that can
decrypt the request. The resulting server principal is what in the
keytab, the real service can be fetched from.

git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@24257 ec53bebd-3082-4978-b11e-865c3cabbd6b
2009-01-11 21:44:48 +00:00
b474c84bd9 use the asn1 decoder directly
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@24070 ec53bebd-3082-4978-b11e-865c3cabbd6b
2008-12-11 04:52:40 +00:00
60d35f97bc use asn1 decoder function directly
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@24060 ec53bebd-3082-4978-b11e-865c3cabbd6b
2008-12-11 04:50:58 +00:00
23692ff109 (krb5_rd_req_out_ctx_free): free ticket, from Klas Lindfors
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@23998 ec53bebd-3082-4978-b11e-865c3cabbd6b
2008-11-01 19:07:27 +00:00
03babea1e3 switch to krb5_clear_error_message
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@23911 ec53bebd-3082-4978-b11e-865c3cabbd6b
2008-10-14 02:55:39 +00:00
6937d41a02 remove trailing whitespace
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@23815 ec53bebd-3082-4978-b11e-865c3cabbd6b
2008-09-13 09:21:03 +00:00
e172367898 switch to utf8 encoding of all files
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@23814 ec53bebd-3082-4978-b11e-865c3cabbd6b
2008-09-13 08:53:55 +00:00
1b3fa39064 N_()ify
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@23796 ec53bebd-3082-4978-b11e-865c3cabbd6b
2008-09-07 21:32:44 +00:00
5aa921b4d3 Save the session ticket key when we know everything is fine and the
ticket was valid.

git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@23415 ec53bebd-3082-4978-b11e-865c3cabbd6b
2008-07-26 18:35:44 +00:00
7fcd266fdd use krb5_set_error_message
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@23316 ec53bebd-3082-4978-b11e-865c3cabbd6b
2008-06-23 04:32:32 +00:00
f56b0f9866 Use unsigned where appropriate.
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@22872 ec53bebd-3082-4978-b11e-865c3cabbd6b
2008-04-07 18:50:36 +00:00
872980ff98 Document krb5_rd_req_in_set_pac_check.
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@22235 ec53bebd-3082-4978-b11e-865c3cabbd6b
2007-12-08 21:52:07 +00:00