Cloudanix VulnDB

CVE-2024-8508

None

CVSS

—

EPSS

0.8%

Published

Oct 3, 2024

CISA due date

—

Cloudanix analysis

Monitor only SSVC: Track

A bug in widely used DNS software can let attackers slow it down or make it stop answering requests by sending specially crafted data, potentially taking down network services that rely on it.

Exploitation
Remote Unauthenticated
Attacker needs
None
Complexity
Low
Impact
Denial Of Service
Component
Network Service
Class
Denial of service
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

Unbounded CPU consumption during name compression of very large RRsets in downstream DNS replies, allowing a single malicious upstream response to lock the resolver thread until packet processing completes.

Why it matters to the business

DNS resolution service becomes unavailable or severely degraded under sustained attack, disrupting all dependent applications, authentication, and network connectivity until the resolver is restarted or the attack stops.

How an attack unfolds

An attacker first creates or compromises a DNS zone containing records with extremely large RRsets, then issues queries through the target Unbound instance. Unbound fetches the malicious responses from upstream and enters an unbounded name-compression loop before replying, exhausting CPU and preventing service of other clients.

How to fix it

Upgrade nlnetlabs/unbound to version 1.21.1 or apply commit b7c61d7cc256d6a174e6179622c7fa968272c259. After upgrade, restart the service and verify the new hard limit on compression operations is active.

How to confirm the fix worked

Confirm running version is 1.21.1 or later via unbound -V. Perform load testing with queries that trigger large RRsets and verify CPU usage remains bounded and responses are either semi-compressed or truncated rather than causing long lockups.

Typical attack path

  1. Attacker registers or takes control of a domain and populates it with records containing very large RRsets.
  2. Attacker sends crafted queries to the victim Unbound resolver requesting those records.
  3. Unbound contacts upstream authoritative servers, receives the oversized responses, and begins name compression.
  4. Compression loop runs to completion without limit, holding the worker thread and starving other queries.
  5. Repeated queries cause progressive CPU exhaustion leading to denial of service.

How to detect it

Correlate high sustained CPU on the Unbound process with incoming queries for domains known to host large RRsets. Examine resolver logs for repeated requests that produce unusually large or truncated responses and check system performance counters for worker-thread starvation.

What your security team should do

  • Immediately schedule upgrade of all Unbound instances to 1.21.1.
  • Place Unbound behind rate-limiting or query-filtering layers until patched.
  • Monitor CPU utilization and queue depths on resolver hosts for early signs of resource exhaustion.
  • Review and tighten upstream ACLs or response-size limits where operationally feasible.

The record

NLnet Labs Unbound up to and including version 1.21.0 contains a vulnerability when handling replies with very large RRsets that it needs to perform name compression for. Malicious upstreams responses with very large RRsets can cause Unbound to spend a considerable time applying name compression to downstream replies. This can lead to degraded performance and eventually denial of service in well orchestrated attacks. The vulnerability can be exploited by a malicious actor querying Unbound for the specially crafted contents of a malicious zone with very large RRsets. Before Unbound replies to the query it will try to apply name compression which was an unbounded operation that could lock the CPU until the whole packet was complete. Unbound version 1.21.1 introduces a hard limit on the number of name compression calculations it is willing to do per packet. Packets that need more compression will result in semi-compressed packets or truncated packets, even on TCP for huge messages, to avoid locking the CPU for long. This change should not affect normal DNS traffic.

Affected packages

