In NLnet Labs Unbound 1.20.0 up to and including 1.25.1, when Unbound is configured with serve-expired: yes and serve-expired-client-timeout > discard-timeout > 0 (contrary to the suggested values), the discard-timeout branch during the serve expired logic drops an aged client reply without performing the correct accounting for the number of reply addresses for the query. Other identical branches outside of serve expired perform the correct decrement. Since the counter is never decremented in such scenario, it can reach the maximum limit and new clients for duplicate in-flight queries are silently dropped resulting in degradation of resolution service. A malicious actor can exploit the vulnerability by querying the resolver for a client-controlled slow-on-demand authoritative zone that can drive the counter past the threshold. Shipped defaults for serve-expired-client-timeout: 1800 and discard-timeout: 1900 make the branch unreachable.
The product does not release a resource after its effective lifetime has ended, i.e., after the resource is no longer needed.
| Name | Vendor | Start Version | End Version |
|---|---|---|---|
| Unbound | Nlnetlabs | 1.20.0 (including) | 1.25.2 (excluding) |
| Red Hat Hardened Images | RedHat | unbound-main-1.25.2-0.1.hum1 | * |
| Unbound | Ubuntu | upstream | * |