]> git.ipfire.org Git - thirdparty/bind9.git/commit
Fix GSS-API context leak in TKEY negotiation
authorOndřej Surý <ondrej@isc.org>
Tue, 17 Mar 2026 23:10:35 +0000 (00:10 +0100)
committerMichał Kępień <michal@isc.org>
Thu, 7 May 2026 11:21:59 +0000 (13:21 +0200)
commitc420039fee2f428032a2f72aa82a4ed2fcc92f31
treebbcdf01c7a0c93c5f78a674cc4e1c4531feffaa7
parent5abfbc2663023e0c6f2a08ee6a7986f2a404f2f6
Fix GSS-API context leak in TKEY negotiation

Reject multi-round GSS-API negotiation (GSS_S_CONTINUE_NEEDED) in
dst_gssapi_acceptctx().  Each call to gss_accept_sec_context()
allocates a context inside the GSS library; without this fix, the
context handle was passed back to process_gsstkey() which did not
store it persistently, leaking it on every incomplete negotiation.

An unauthenticated attacker could exhaust server memory by sending
repeated TKEY queries with GSSAPI tokens, each leaking one GSS
context.  The leaked memory is allocated by the GSS library via
malloc(), bypassing BIND's memory accounting.

In practice, Kerberos/SPNEGO (the only mechanism used with BIND)
completes in a single round, so rejecting continuation does not
affect real-world deployments.  See RFC 3645 Section 4.1.3.

(cherry picked from commit 3d8e0d068f08694282c5ecd3bd6c332de6c75485)
lib/dns/gssapictx.c
lib/dns/include/dst/gssapi.h
lib/dns/tkey.c