Ecosystem Package Introduced Fixed
crates.io hickory-proto 0.3.1 0.26.1
AlmaLinux:10 python3-unbound 0 1.20.0-10.el10_0
AlmaLinux:10 unbound 0 1.20.0-10.el10_0
AlmaLinux:10 unbound-anchor 0 1.20.0-10.el10_0
AlmaLinux:10 unbound-devel 0 1.20.0-10.el10_0
AlmaLinux:10 unbound-dracut 0 1.20.0-10.el10_0
AlmaLinux:10 unbound-libs 0 1.20.0-10.el10_0
AlmaLinux:8 python3-unbound 0 1.16.2-5.8.el8_10
AlmaLinux:8 unbound 0 1.16.2-5.8.el8_10
AlmaLinux:8 unbound-devel 0 1.16.2-5.8.el8_10
AlmaLinux:8 unbound-libs 0 1.16.2-5.8.el8_10
AlmaLinux:9 python3-unbound 0 1.16.2-8.el9_5.1
AlmaLinux:9 unbound 0 1.16.2-8.el9_5.1
AlmaLinux:9 unbound-devel 0 1.16.2-8.el9_5.1
AlmaLinux:9 unbound-libs 0 1.16.2-8.el9_5.1
Alpine:v3.17 unbound 0 1.20.0-r1
Alpine:v3.18 unbound 0 1.20.0-r1
Alpine:v3.19 unbound 0 1.20.0-r1
Alpine:v3.20 unbound 0 1.20.0-r1
Alpine:v3.21 unbound 0 1.21.1-r0
Alpine:v3.22 unbound 0 1.21.1-r0
Debian:11 unbound 0 No fix
Debian:11 unbound 0 1.13.1-1+deb11u4
Debian:12 unbound 0 No fix
Debian:13 unbound 0 No fix
Debian:14 unbound 0 1.21.1-1
Mageia:9 unbound 0 1.21.1-1.mga9
Red Hat:enterprise_linux:9::appstream python3-unbound 0 0:1.16.2-8.el9_5.1
Red Hat:enterprise_linux:9::appstream python3-unbound-debuginfo 0 0:1.16.2-8.el9_5.1
Red Hat:enterprise_linux:9::appstream unbound 0 0:1.16.2-8.el9_5.1
Red Hat:enterprise_linux:9::appstream unbound-debuginfo 0 0:1.16.2-8.el9_5.1
Red Hat:enterprise_linux:9::appstream unbound-debugsource 0 0:1.16.2-8.el9_5.1
Red Hat:enterprise_linux:9::appstream unbound-devel 0 0:1.16.2-8.el9_5.1
Red Hat:enterprise_linux:9::appstream unbound-libs 0 0:1.16.2-8.el9_5.1
Red Hat:enterprise_linux:9::appstream unbound-libs-debuginfo 0 0:1.16.2-8.el9_5.1
Red Hat:enterprise_linux:9::crb python3-unbound 0 0:1.16.2-8.el9_5.1
Red Hat:enterprise_linux:9::crb python3-unbound-debuginfo 0 0:1.16.2-8.el9_5.1
Red Hat:enterprise_linux:9::crb unbound 0 0:1.16.2-8.el9_5.1
Red Hat:enterprise_linux:9::crb unbound-debuginfo 0 0:1.16.2-8.el9_5.1
Red Hat:enterprise_linux:9::crb unbound-debugsource 0 0:1.16.2-8.el9_5.1
Red Hat:enterprise_linux:9::crb unbound-devel 0 0:1.16.2-8.el9_5.1
Red Hat:enterprise_linux:9::crb unbound-libs 0 0:1.16.2-8.el9_5.1
Red Hat:enterprise_linux:9::crb unbound-libs-debuginfo 0 0:1.16.2-8.el9_5.1
Red Hat:rhel_eus:9.4::appstream python3-unbound 0 0:1.16.2-8.el9_4.1
Red Hat:rhel_eus:9.4::appstream python3-unbound-debuginfo 0 0:1.16.2-8.el9_4.1
Red Hat:rhel_eus:9.4::appstream unbound 0 0:1.16.2-8.el9_4.1
Red Hat:rhel_eus:9.4::appstream unbound-debuginfo 0 0:1.16.2-8.el9_4.1
Red Hat:rhel_eus:9.4::appstream unbound-debugsource 0 0:1.16.2-8.el9_4.1
Red Hat:rhel_eus:9.4::appstream unbound-devel 0 0:1.16.2-8.el9_4.1
Red Hat:rhel_eus:9.4::appstream unbound-libs 0 0:1.16.2-8.el9_4.1
Red Hat:rhel_eus:9.4::appstream unbound-libs-debuginfo 0 0:1.16.2-8.el9_4.1
Red Hat:rhel_eus:9.4::crb python3-unbound 0 0:1.16.2-8.el9_4.1
Red Hat:rhel_eus:9.4::crb python3-unbound-debuginfo 0 0:1.16.2-8.el9_4.1
Red Hat:rhel_eus:9.4::crb unbound 0 0:1.16.2-8.el9_4.1
Red Hat:rhel_eus:9.4::crb unbound-debuginfo 0 0:1.16.2-8.el9_4.1
Red Hat:rhel_eus:9.4::crb unbound-debugsource 0 0:1.16.2-8.el9_4.1
Red Hat:rhel_eus:9.4::crb unbound-devel 0 0:1.16.2-8.el9_4.1
Red Hat:rhel_eus:9.4::crb unbound-libs 0 0:1.16.2-8.el9_4.1
Red Hat:rhel_eus:9.4::crb unbound-libs-debuginfo 0 0:1.16.2-8.el9_4.1
Rocky Linux:8 unbound 0 0:1.16.2-5.8.el8_10
Rocky Linux:9 unbound 0 0:1.16.2-8.el9_5.1
SUSE:Linux Enterprise Micro 5.5 unbound 0 1.20.0-150100.10.19.1
SUSE:Linux Enterprise Module for Basesystem 15 SP5 unbound 0 1.20.0-150100.10.19.1
SUSE:Linux Enterprise Module for Basesystem 15 SP6 unbound 0 1.20.0-150600.23.9.1
SUSE:Linux Enterprise Module for Package Hub 15 SP5 unbound 0 1.20.0-150100.10.19.1
SUSE:Linux Enterprise Module for Package Hub 15 SP6 unbound 0 1.20.0-150600.23.9.1
Ubuntu:20.04:LTS unbound 0 1.9.4-2ubuntu1.9
Ubuntu:22.04:LTS unbound 0 1.13.1-1ubuntu5.8
Ubuntu:24.04:LTS unbound 0 1.19.2-1ubuntu3.3
Ubuntu:24.10 unbound 0 1.20.0-1ubuntu2.1
Ubuntu:Pro:14.04:LTS unbound 0 1.4.22-1ubuntu4.14.04.3+esm2
Ubuntu:Pro:16.04:LTS unbound 0 1.5.8-1ubuntu1.1+esm2
Ubuntu:Pro:18.04:LTS unbound 0 1.6.7-1ubuntu2.6+esm3
openSUSE:Leap 15.5 unbound 0 1.20.0-150100.10.19.1
openSUSE:Leap 15.6 unbound 0 1.20.0-150600.23.9.1
openSUSE:Tumbleweed unbound 0 1.21.1-1.1

Related vulnerabilities