In NLnet Labs Unbound 1.10.0 up to and including 1.25.1, when serve-expired: yes is set together with a response-ip: redirect /response-ip-data: CNAME rule (or the RPZ rpz-cname-override equivalent), a remote client who controls any delegated domain can crash the daemon. The serve-expired-client-timeout callback runs a two-pass loop to chase the respip-generated CNAME alias; on the second pass it resets alias_rrset but not partial_rep. Later, this inconsistency leads to a NULL pointer dereference and an eventual crash. A malicious actor can exploit the vulnerability by controlling any zone that replies with an A/AAAA record that falls inside the configured response-ip/rpz subnet. By delaying the answer when the previous record has expired, the vulnerable path of serve-expired-client-timeout is taken leading to denial of service via the server crash.
The product dereferences a pointer that it expects to be valid but is NULL.
| Name | Vendor | Start Version | End Version |
|---|---|---|---|
| Unbound | Ubuntu | upstream | * |