Kerberos Version 5, Release 1.22 Release Notes The MIT Kerberos Team Copyright and Other Notices --------------------------- Copyright (C) 1985-2026 by the Massachusetts Institute of Technology and its contributors. All rights reserved. Please see the file named NOTICE for additional notices. Documentation ------------- Unified documentation for Kerberos V5 is available in both HTML and PDF formats. The table of contents of the HTML format documentation is at doc/html/index.html, and the PDF format documentation is in the doc/pdf directory. Additionally, you may find copies of the HTML format documentation online at https://web.mit.edu/kerberos/krb5-latest/doc/ for the most recent supported release, or at https://web.mit.edu/kerberos/krb5-devel/doc/ for the release under development. More information about Kerberos may be found at https://web.mit.edu/kerberos/ and at the MIT Kerberos Consortium web site https://kerberos.org/ Building and Installing Kerberos 5 ---------------------------------- Build documentation is in doc/html/build/index.html or doc/pdf/build.pdf. The installation guide is in doc/html/admin/install.html or doc/pdf/install.pdf. If you are attempting to build under Windows, please see the src/windows/README file. Reporting Bugs -------------- Please report any problems/bugs/comments by sending email to krb5-bugs@mit.edu. You may view bug reports by visiting https://krbdev.mit.edu/rt/ and using the "Guest Login" button. Please note that the web interface to our bug database is read-only for guests, and the primary way to interact with our bug database is via email. PAC transitions --------------- Beginning with release 1.20, the KDC will include minimal PACs in tickets instead of AD-SIGNEDPATH authdata. S4U requests (protocol transition and constrained delegation) must now contain valid PACs in the incoming tickets. Beginning with release 1.21, service ticket PACs will contain a new KDC checksum buffer, to mitigate a hash collision attack against the old KDC checksum. If only some KDCs in a realm have been upgraded across versions 1.20 or 1.21, the upgraded KDCs will reject S4U requests containing tickets from non-upgraded KDCs and vice versa. Triple-DES and RC4 transitions ------------------------------ Beginning with the krb5-1.21 release, the KDC will not issue tickets with triple-DES or RC4 session keys unless explicitly configured using the new allow_des3 and allow_rc4 variables in [libdefaults]. To facilitate the negotiation of session keys, the KDC will assume that all services can handle aes256-sha1 session keys unless the service principal has a session_enctypes string attribute. Beginning with the krb5-1.19 release, a warning will be issued if initial credentials are acquired using the des3-cbc-sha1 encryption type. Beginning with the krb5-1.21 release, a warning will also be issued for the arcfour-hmac encryption type. In future releases, these encryption types will be disabled by default and eventually removed. Beginning with the krb5-1.18 release, all support for single-DES encryption types has been removed. Major changes in 1.22.3 (2026-11-09) ------------------------------------ This is a bug fix release, with a focus on security issues discovered with the aid of large language models. See https://web.mit.edu/kerberos/advisories/MITKRB5-SA-2026-001.txt for information on the risks of continuing to use unpatched releases. * Fix a logic error when checking PAC server checksums [CVE-2026-111423]. * Check for unkeyed checksums when validating CAMMAC verifiers [CVE-2026-71199]. * Fix a loophole in the KDC's client authdata filtering which could allow clients to include fake PAC and CAMMAC authdata values when requesting service tickets. These fake values would be rejected by application servers, were it not for the two bugs noted above. * Check for the lockdown_keys attribute when processing password change protocol requests in kadmind [CVE-2026-107884]. * In libgssrpc, when processing RPC messages using the RPCSEC_GSS flavor, use the verified service type included in the RPC request to determine how to unwrap arguments and wrap return values, instead of the unverified service type included during authentication [CVE-2026-118380]. * In libgssrpc, disable the AUTH_GSSAPI server auth flavor unless the "GSSRPC_ALLOW_AUTH_GSSAPI" environment variable is set. AUTH_GSSAPI is only needed for very old (pre-1.4) clients [CVE-2026-112322] [CVE-2026-112323]. * Fix numerous null pointer deferences, read overruns, unbounded memory allocations, and memory leaks that could be used as denial of service attacks against the KDC, kadmind, application servers, or client programs [CVE-2026-40355] [CVE-2026-40356] [CVE-2026-71200] [CVE-2026-107364] [CVE-2026-107708] [CVE-2026-107778] [CVE-2026-112314] [CVE-2026-112315] [CVE-2026-112316] [CVE-2026-112317] [CVE-2026-112318] [CVE-2026-112319] [CVE-2026-112320] [CVE-2026-112321] [CVE-2026-112323] [CVE-2026-119079]. * Fix a client crash when a KKDCP proxy daemon closes the TLS session without supplying any response data. * Shut down kpropd gracefully when a termination signal is received, when operating in incremental propagation mode. * Detect when an incremental propagation update is applied to a nonexistent principal; when this happens, force a full resync instead of crashing. * Fix a KDC crash when the LDAP KDB module loses its connection to the LDAP server. * Avoid a crash on macOS when the native API ccache type is used before and after forking a process. * When an application accepts a GSS context without asking for delegated credentials, discard any credentials sent by the initiator without parsing them first. * On Windows, prevent buffer overflows when the KDC sends an unexpectedly long prompt string via OTP preauthentication. * On Windows, move the default per-machine krb5.ini location from C:\ProgramData\MIT\Kerberos to C:\Program Files\MIT\Kerberos5, as the former location could be pre-created by an unutrusted user before KfW installation. * On Windows, add error checking to kfwlogon to ensure that it does not set ACLs on a cache file it did not create. * On Windows, prevent several buffer overflows that could occur if an application passes a large principal name to leashdll APIs. * On Windows, prevent buffer overflows when the LSA cache contains credentials with long principal name components. krb5-1.22.3 changes by ticket ID -------------------------------- 9191 Fix strchr() conformance to C23 9201 Prevent read overrun in svc_auth_gssapi 9205 Fix two NegoEx parsing vulnerabilities 9206 Prevent read overrun in libkdb_ldap 9209 Validate lengths when deserializing 9210 Avoid asymmetric WSACleanup() in libkrb5 9211 Avoid null dereference in krb5_rd_cred() 9212 Fix error handling in KDC PAC processing 9213 Fix null dereference in SPNEGO token processing 9214 Fix gss_add_cred() extension fallback path 9216 Always copy mech name_type for GSS union names 9217 Fix triggerable assertion failure in gss_import_name() 9218 Better validate key_data_ver in iprop decoding 9219 Avoid another null dereference in krb5_rd_cred() 9220 Check for empty forwarded creds in krb5 GSS mech 9221 Propagate -laudit to simple audit module build 9224 Prevent integer overrun in keytab parsing 9227 Prevent null dereference in PKINIT CMS processing 9228 Check for keyed checksums in CAMMAC verifiers 9229 Exclude nested AD-IF-RELEVANT authdata in KDC 9232 Prevent dangling result in tl_data2berval() 9233 Prevent buffer overrun in old leashdll functions 9234 Prevent read overruns in GSSRPC svcauth_unix 9235 Free small client memory leak on OTP failure 9236 Check for cache copy error in kfwlogon 9238 Prevent null deref in KDC dispatch corner case 9239 Check type of otherName value in PKINIT SAN code 9240 Add space checks in Leash_krb5_kinit() prompter 9241 Remove unsafe principal parsing from Leashdll 9242 Check TXT lookup results on Windows 9243 Fix gssalloc mismatches 9244 Use safe string copies in MSLSA ccache type 9245 Move krb5.ini from ProgramData to Program Files 9246 Free call_arg on all AUTH_GSSAPI exit paths 9247 Fix RPC leak when client switches from RPCSEC_GSS 9248 Validate lengths when deserializing profiles 9249 Improve libdb2 data validation 9250 Fix two KDB data validation issues 9251 Prevent KDC read overrun in ASN.1 decoder 9252 Enforce lockdown bit in password change server 9253 Correctly abort parse on invalid JSON array 9254 Skip expired keys when iterating a KEYRING ccache 9255 Free partial tl-data on XDR decode failure 9256 Fix leaks when decoding GSS buffers in libgssrpc 9257 Enforce XDR decode size limits 9258 Fix leak in RPC client on mismatched ID 9259 Check PAC server checksum verification result 9260 Disable GSSRPC AUTH_GSSAPI flavor by default 9261 Fix leak on error in xdr_krb5_keyblock() 9262 Fix leak on error in xdr_krb5_principal() 9263 Fix leak on error in process_chpw_request() 9264 Fix memory leak in auth_gssapi_wrap_data() 9265 Prevent null dereferences in kadmind server stubs 9266 Avoid repeated reallocation when decoding ASN.1 9267 Fix leaks in lifecycle of RPCSEC_GSS context 9268 Fix leak on error in krb5_ktkdb_get_entry() 9269 Fix leak on krb5 gss_accept_sec_context() failure 9270 Pass through null deleg_cred from SPNEGO to mech 9271 Fix leaks on error in PKINIT signed-data creation 9272 Properly verify RPCSEC_GSS call arguments 9273 Fix memory leak in mpool_get() error paths 9274 Check reply length before V4 reply check 9276 macOS API ccache crashes a child forked after the parent used it 9277 Fix hex key input handling in ktutil addent 9278 Prevent unsigned integer overflow in IAKERB 9279 Fix use-after-free of LDAP handle after rebind 9280 Detect iprop update of nonexistent principal 9281 Shut down kpropd gracefully when in iprop mode 9725 Terminate HTTPS read buffer when allocating it Major changes in 1.22.2 (2026-01-29) ------------------------------------ This is a bug fix release. * Fix a SPNEGO packet parsing bug which could cause GSS mechanism negotiation failure. krb5-1.22.2 changes by ticket ID -------------------------------- 9183 Fix SPNEGO mechListMIC parsing 9188 Improve MSLSA ccache timestamp conversion 9189 Fix krb5 gss_acquire_cred() leak on some errors 9190 Make atomic ccache replacement work on Windows 9193 Fix uninitialized pointer dereference in libkrad 9194 Fix IAKERB realm discovery state machine logic Major changes in 1.22.1 (2025-08-20) ------------------------------------ This is a bug fix release. * Fix a vulnerability in GSS MIC verification [CVE-2025-57736]. krb5-1.22.1 changes by ticket ID -------------------------------- 9181 verify_mic_v3 broken in 1.22 Major changes in 1.22 (2025-08-05) ---------------------------------- User experience: * The libdefaults configuration variable "request_timeout" can be set to limit the total timeout for KDC requests. When making a KDC request, the client will now wait indefinitely (or until the request timeout has elapsed) on a KDC which accepts a TCP connection, without contacting any additional KDCs. Clients will make fewer DNS queries in some configurations. * The realm configuration variable "sitename" can be set to cause the client to query site-specific DNS records when making KDC requests. Administrator experience: * Principal aliases are supported in the DB2 and LMDB KDB modules and in the kadmin protocol. (The LDAP KDB module has supported aliases since release 1.7.) * UNIX domain sockets are supported for the Kerberos and kpasswd protocols. * systemd socket activation is supported for krb5kdc and kadmind. Developer experience: * KDB modules can be be implemented in terms of other modules using the new krb5_db_load_module() function. * The profile library supports the modification of empty profiles and the copying of modified profiles, making it possible to construct an in-memory profile and pass it to krb5_init_context_profile(). * GSS-API applications can pass the GSS_C_CHANNEL_BOUND flag to gss_init_sec_context() to request strict enforcement of channel bindings by the acceptor. Protocol evolution: * The PKINIT preauth module supports elliptic curve client certificates, ECDH key exchange, and the Microsoft paChecksum2 field. * The IAKERB implementation has been changed to comply with the most recent draft standard and to support realm discovery. * Message-Authenticator is supported in the RADIUS implementation used by the OTP kdcpreauth module. Code quality: * Removed old-style function declarations, to accomodate compilers which have removed support for them. * Added OSS-Fuzz to the project's continuous integration infrastructure. * Rewrote the GSS per-message token parsing code for improved safety. krb5-1.22 changes by ticket ID ------------------------------ 7721 Primary KDC lookups happen sooner than necessary 7899 Client waits before moving on after KDC_ERR_SVC_UNAVAILABLE 8618 ksu doesn't exit nonzero 9094 Get arm64-windows builds working 9095 PKINIT ECDH support 9096 Enable PKINIT if at least one group is available 9100 Add ecdsa-with-sha512/256 to supportedCMSTypes 9105 Wait indefinitely on KDC TCP connections 9106 Add request_timeout configuration parameter 9108 Remove PKINIT RSA support 9110 profile library null dereference when modifying empty profile 9111 Correct PKINIT EC cert signature metadata 9112 Support PKCS11 EC client certs in PKINIT 9113 Improve PKCS11 error reporting in PKINIT 9114 Build fails with link-time optimization 9116 Improve error message for DES kadmin/history key 9118 profile write operation interactions with reloading 9119 Make profile_copy() work on dirty profiles 9120 profile final flag limitations 9121 Don't flush libkrb5 context profiles 9122 Add GSS flag to include KERB_AP_OPTIONS_CBT 9123 Correct IAKERB protocol implementation 9124 Support site-local KDC discovery via DNS 9126 Handle empty initial buffer in IAKERB initiator 9130 make krb5_get_default_config_files public 9131 Adjust removed cred detection in FILE ccache 9132 Change krb5_get_credentials() endtime behavior 9133 Add acceptor-side IAKERB realm discovery 9135 Replace Windows installer FilesInUse dialog text 9139 Block library unloading to avoid finalizer races 9141 Fix krb5_crypto_us_timeofday() microseconds check 9142 Generate and verify message MACs in libkrad 9143 Fix memory leak in PAC checksum verification 9144 Fix potential PAC processing crash 9145 Prevent late initialization of GSS error map 9146 Allow null keyblocks in IOV checksum functions 9147 Add numeric constants to krad.h and use them 9148 Fix krb5_ldap_list_policy() filtering loop 9149 Use getentropy() when available 9151 Add kadmind support for disabling listening 9152 Default kdc_tcp_listen to kdc_listen value 9153 Fix LDAP module leak on authentication error 9154 Components of the X509_user_identity string cannot contain ':' 9155 UNIX domain socket support 9156 Allow KDB module stacking 9157 Add support for systemd socket activation 9158 Set missing mask flags for kdb5_util operations 9159 Prevent overflow when calculating ulog block size 9160 Allow only one salt type per enctype in key data 9161 Improve ulog block resize efficiency 9162 Build PKINIT on Windows 9163 Add alias support 9164 Add database format documentation 9165 Display NetBIOS ticket addresses in klist 9166 Add PKINIT paChecksum2 from MS-PKCA v20230920 9167 Add initiator-side IAKERB realm discovery 9168 Fix IAKERB accept_sec_context null pointer crash 9169 Fix IAKERB error handling 9170 Avoid gss_inquire_attrs_for_mech() null outputs 9171 Fix getsockname() call in Windows localaddr 9172 Check lengths in xdr_krb5_key_data() 9173 Limit -keepold for self-service key changes 9179 Avoid large numbers of refresh_time cache entries Acknowledgements ---------------- Past Sponsors of the MIT Kerberos Consortium: Apple Carnegie Mellon University Centrify Corporation Columbia University Cornell University The Department of Defense of the United States of America (DoD) Fidelity Investments Google Iowa State University MIT Michigan State University Microsoft MITRE Corporation Morgan-Stanley The National Aeronautics and Space Administration of the United States of America (NASA) Network Appliance (NetApp) Nippon Telephone and Telegraph (NTT) US Government Office of the National Coordinator for Health Information Technology (ONC) Oracle Pennsylvania State University Red Hat Stanford University TeamF1, Inc. The University of Alaska The University of Michigan The University of Pennsylvania Past and present members of the Kerberos Team at MIT: Danilo Almeida Jeffrey Altman Justin Anderson Richard Basch Mitch Berger Jay Berkenbilt Andrew Boardman Bill Bryant Steve Buckley Joe Calzaretta John Carr Mark Colan Don Davis Sarah Day Alexandra Ellwood Carlos Garay Dan Geer Nancy Gilman Matt Hancher Thomas Hardjono Sam Hartman Paul Hill Marc Horowitz Eva Jacobus Miroslav Jurisic Barry Jaspan Benjamin Kaduk Geoffrey King Kevin Koch John Kohl HaoQi Li Jonathan Lin Peter Litwack Scott McGuire Steve Miller Kevin Mitchell Cliff Neuman Paul Park Ezra Peisach Chris Provenzano Ken Raeburn Jon Rochlis Jeff Schiller Jen Selby Robert Silk Bill Sommerfeld Jennifer Steiner Ralph Swick Brad Thompson Harry Tsai Zhanna Tsitkova Ted Ts'o Marshall Vale Taylor Yu The following external contributors have provided code, patches, bug reports, suggestions, and valuable resources: Ian Abbott Daniel Albers Brandon Allbery Russell Allbery Brian Almeida Michael B Allen Pooja Anil Jeffrey Arbuckle Heinz-Ado Arnolds Derek Atkins Mark Bannister David Bantz Alex Baule Nikhil Benesch David Benjamin Thomas Bernard Adam Bernstein Arlene Berry Jeff Blaine Toby Blake Radoslav Bodo Bogdan Boguslavskij Alexander Bokovoy Zoltan Borbely Sumit Bose Emmanuel Bouillon Isaac Boukris Ulf Bremer Pavel Březina Philip Brown Samuel Cabrero Michael Calmer Luigino Camastra Andrea Campi Julien Chaffraix Jacob Champion Arthur Chan Puran Chand Ravi Channavajhala Srinivas Cheruku Leonardo Chiquitto Rachit Chokshi Seemant Choudhary Howard Chu Andrea Cirulli Christopher D. Clausen Kevin Coffman Gerald Combs Simon Cooper Sylvain Cortes Robert Crowston Ian Crowther Arran Cudbard-Bell Adam Dabrowski Jeff D'Angelo Nalin Dahyabhai Mark Davies Dennis Davis Rull Deef Alex Dehnert Misty De Meo Mark Deneen Günther Deschner John Devitofranceschi Marc Dionne Roland Dowdeswell Ken Dreyer Dorian Ducournau Francis Dupont Viktor Dukhovni Jason Edgecombe Douglas Eichelberger Mark Eichin Shawn M. Emery Douglas E. Engert Peter Eriksson Juha Erkkilä Gilles Espinasse Valery Fedorenko Sergey Fedorov Ronni Feldt Bill Fellows JC Ferguson Remi Ferrand Paul Fertser Fabiano Fidêncio Osvaldo Janeri Filho Frank Filz William Fiveash Jacques Florent Oliver Freyermuth Ákos Frohner Sebastian Galiano Vidal Segura García Ilya Gladyshev Marcus Granado Dylan Gray Norm Green Scott Grizzard Helmut Grohne Steve Grubb Philip Guenther Feng Guo Timo Gurr Dominic Hargreaves Robbie Harwood John Hascall Jakob Haufe Matthieu Hautreux Jochen Hein Paul B. Henson Kihong Heo Jeremy Hitt Jeff Hodges Christopher Hogan Love Hörnquist Åstrand Ken Hornstein Henry B. Hotz Luke Howard Rahul Hoysala Jakub Hrozek Shumon Huque Jeffrey Hutzelman Sergey Ilinykh Wyllys Ingersoll Holger Isenberg Spencer Jackson Diogenes S. Jesus Mike Jetzer Pavel Jindra Alexandru-Ionut Jipa Brian Johannesmeyer Joel Johnson Lutz Justen Ganesh Kamath Cem Onat Karagun Alexander Karaivanov Anders Kaseorg Bar Katz Zentaro Kavanagh Mubashir Kazia W. Trevor King Steffen Kieß Patrik Kis Martin Kittel Thomas Klausner Tomasz Kłoczko Brian Knoll David Korczynski Ivan Korytov Matthew Krupcale Mikkel Kruse Reinhard Kugler Harshawardhan Kulkarni Tomas Kuthan Pierre Labastie Andreas Ladanyi Yubi Lee Chris Leick Volker Lendecke Jan iankko Lieskovsky Erin Liman Todd Lipcon Oliver Loch Chris Long Kevin Longfellow Frank Lonigro Jon Looney Nuno Lopes Todd Lubin Ryan Lynch Glenn Machin Tristan Madani Roland Mainz Sorin Manolache Robert Marshall Andrei Maslennikov Michael Mattioli Nathaniel McCallum Greg McClement Cameron Meadors Vipul Mehta Zvika Meiseles Alexey Melnikov Ivan A. Melnikov Franklyn Mendez Stefan Metzmacher Mantas Mikulėnas Markus Moeller Kyle Moffett Alex Moore Jon Moore Paul Moore Keiichi Mori David Morash Michael Morony Robert Morris Sam Morris Zbysek Mraz Edward Murrell Bahaa Naamneh Joshua Neuheisel Nikos Nikoleris Demi Obenour Felipe Ortega Michael Osipov Andrej Ota Dmitry Ovsyannikov Haruki Oyama Alejandro Pacheco Dmitri Pal Javier Palacios Dilyan Palauzov Tom Parker Eric Pauly Leonard Peirce Ezra Peisach Alejandro Perez Zoran Pericic W. Michael Petullo Mark Phalan Ben Pope Sharwan Ram Brett Randall Jonathan Reams Jonathan Reed Robert Relyea Tony Reix Martin Rex Pat Riehecky Julien Rische Jason Rogers Matt Rogers Nate Rosenblum Solly Ross Mike Roszkowski Guillaume Rousse Daniel Sands Joshua Schaeffer Alexander Scheel Jens Schleusener Ryan Schmidt Andreas Schneider Eli Schwartz Paul Seyfert Tom Shaw Ao Shen Ze Sheng Jim Shi Jerry Shipman Peter Shoults Richard Silverman Cel Skeggs Tigran Sogomonian Simo Sorce Anthony Sottile Michael Spang Michael Ströder Bjørn Tore Sund Ondřej Surý Joseph Sutton Moritz Theile Alexey Tikhonov Joe Travaglini Dmitrijs Trizna Sergei Trofimovich Greg Troxel Fraser Tweedale Tim Uglow Rathor Vipin Rickey Visinski Denis Vlasenko Guido Vranken Sargun Vohra Thomas Wagner Jorgen Wahlsten Stef Walter Max (Weijun) Wang John Washington Stef Walter Xi Wang Nehal J Wani Kevin Wasserman Margaret Wasserman Marcus Watts Frederik Wedel-Heinen Andreas Wiese Simon Wilkinson Nicolas Williams Ross Wilper Augustin Wolf Garrett Wollman David Woodhouse Tsu-Phong Wu Xu Qiang Neng Xue Zhaomo Yang Tianjiao Yin Nickolai Zeldovich Bean Zhang ChenChen Zhou Hanz van Zijst Gertjan Zwartjes The above is not an exhaustive list; many others have contributed in various ways to the MIT Kerberos development effort over the years.