unbound: patch CVE-2026-56444

Details:
https://nvd.nist.gov/vuln/detail/cve-2026-56444

Signed-off-by: Ankur Tyagi <ankur.tyagi85@gmail.com>
Signed-off-by: Anuj Mittal <anuj.mittal@oss.qualcomm.com>
This commit is contained in:
Ankur Tyagi
2026-09-15 10:14:05 +05:30
committed by Anuj Mittal
parent b03acb631b
commit 47d7dbdd10
2 changed files with 52 additions and 0 deletions
@@ -0,0 +1,51 @@
From 200cd7322d9462025b1d2b9f3e1fe5383735a6c6 Mon Sep 17 00:00:00 2001
From: "W.C.A. Wijngaards" <wouter@nlnetlabs.nl>
Date: Wed, 22 Jul 2026 10:19:50 +0200
Subject: [PATCH] - Fix CVE-2026-56444, Degradation of resolution service when
'discard-timeout' and 'serve-expired-client-timeout' are combined in
unusual configuration. Thanks to Qifan Zhang, Palo Alto Networks, for the
report. In addition, thanks to Xin Wang, Jiapeng Li, and Jiajia Liu,
Northwestern Polytechnical University, for also reporting this issue. In
addition, thanks to Haruki Oyama (Waseda University), for also reporting
this issue.
(cherry picked from commit 84d9682dd0876bc0cd118ecce03661f3443b0222)
CVE: CVE-2026-56444
Upstream-Status: Backport [https://github.com/NLnetLabs/unbound/commit/84d9682dd0876bc0cd118ecce03661f3443b0222]
Signed-off-by: Ankur Tyagi <ankur.tyagi85@gmail.com>
---
services/mesh.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/services/mesh.c b/services/mesh.c
index 432063c0d..a6798953e 100644
--- a/services/mesh.c
+++ b/services/mesh.c
@@ -2505,9 +2505,10 @@ mesh_serve_expired_callback(void* arg)
log_dns_msg("Serve expired lookup", &qstate->qinfo, msg->rep);
for(r = mstate->reply_list; r; r = r->next) {
- struct timeval old;
- timeval_subtract(&old, mstate->s.env->now_tv, &r->start_time);
- if(mstate->s.env->cfg->discard_timeout != 0 &&
+ if(mesh_is_udp(r)) {
+ struct timeval old;
+ timeval_subtract(&old, mstate->s.env->now_tv, &r->start_time);
+ if(mstate->s.env->cfg->discard_timeout != 0 &&
((int)old.tv_sec)*1000+((int)old.tv_usec)/1000 >
mstate->s.env->cfg->discard_timeout) {
/* Drop the reply, it is too old */
@@ -2525,8 +2526,11 @@ mesh_serve_expired_callback(void* arg)
http2_stream_remove_mesh_state(r->h2_stream);
comm_point_drop_reply(&r->query_reply);
mstate->reply_list = reply_list;
+ log_assert(mstate->s.env->mesh->num_reply_addrs > 0);
+ mstate->s.env->mesh->num_reply_addrs--;
mstate->s.env->mesh->num_queries_discard_timeout++;
continue;
+ }
}
i++;
@@ -42,6 +42,7 @@ SRC_URI = "git://github.com/NLnetLabs/unbound.git;protocol=https;branch=master;t
file://CVE-2026-55990.patch \
file://CVE-2026-55991.patch \
file://CVE-2026-56416.patch \
file://CVE-2026-56444.patch \
"
SRCREV = "f6269baa605d31859f28770e01a24e3677e5f82c"