aboutsummaryrefslogtreecommitdiff
path: root/crypto/heimdal/lib/kadm5
Commit message (Collapse)AuthorAgeFilesLines
* heimdal-kadmin: Add support for the -f dump optionRick Macklem2025-10-052-0/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The "-f" dump option allows a dump of the Heimdal KDC in a format that the MIT kdb5_util command can load into a MIT KDC's database. This makes transitioning from the Heimdal KDC to the current MIT one feasible without having to re-create the KDC database from scratch. glebius@ did the initial work, cherry picking these commits from the Heimdal sources on github and then doing extensive merge conflict resolution and other fixes so that it would build. Heimdal commit fca5399 authored by Nico Williams: Initial commit for second approach for multiple kvno. NOT TESTED! Heimdal commit 57f1545 authored by Nico Williams: Add support for writing to KDB and dumping HDB to MIT KDB dump format Before this change Heimdal could read KDBs. Now it can write to them too. Heimdal can now also dump HDBs (including KDBs) in MIT format, which can then be imported with kdb5_util load. This is intended to help in migrations from MIT to Heimdal by allowing migrations from Heimdal to MIT so that it is possible to rollback from Heimdal to MIT should there be any issues. The idea is to allow a) running Heimdal kdc/kadmind with a KDB, or b) running Heimdal with an HDB converted from a KDB and then rollback by dumping the HDB and loading a KDB. Note that not all TL data types are supported, only two: last password change and modify-by. This is the minimum necessary. PKINIT users may need to add support for KRB5_TL_USER_CERTIFICATE, and for databases with K/M history we may need to add KRB5_TL_MKVNO support. This resulted in a Heimdal kadmin that would dump the KDC database in MIT format. However, there were issues when this dump was loaded into the current MIT KDC in FreeBSD current/15.0. The changes I did to make the dump more useful are listed below: When "-f MIT" is used for "kadmin -l dump" it writes the dump out in MIT format. This dump format is understood by the MIT kdb5_util command. The patch modifies the above so that the MIT KDC's master key keytab file can be provided as the argument to "-f" so that the principals are re-encrypted in it. This allows any principal with at least one strong encryption type key to work without needing a change_password. The strong encryption types supported by the Heimdal KDC are: aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 The issues my changes address are: - If there are weak encryption keys in a principal's entry, MIT's kadmin.local will report that the principcal's entry is incomplete or corrupted. - The keys are encrypted in Heimdal's master key. The "-d" option can be used on the "kadmin -l dump" to de-encrypt them, but the passwords will not work on the current MIT KDC. To try and deal with the above issues, this patch modied the above to: - Does not dump the weak keys. - Re-encrypts the strong keys in MIT's master key if the argument to "-f" is actually a filename which holds the MIT KDC's master key keytab and not "MIT". - For principals that only have weak keys, it generates a fake strong key. This key will not work on the MIT KDC, but the principal entry will work once a change_password is done to it. - It always generates a "modified_by" entry, faking one if not already present in the Heimdal KDC database. This was necessary, since the MIT kadmin will report that the principal entry is "incomplete or corrupted" without one. It also fixed a problem where "get principal" no longer worked after the initial patch was applied. A man page update will be done as a separate commit. I believe this commit is acceptable since the Heimdal sources are now essentially deprecated in favor of the MIT sources and that this new "-f" patch simplifies the transition to the MIT KDC. Discussed with: glebius, cy MFC after: 3 days
* heimdal: don't try to expose nonexistant symbolsBrooks Davis2024-03-071-2/+0
| | | | | | | | | | | | For one reason or another these symbols aren't present so don't try to make them available for linkage. In the case of libroken these seem to be compatability bits we don't need a thus don't compile. For others it seems to rot upstream, but I've not investigated deeply. Reviewed by: cy Differential Revision: https://reviews.freebsd.org/D44246
* kerberos: Fix numerous segfaults when using weak cryptoCy Schubert2024-01-182-0/+5
| | | | | | | | | | | | | | | | | | | | Weak crypto is provided by the openssl legacy provider which is not load by default. Load the legacy providers as needed. When the legacy provider is loaded into the default context the default provider will no longer be automatically loaded. Without the default provider the various kerberos applicaions and functions will abort(). This is the second attempt at this patch. Instead of linking secure/lib/libcrypto at build time we now link it at runtime, avoiding buildworld failures under Linux and MacOS. This is because TARGET_ENDIANNESS is undefined at pre-build time. PR: 272835 MFC after: 3 days X-MFC: only to stable/14 Tested by: netchild Joerg Pulz <Joerg.Pulz@frm2.tum.de> (previous version)
* Revert "kerberos: Fix numerous segfaults when using weak crypto"Cy Schubert2024-01-122-5/+0
| | | | | | | | | | | | | | | | This revision breaks Linux and MacOS cross builds because TARGET_ENDIANNESS is not define during bootstrapping on these platforms. I think the correct approach would be to separate the new fbsd_ossl_provider_load() and unload functions into their own library (instead of libroken). This avoids the less desirable option of including bsd.cpu.mk in secure/lib/Makefile.common, which does build but could complicate future work. Reported by: jrtc27 This reverts commit cb350ba7bf7ca7c4cb97ed2c20ab45af60382cfb.
* kerberos: Fix numerous segfaults when using weak cryptoCy Schubert2024-01-112-0/+5
| | | | | | | | | | | | | | Weak crypto is provided by the openssl legacy provider which is not load by default. Load the legacy providers as needed. When the legacy provider is loaded into the default context the default provider will no longer be automatically loaded. Without the default provider the various kerberos applicaions and functions will abort(). PR: 272835 MFC after: 3 days Differential Revision: https://reviews.freebsd.org/D43009 Tested by: netchild, Joerg Pulz <Joerg.Pulz@frm2.tum.de>
* heimdal: Resolve hdb_free_entry() SIGSEGV/SIGILLCy Schubert2023-02-081-1/+1
| | | | | | | | | | | | | | When the client sends kadmind a create principal (kadm_create) request kadm_s_create_principal() returns an error before zeroing out ent (an hdb entry structure wrapper -- hdb_entry_ex), resulting in a NULL reference. Fix obtained from upstream commit 35ea4955a. PR: 268059 Reported by: Robert Morris <rtm@lcs.mit.edu> Obtained from: Heimdal commit 35ea4955a MFC after: 3 days
* heimdal: kadm5_c_get_principal() should check return codeCy Schubert2022-12-091-1/+1
| | | | | | | | | kadm5_c_get_principal() should check the return code from kadm5_ret_principal_ent(). As it doesn't it assumes success when there is none and can lead to potential vulnerability. Fix this. Reported by: rtm@csail.mit.edu MFC after: 3 days
* heimdal: Check return code from _hdb_fetch_kvno()Cy Schubert2022-11-272-2/+2
| | | | | | | | | | A malformed principal will cause kadmind to segfault. The PR addresses only when chpass is requested but delete is also affected. Fix both. PR: 268002 Reported by: Robert Morris <rtm@lcs.mit.edu> MFC after: 3 days
* heimdal: Add missing iprop error checks.Cy Schubert2022-11-271-18/+30
| | | | | | | Inspired by upstream 9d6dd21256f87988605fa75172be9cc92535064c. Obtained from: Heimdal 9d6dd21256f87988605fa75172be9cc92535064c MFC after: 3 days
* heimdal: Add missing kadm5 error checksCy Schubert2022-11-273-2/+7
| | | | | Obtained from: Heimdal commit 4a0e01f9edabe36d0f2cab188078dd29fa5aaf02 MFC after: 3 days
* heimdal: Add missing kadm5 error checksCy Schubert2022-11-271-80/+105
| | | | | | | | Generally obtained from upstream 655c057769f56bd8cdb7d16e93f1e7a7cb260342. PR: 267944, 267972 Obtained from: Heimdal commit 655c057769f56bd8cdb7d16e93f1e7a7cb260342 MFC after: 3 days
* heimdal: Fix uninitialized pointer dereferenceCy Schubert2022-11-271-6/+7
| | | | | | | | | | | | krb5_ret_preincipal() returns a non-zero return code when a garbage principal is passed to it. Unfortunately ret_principal_ent() does not check the return code, with garbage pointing to what would have been the principal. This results in a segfault when free() is called. PR: 267944, 267972 Reported by: Robert Morris <rtm@lcs.mit.edu> MFC after: 3 days
* heimdal: Handle other types of garbage dataCy Schubert2022-11-241-0/+26
| | | | | | | | | In addition to garbage realm data, also handle garbage dbname, acl_file, stash_file, and invalid bitmask garbage data. PR: 267912 Reported by: Robert Morris <rtm@lcs.mit.edu> MFC after: 3 days
* heimdal: Fix NULL dereference when mangled realm messageCy Schubert2022-11-241-1/+5
| | | | | | | | | Fix a NULL dereference in _kadm5_s_init_context() when the client sends a mangled realm message. PR: 267912 Reported by: Robert Morris <rtm@lcs.mit.edu> MFC after: 3 days
* heimdal: Fix multiple security vulnerabilitiesCy Schubert2022-11-153-3/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The following issues are patched: - CVE-2022-42898 PAC parse integer overflows - CVE-2022-3437 Overflows and non-constant time leaks in DES{,3} and arcfour - CVE-2021-44758 NULL dereference DoS in SPNEGO acceptors - CVE-2022-44640 Heimdal KDC: invalid free in ASN.1 codec Note that CVE-2022-44640 is a severe vulnerability, possibly a 10.0 on the Common Vulnerability Scoring System (CVSS) v3, as we believe it should be possible to get an RCE on a KDC, which means that credentials can be compromised that can be used to impersonate anyone in a realm or forest of realms. Heimdal's ASN.1 compiler generates code that allows specially crafted DER encodings of CHOICEs to invoke the wrong free function on the decoded structure upon decode error. This is known to impact the Heimdal KDC, leading to an invalid free() of an address partly or wholly under the control of the attacker, in turn leading to a potential remote code execution (RCE) vulnerability. This error affects the DER codec for all extensible CHOICE types used in Heimdal, though not all cases will be exploitable. We have not completed a thorough analysis of all the Heimdal components affected, thus the Kerberos client, the X.509 library, and other parts, may be affected as well. This bug has been in Heimdal's ASN.1 compiler since 2005, but it may only affect Heimdal 1.6 and up. It was first reported by Douglas Bagnall, though it had been found independently by the Heimdal maintainers via fuzzing a few weeks earlier. While no zero-day exploit is known, such an exploit will likely be available soon after public disclosure. - CVE-2019-14870: Validate client attributes in protocol-transition - CVE-2019-14870: Apply forwardable policy in protocol-transition - CVE-2019-14870: Always lookup impersonate client in DB Sponsored by: so (philip) Obtained from: so (philip) Tested by: philip, cy MFC after: immediately
* Have the ipropd-master listen on an IPv6 socket in addition to an IPv4Bjoern A. Zeeb2013-05-181-6/+62
| | | | | | | | | | | | | | socket to allow propagation of changes to a Heimdal Kerberos database from the KDC master to the slave(s) work on IPv6 as well. Update the stats logging to also handle IPv6 addresses. Reported by: peter (found on FreeBSD cluster) X-to-be-tested-by: peter MFC after: 3 weeks Notes: svn path=/head/; revision=250782
* - Update FreeBSD's Heimdal distribution to 1.5.2. This is a bugfixStanislav Sedov2012-04-081-3/+2
|\ | | | | | | | | | | | | release, which fixes a DoS issue in libkrb5. Notes: svn path=/head/; revision=234027
* | - Update FreeBSD Heimdal distribution to version 1.5.1. This also bringsStanislav Sedov2012-03-2264-2705/+3195
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | several new kerberos related libraries and applications to FreeBSD: o kgetcred(1) allows one to manually get a ticket for a particular service. o kf(1) securily forwards ticket to another host through an authenticated and encrypted stream. o kcc(1) is an umbrella program around klist(1), kswitch(1), kgetcred(1) and other user kerberos operations. klist and kswitch are just symlinks to kcc(1) now. o kswitch(1) allows you to easily switch between kerberos credentials if you're running KCM. o hxtool(1) is a certificate management tool to use with PKINIT. o string2key(1) maps a password into key. o kdigest(8) is a userland tool to access the KDC's digest interface. o kimpersonate(8) creates a "fake" ticket for a service. We also now install manpages for some lirbaries that were not installed before, libheimntlm and libhx509. - The new HEIMDAL version no longer supports Kerberos 4. All users are recommended to switch to Kerberos 5. - Weak ciphers are now disabled by default. To enable DES support (used by telnet(8)), use "allow_weak_crypto" option in krb5.conf. - libtelnet, pam_ksu and pam_krb5 are now compiled with error on warnings disabled due to the function they use (krb5_get_err_text(3)) being deprecated. I plan to work on this next. - Heimdal's KDC now require sqlite to operate. We use the bundled version and install it as libheimsqlite. If some other FreeBSD components will require it in the future we can rename it to libbsdsqlite and use for these components as well. - This is not a latest Heimdal version, the new one was released while I was working on the update. I will update it to 1.5.2 soon, as it fixes some important bugs and security issues. Notes: svn path=/head/; revision=233294
| * - Flatten the vendor heimdal tree.Stanislav Sedov2011-09-2969-16393/+0
| | | | | | | | Notes: svn path=/vendor-crypto/heimdal/dist/; revision=225864
* | Fix conflicts after heimdal-1.1 import and add build infrastructure. ImportDoug Rabson2008-05-073-491/+0
|/ | | | | | | all non-style changes made by heimdal to our own libgssapi. Notes: svn path=/head/; revision=178828
* Vendor import of Heimdal 1.1Doug Rabson2008-05-0766-1604/+6833
| | | | Notes: svn path=/vendor-crypto/heimdal/dist/; revision=178825
* Vendor import of Heimdal 0.6.3.vendor/heimdal/0.6.3Jacques Vidrine2005-02-241-184/+220
| | | | | Notes: svn path=/vendor-crypto/heimdal/dist/; revision=142403 svn path=/vendor-crypto/heimdal/0.6.3/; revision=142405; tag=vendor/heimdal/0.6.3
* Clean up the Heimdal vendor branch by removing files not included inJacques Vidrine2005-02-241-880/+0
| | | | | | | | | | | any import for several years. If memory serves, this was Suggested by: ru an awfully long time ago-- sorry for the delay! Notes: svn path=/vendor-crypto/heimdal/dist/; revision=142400
* Vendor import of Heimdal 0.6.1.Jacques Vidrine2004-04-036-138/+306
| | | | Notes: svn path=/vendor-crypto/heimdal/dist/; revision=127808
* Vendor import of Heimdal 0.6.Jacques Vidrine2003-10-099-38/+114
| | | | Notes: svn path=/vendor-crypto/heimdal/dist/; revision=120945
* Import of Heimdal 0.5.1.Jacques Vidrine2002-11-243-36/+50
| | | | | | | Approved by: re Notes: svn path=/vendor-crypto/heimdal/dist/; revision=107207
* Import of Heimdal Kerberos from KTH repository circa 2002/08/29.Jacques Vidrine2002-08-3016-829/+1954
| | | | Notes: svn path=/vendor-crypto/heimdal/dist/; revision=102644
* Import of Heimdal Kerberos from KTH repository circa 2002/02/17.Jacques Vidrine2002-02-1911-366/+452
| | | | Notes: svn path=/vendor-crypto/heimdal/dist/; revision=90926
* import of heimdal 0.3fAssar Westerlund2001-06-214-9/+39
| | | | Notes: svn path=/vendor-crypto/heimdal/dist/; revision=78527
* import of heimdal 0.3eAssar Westerlund2001-02-1342-1289/+2791
| | | | Notes: svn path=/vendor-crypto/heimdal/dist/; revision=72445
* Vendor import of Heimdal 0.2nvendor/heimdal/0.2nMark Murray2000-02-244-6/+18
| | | | | Notes: svn path=/vendor-crypto/heimdal/dist/; revision=57416 svn path=/vendor-crypto/heimdal/0.2n/; revision=57418; tag=vendor/heimdal/0.2n
* Import KTH Heimdal, which will be the core of our Kerberos5.vendor/heimdal/0.2mMark Murray2000-01-0952-0/+8995
Userland to follow. Notes: svn path=/vendor-crypto/heimdal/dist/; revision=55682 svn path=/vendor-crypto/heimdal/0.2m/; revision=55684; tag=vendor/heimdal/0.2m