简介
远程 Amazon Linux 2023 主机缺少安全更新。
描述
因此,该软件受到 ALAS2023-2026-2033 公告中提及的多个漏洞影响。
在 NLnet Labs Unbound 1.16.2 及之前 1.25.1版本中,发现一个与 CVE-2026-40622 “ghost 域名”系列攻击类似的漏洞,其可将 ghost 域窗口扩展至多个一个 A/AAAA 胶水记录的缓存 TTL 配置值。与其他“ghost 域名”攻击类似,攻击者需要控制(ghost)区域,并且能够查询易受攻击的 Unbound。单个客户端 A/AAAA 查询可能导致 Unbound 覆盖缓存过期的父端胶水 rrset,实质上将 ghost 域窗口扩展最多一个缓存的 TTL 配置值(“cache-max-ttl”)。在使用了“harden-referral-path: yes”的配置(非默认配置)中,不需要任何客户端查询,因为 Unbound 会隐式执行该查询。这是仅处理 NS 查询的变体 CVE-2026-40622 。(CVE-2026-42955)
在 NLnet Labs Unbound 及之前版本 1.25.1中,如果达到阈值并且由于函数调用允许列表中缺少该函数,libunbound 需要调用“libworker_alloc_cleanup”,则使用 libunbound 并使用“unwanted-reply-threshold”进行配置的应用程序最终可突然终止。当使用 libunbound 的应用程序将“unwanted-reply-threshold”设置为任何非零值,并且迭代器查询以足够错误的 transaction-ID UDP 数据报超过阈值回复的权威设备时,最终将调用“libworker_alloc_cleanup”。由于函数调用允许列表中缺少该函数,这会导致 libunbound 的致命退出并最终终止嵌入应用程序。Unbound 本身不受影响,因为其相关函数“worker_alloc_cleanup”已在允许列表中注册,并继续执行记录的缓存刷新。(CVE-2026-44621)
在 NLnet Labs Unbound 1.13.2 中(含 1.25.1)、名称位于 DNSSEC 签名区域下方的中间实验室的存根或转发区域可能会被中间标签的父级安全 NXDOMAIN 答案遮蔽。这是由“harden-below-nxdomain”逻辑中的差一错误导致的;
默认情况下启用。它可有效绕过配置,并且永远不会联系配置的存根/转发区域。“harden-below-nxdomain”与不允许在存根/转发区域上方合成 NXDOMAIN 的委派点防护一起执行向上 DNS 缓存遍历。该防护在剥离标签之前测试域名。这会产生一个迭代,其中域名等于配置的存根/转发区域顶点,后者通过防护,再剥离一个标签,并探测顶点的直接公共父级处的缓存。如果该父项具有缓存的 DNSSEC 安全 NXDOMAIN(将为任何在签名的公共名称下嵌套两个或更多标签的私有命名空间)进行缓存,则 walk 会返回该域名,并且永远不会联系配置的存根/转发上游。这只能由查询中间标签(在存根/转发顶点和 DNSSEC 父区域之间)触发。(CVE-2026-44687)
在 NLnet Labs Unbound 1.7.0 中(含 1.25.1),对 RRSIG 的验证不足。标签字段与 RFC 8198 激进 NSEC 处理期间的过早缓存写入相结合会导致缓存中毒,从而允许控制单个委派区域的恶意执行者毒化 NSEC 签名父域下的任意同级区域。在 NSEC 签署的 TLD 下拥有一个注册域的恶意执行者,可为不相关的同级域(共享相同的父区域)提供恶意的不安全 DNS 响应。
父域下不存在且由父域 NSEC 链覆盖的任意委派可通过来自恶意同级域的欺骗性通配符 DS 记录(标签少于预期,未知算法)呈现为不安全存在。这允许恶意执行者为这些委派注入不安全的通配符记录。(CVE-2026-44690)
在 NLnet Labs Unbound 1.6.0 (包括 1.25.1)中,仅根据 RRSIG 验证将通配符 rrset 作为另一段数据进行重播可短暂地视为 DNSSEC 安全并存储到缓存中,之后的验证会根据 NSEC 验证将其视为虚假的。当解析线程在 rrset 上放置安全,并且服务过期路径上的另一个线程随后获取具有回复安全的安全状态的更新后的 rrset 内容时,它可用于将通配符可能涵盖的通配符旁的特定记录更改为通配符。恶意执行者可通过拥有任何 DNSSEC 签名的域(与受害者域无关)和指向通配符(通配符可能被通配符覆盖)旁边的记录的 CNAME 封装程序记录来利用可能的有害影响。然后,查询 Unbound 以获取通配符同级记录,则会植入安全消息。以后(过期后)对 CNAME 封装程序的查询需要解析目标同级记录。如果将通配符重播注入响应,通配符 rrset 将把过期的同级记录更新为安全状态,然后再使用 NSEC 记录完成适当的通配符验证,并最终将 CNAME 封装程序答案视为虚假。更新后的中毒 rrset 现在是安全的,并指向通配符。此漏洞明确用于服务过期路径,需要注入已签名的通配符 rrset,且没有 NSEC 伴随的 rrset。(CVE-2026-46582)
在 NLnet Labs Unbound 1.15.0 及之前 1.25.1版本中,用于 DNS-over-TLS (DoT) 转发查询的 TLS 服务器名称与结构 ('serviced_query') 的生命周期相关联,但也被另一个结构 ('waiting_tcp') 引用。当拥有的结构体在 DoT TCP 流仍在握手时被挤出网格时,它会释放引用字符串后面的存储,如果 TLS 流随后出错,它将取消引用已释放的指针。取消引用为只读,实际影响为后台程序崩溃,从而导致拒绝服务。知道 DoT 转发/存根 Unbound 配置的恶意执行者可通过查询相应区域中的记录利用此漏洞,同时保持 Unbound uder 压力,以便启动推挤逻辑。如果易受攻击区域的回答很慢,则推挤此类查询的可能性会更高,尽管推挤的时间需要精确。存在漏洞的 Unbound 要求是存在为 DoT 配置的存根/转发区域,以及服务器标识上配置的“#authname”后缀。服务器的连接需要在正确的时间出现暂时性故障,才能启动易受攻击的错误路径。(CVE-2026-50046)
在 NLnet Labs Unbound 1.6.2 及之前 1.25.1版本中,当 Unbound 在验证器前面配置了“respip”模块以及“response-ip”重定向规则或带有 RPZ-IP 触发器的 RPZ 文件时,重写处理程序不会检查上游答案的安全状态,而是可能重写一个虚假的 A/AAAA 答案以指向运算符的配置 IP。如果验证器发现 A 记录属于“response-ip”/RPZ 配置的答案中存在过期或在其他方面无效的 RRSIG,则仍会重写该答案并赋予硬编码安全级别 INSECURE。这会导致客户端收到由运算符的配置 IP 重写的不安全的 NOERROR 回复。恶意执行者可通过伪造属于运算符配置的子网重写内的虚假 A/AAAA 答案来利用可能的有害影响。然后,这些受 DNSSEC 保护的应答会以不安全的方式重定向至操作员的配置目标。(CVE-2026-50243)
在 NLnet Labs Unbound 1.7.0 及之前(包括以下版本 1.25.1)中,当 auth/rpz 区域拥有解析为 BOGUS A/AAAA 的配置主主机名时,它仍被视为可能的 XFR 端点。可欺骗主机名的 A/AAAA 记录(无需有效 RRSIG)的恶意执行者将成为区域的 XFR 主执行者并可替换整个区域/解析器的完整响应策略。(CVE-2026-50248)
在 NLnet Labs Unbound 及之前的版本 1.25.1中,当启用了“unwanted-reply-threshold”(设置为大于零的任意值)时,/::0 的 0.0.0.0胶水记录可通过发出 DNS 查询并接收看似不需要的回复,在可以引导此类流量的系统上短路 Unbound,因为远程 IP 与原始源 IP 0.0.0.0 不匹配/::0.此行为会持续循环寻找胶水记录,并将计数器推送到配置的“unwanted-reply-threshold”,此函数可触发防御性缓存清除。控制返回 /::0 的 0.0.0.0辖区内胶水的委派的恶意执行者可将计数器驱动到阈值的“unwanted-reply-threshold”限制,并触发消息和 rrset 缓存的缓存清除;无限期,无需发送任何伪造数据包。迭代器使用 0.0.0.0/::0 胶水,以及可以路由此胶水的系统(例如,Linux 内核通过环回路由数据报),Unbound 自己的监听器 127.0.0.1从 . 由于 和 127.0.0.1在此0.0.0.0示例中不匹配,Unbound 将回复视为不需要的(可能是欺骗性的)应答。每次缓存刷新时计数器重置为零,因此攻击永久循环。(CVE-2026-50251)
在 NLnet Labs Unbound 1.4.22 及之前(包括 1.25.1)中,UDP 源端口是随机的,旨在用作增加 DNS 事务熵的秘密值。当解析器负载平衡策略依赖于源端口而其结果泄露时,此保密性就会受到破坏。当负载平衡策略对于传入源 UDP 端口和 IP 地址保持一致,同时严重依赖传入源 UDP 端口作为随机化源时,便会出现该漏洞。
当 Unbound 中启用了 SO_REUSEPORT 配置选项(“so-reuseport: yes”)时(默认),它满足这些条件,使其容易遭受 DNS 缓存中毒攻击。启动时,Unbound 会将可用的 UDP 源端口空间随机划分为(几乎)大小相等的不相交子集,并将每个子集分配给特定的工作线程。收到传入 DNS 查询时,内核的SO_REUSEPORT负载平衡机制会确定性地将查询分配给与特定线程关联的套接字。解析该请求期间生成的所有外发 DNS 查询都使用从分配给相应线程的端口子集中专门选择的源端口。由于这些端口子集在线程间是不相交的,因此在解析器对权威名称服务器的传出查询中观察到的源端口可用作处理原始客户端查询的工作线程的可靠指示符。恶意执行者可获取传入 UDP 源端口(针对给定固定源 IP 地址)和 Unbound 工作线程之间的映射,并通过有效降低每个线程的随机端口填充数,利用此映射执行 DNS 缓存中毒攻击。(CVE-2026-50252)
在 NLnet Labs Unbound 1.6.0 及之前 1.25.1版本中,当视图一开始就没有本地数据配置时,'unbound-control' 的 'view_local_data' 和 'view_local_datas' 命令会为该视图创建裸露的本地区域树。但是,通过控制界面创建会省略添加默认受保护的区域(例如,RFC 1918 反向、 AS112 zones、.onion、.localhost)。一旦存在没有默认值的本地区域树,则映射到该视图的客户端中针对受默认保护名称的每个查询都会通过迭代器转义到公共 DNS,而不是在本地进行应答,从而绕过本地策略预期。(CVE-2026-55708)
在 NLnet Labs Unbound 1.10.0 (包括以下 1.25.1版本)中,若将 'serve-expired: yes' 与 'response-ip: <net> redirect' /'response-ip-data: <net> CNAME <target>' 规则(或 RPZ 'rpz-cname-override' 等同项)设置在一起,则控制任何委派域的远程客户端可使后台程序崩溃。serve-expired-client-timeout 回调运行双传递循环以追逐 respip 生成的 CNAME 别名;在第二次传递中,它重置“alias_rrset”而不会重置“partial_rep”。随后,这种不一致会导致空指针取消引用和最终崩溃。恶意执行者可通过控制以所配置 response-ip/rpz 子网内的 A/AAAA 记录进行回复的任何区域,以恶意利用此漏洞。若在上一条记录过期时延迟回答,系统会采用“serve-expired-client-timeout”的易受攻击路径,通过服务器崩溃导致拒绝服务。(CVE-2026-55717)
在 NLnet Labs Unbound 及之前版本 1.25.1(含)中,当验证器为 RRSIG 涵盖的 PX/RP/MINFO/SOA RRset 构建规范 RDATA 表单时,它会将第二个嵌入式域名的地址计算为“datstart + dname_valid(datstart, ...)”,然后直接将其传递到“query_dname_tolower()”,而不检查 RDATA 中是否实际存在第二个名称。有线格式解析器接受 RDATA 在名字之后结尾的多 dname RR,因此,运行 DNSSEC 签名的权威服务器的攻击者可传递缺少第二个域名(例如 SOA 记录)的记录,并造成“query_dname_tolower()”逐个标签遍历每个工作线程“env->scratch_buffer”中的过时字节,超过该堆分配的末尾(如果“msg-buffer-size”已从默认值降低)。这会导致堆缓冲区溢出,并且在版本中,结果在很大程度上依赖于缓冲区末尾和相邻堆区块的内容。(CVE-2026-56416)
Tenable 已直接从测试产品的安全公告中提取上述描述块。
请注意,Nessus 尚未测试这些问题,而是只依据应用程序自我报告的版本号进行判断。
解决方案
运行“dnf update unbound --releasever 2023.12.20260803”或“dnf update --advisory ALAS2023-2026-2033 --releasever 2023.12.20260803”以更新系统。
插件详情
文件名: al2023_ALAS2023-2026-2033.nasl
代理: unix
支持的传感器: Agentless Assessment, Continuous Assessment, Frictionless Assessment Agent, Frictionless Assessment AWS, Nessus Agent, Tenable Cloud Security, Tenable Self-Hosted Container Security, Nessus
风险信息
矢量: CVSS2#AV:A/AC:L/Au:N/C:N/I:C/A:C
矢量: CVSS:3.0/AV:A/AC:L/PR:N/UI:N/S:C/C:N/I:H/A:H
时间矢量: CVSS:3.0/E:U/RL:O/RC:C
Threat Vector: CVSS:4.0/E:P
Vector: CVSS:4.0/AV:A/AC:L/AT:P/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:H/SA:H
漏洞信息
CPE: cpe:/o:amazon:linux:2023, p-cpe:/a:amazon:linux:python3-unbound-debuginfo, p-cpe:/a:amazon:linux:python3-unbound, p-cpe:/a:amazon:linux:unbound-anchor-debuginfo, p-cpe:/a:amazon:linux:unbound-anchor, p-cpe:/a:amazon:linux:unbound-debuginfo, p-cpe:/a:amazon:linux:unbound-debugsource, p-cpe:/a:amazon:linux:unbound-devel, p-cpe:/a:amazon:linux:unbound-libs-debuginfo, p-cpe:/a:amazon:linux:unbound-libs, p-cpe:/a:amazon:linux:unbound-utils-debuginfo, p-cpe:/a:amazon:linux:unbound-utils, p-cpe:/a:amazon:linux:unbound
必需的 KB 项: Host/local_checks_enabled, Host/AmazonLinux/release, Host/AmazonLinux/rpm-list
易利用性: No known exploits are available
参考资料信息
CVE: CVE-2026-42955, CVE-2026-44621, CVE-2026-44687, CVE-2026-44690, CVE-2026-46582, CVE-2026-50046, CVE-2026-50243, CVE-2026-50248, CVE-2026-50251, CVE-2026-50252, CVE-2026-55708, CVE-2026-55717, CVE-2026-56416