title: Exceeding the recursive-clients quota may cause named to terminate unexpectedly when stale-answer-client-timeout is set to 0
description: If the `recursive-clients` quota is reached on a BIND 9 resolver configured with both `stale-answer-enable yes;` and `stale-answer-client-timeout 0;`, a sequence of serve-stale-related lookups could cause `named` to loop and terminate unexpectedly due to a stack overflow.
This issue affects BIND 9 versions 9.16.33 through 9.16.41, 9.18.7 through 9.18.15, 9.16.33-S1 through 9.16.41-S1, and 9.18.11-S1 through 9.18.15-S1.
affected:
{
vendor: ISC
product: BIND 9
versions:
version: 9.16.33, lessThanOrEqual: 9.16.41, status: affected, versionType: custom
version: 9.18.7, lessThanOrEqual: 9.18.15, status: affected, versionType: custom
version: 9.16.33-S1, lessThanOrEqual: 9.16.41-S1, status: affected, versionType: custom
version: 9.18.11-S1, lessThanOrEqual: 9.18.15-S1, status: affected, versionType: custom
defaultStatus: unaffected
}
metrics:
cvssV3_1: [
version: 3.1
attackVector: NETWORK
attackComplexity: LOW
privilegesRequired: NONE
userInteraction: NONE
scope: UNCHANGED
confidentialityImpact: NONE
integrityImpact: NONE
availabilityImpact: HIGH
vectorString: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
baseScore: 7.5
baseSeverity: HIGH
]
exploits: This flaw was discovered in internal testing. We are not aware of any active exploits.
solutions: Upgrade to the patched release most closely related to your current version of BIND 9: 9.16.42, 9.18.16, 9.16.42-S1, or 9.18.16-S1.
workarounds: Setting `stale-answer-client-timeout` to `off` or to a non-zero value prevents the issue.
Users of versions 9.18.10, 9.16.36, 9.16.36-S1 or older who are unable to upgrade should set `stale-answer-client-timeout` to `off`; using a non-zero value with these older versions leaves `named` vulnerable to CVE-2022-3924.
Although it is possible to set the `recursive-clients` limit to a high number to reduce the likelihood of this scenario, this is not recommended; the limit on `recursive-clients` is important for preventing exhaustion of server resources. The limit cannot be disabled entirely.