diff --git a/meta-networking/recipes-support/unbound/unbound/CVE-2026-56444.patch b/meta-networking/recipes-support/unbound/unbound/CVE-2026-56444.patch new file mode 100644 index 0000000000..efbf9526a0 --- /dev/null +++ b/meta-networking/recipes-support/unbound/unbound/CVE-2026-56444.patch @@ -0,0 +1,51 @@ +From 200cd7322d9462025b1d2b9f3e1fe5383735a6c6 Mon Sep 17 00:00:00 2001 +From: "W.C.A. Wijngaards" +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 +--- + 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++; diff --git a/meta-networking/recipes-support/unbound/unbound_1.24.2.bb b/meta-networking/recipes-support/unbound/unbound_1.24.2.bb index 516ea20654..faf315876c 100644 --- a/meta-networking/recipes-support/unbound/unbound_1.24.2.bb +++ b/meta-networking/recipes-support/unbound/unbound_1.24.2.bb @@ -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"