Operational Notification: An error in handling TCP client quota limits can exhaust TCP connections in BIND 9.16.0
mcnally at isc.org
Fri Mar 6 01:24:49 UTC 2020
Posting date: 05 March 2020
Program Impacted: BIND
Versions affected: 9.16.0. Also versions 9.15.6 -> 9.15.8 of the
9.15 development branch.
One part of the development work done in the BIND 9.15 branch
was to modernize BIND's networking framework to use libuv, a
multi-platform C library that provides support for asynchronous
I/O based on event loops.
Unfortunately, during this work we introduced a problem in
enforcing TCP client quota limits. A discrepancy in our quota
code can result in a situation where the count is not properly
decremented in some cases.
Under some circumstances, especially if a server is accepting
TCP connections from clients on multiple interfaces, once the
quota has been reached the server may stop accepting new TCP
connections even after the number of active TCP connections has
fallen back below the quota limit.
Servers which encounter this defect will continue accepting and
processing UDP queries (which represent the majority of query
traffic on most servers) but can lose the ability to accept new
TCP connections until the server is restarted.
To avoid reaching this condition accidentally the operator of
an affected server can provision the tcp-clients limit high
enough so that it is not expected to be encountered in normal
operation. However a malicious party could still succeed in
triggering it deliberately.
Since the workaround listed above is not effective against
deliberate exploitation ISC recommends that operators running
an affected release of BIND either:
- Download a patch diff (from https://downloads.isc.org/isc/bind9/9.16.0/patches);,
apply it to the 9.16.0 source code using the patch utility,
and recompile to include the behavior fix which will be included
in the next release of the 9.16 branch to prevent this defect,
- Revert to a stable production release of BIND from a branch
before the libuv networking restructuring introduced in 9.15/9.16.
At the present time our supported release branches are 9.11
(most recent release: 9.11.16) and 9.14 (most recent release: 9.14.11).
ISC would like to thank Jay Ford of the University of Iowa for
reporting this issue.
Do you still have questions? Questions regarding this advisory
should go to security-officer at isc.org. To report a new issue, please
encrypt your message using security-officer at isc.org's PGP key which
can be found here: https://www.isc.org/pgpkey/. If you are unable
to use encrypted email, you may also report new issues at:
ISC patches only currently supported versions. When possible we
indicate EOL versions affected. (For current information on which
versions are actively supported, please see
ISC Security Vulnerability Disclosure Policy:
Details of our current security advisory policy and practice can
be found here: ISC Software Defect and Security Vulnerability
This Knowledgebase article:
is the complete and official operational notification document.
Internet Systems Consortium (ISC) is providing this notice on
an "AS IS" basis. No warranty or guarantee of any kind is expressed
in this notice and none should be implied. ISC expressly excludes
and disclaims any warranties regarding this notice or materials
referred to in this notice, including, without limitation, any
implied warranty of merchantability, fitness for a particular
purpose, absence of hidden defects, or of non-infringement. Your
use or reliance on this notice or materials referred to in this
notice is at your own risk. ISC may change this notice at any
time. A stand-alone copy or paraphrase of the text of this
document that omits the document URL is an uncontrolled copy.
Uncontrolled copies may lack important information, be out of
date, or contain factual errors.
More information about the bind-announce