CVE-2026-56416
ŚrednieCVSS 4.8Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 2 - wyżej niż 2% wszystkich znanych CVE
Streszczenie
W NLnet Labs Unbound do wersji 1.25.1, podczas budowania kanonicznej formy RDATA dla zestawu rekordów RRSIG-covered PX/RP/MINFO/SOA, walidator oblicza adres drugiej osadzonej nazwy domeny jako 'datstart + dname_valid(datstart, ...)' i przekazuje go bezpośrednio do 'query_dname_tolower()' bez sprawdzania, czy druga nazwa faktycznie występuje w RDATA. Atakujący prowadzący autorytatywny serwer DNSSEC może dostarczyć rekord z brakującą drugą nazwą domeny (np. rekord SOA) i spowodować, że 'query_dname_tolower()' będzie przetwarzać nieaktualne bajty w buforze 'env->scratch_buffer', wychodząc poza jego alokację sterty, jeśli 'msg-buffer-size' został zmniejszony. Prowadzi to do przepełnienia bufora sterty.
Ocena ryzyka
Podatność może prowadzić do przepełnienia bufora sterty, co może skutkować awarią Unbound lub potencjalnie wykonaniem kodu przez atakującego.
Rekomendacja
Zaleca się aktualizację Unbound do wersji 1.25.2 lub nowszej oraz przywrócenie domyślnego rozmiaru 'msg-buffer-size'.
Inne podatności w Unbound
Zobacz wszystkie- CVE-2026-50252Krytyczne
W bibliotece Unbound od wersji 1.4.22 do 1.25.1 stwierdzono podatność na zatruwanie pamięci podręcznej DNS. Problem wynika z deterministycznego przypisywania zakresów portów UDP do wątków roboczych przy włączonej opcji SO_REUSEPORT, co umożliwia atakującemu przewidzenie portu źródłowego i obniżenie entropii transakcji DNS.
- CVE-2026-42960Krytyczne
NLnet Labs Unbound do wersji 1.25.0 włącznie jest podatny na zatruwanie pamięci podręcznej poprzez promiscuous rekordy w sekcji autorytatywnej. Atakujący może wstrzyknąć rekordy inne niż NS (np. MX) wraz z rekordami adresowymi, które Unbound buforuje, co prowadzi do zatrucia pamięci podręcznej. Wersja 1.25.1 zawiera poprawkę odrzucającą rekordy adresowe z sekcji dodatkowej, jeśli nie są one jawnie związane z rekordami NS.
- CVE-2026-33278Krytyczne
NLnet Labs Unbound od wersji 1.19.1 do 1.25.0 ma podatność w walidatorze DNSSEC polegającą na błędzie przypisania struktury podczas głębokiego kopiowania, co prowadzi do wiszącego wskaźnika i potencjalnego wykonania kodu.
- CVE-2026-56444Średnie
W Unbound od wersji 1.20.0 do 1.25.1, przy konfiguracji 'serve-expired: yes' i 'serve-expired-client-timeout > discard-timeout > 0', logika discard-timeout nieprawidłowo aktualizuje licznik odpowiedzi, co może doprowadzić do odrzucania nowych klientów i degradacji usługi. Atakujący może to wykorzystać, wysyłając zapytania do wolnej strefy autorytatywnej.
- CVE-2026-55991Średnie
W Unbound od wersji 1.22.0 do 1.25.1, zdalny, nieuwierzytelniony klient może wywołać asercję w libngtcp2 (jeśli skompilowano z asercjami) i zakończyć proces Unbound przez pojedyncze połączenie DoQ i jedno zapytanie DNS. Problem wynika z błędnego przekazania wartości '-1' do funkcji libngtcp2.
- CVE-2026-55990Średnie
W Unbound od wersji 1.7.0 do 1.25.1, gdy w konfiguracji DNSCrypt jest więcej certyfikatów niż kluczy, Unbound wypełnia pozostałe sloty danymi '0xdb' z alokatora libsodium. Nieuwierzytelniony klient wysyłający datagram UDP ≥68 bajtów z pierwszymi 8 bajtami '0xdb' na port DNSCrypt może spowodować awarię serwera.
- CVE-2026-55717Średnie
W Unbound od wersji 1.10.0 do 1.25.1, przy włączonej opcji 'serve-expired: yes' i regule 'response-ip' lub 'rpz-cname-override', zdalny klient kontrolujący delegowaną domenę może spowodować awarię demona. Problem wynika z niespójności w logice obsługi aliasów CNAME w funkcji serve-expired-client-timeout.
- CVE-2026-55708Niskie
W Unbound od wersji 1.6.0 do 1.25.1, polecenia 'view_local_data' i 'view_local_datas' w 'unbound-control' tworzą gołą strefę lokalną dla widoku bez domyślnych stref chronionych (np. RFC 1918 reverse, AS112, .onion, .localhost). Powoduje to, że zapytania o te nazwy są kierowane do publicznego DNS zamiast odpowiadane lokalnie, omijając politykę lokalną.
- CVE-2026-54478Niskie
W NLnet Labs Unbound od wersji 1.18.0 do 1.25.1, gdy Unbound nasłuchuje na interfejsie 'proxy-protocol-port' z włączoną opcją 'answer-cookie: yes', serwerowe ciasteczko SipHash (RFC 9018) jest obliczane na podstawie adresu sieciowego proxy, a nie adresu klienta zadeklarowanego w PROXYv2. Oznacza to, że jedno ciasteczko uzyskane przez dany węzeł proxy jest ważne dla wszystkich źródeł zadeklarowanych przez to proxy. Atakujący spoza ścieżki może zebrać jedno ciasteczko za pomocą jednego legalnego zapytania, a następnie odtworzyć je pod dowolnym sfałszowanym źródłem, omijając mechanizmy DNS Cookie.
- CVE-2026-52863Średnie
W Unbound od wersji 1.25.0 do 1.25.1, poprawka umożliwiająca współpracę modułów 'respip' i 'dns64' tworzy płytką kopię nazwy widoku, co może prowadzić do uszkodzenia pamięci, gdy oryginalny właściciel nazwy widoku zostanie usunięty pod obciążeniem. Prawdopodobieństwo awarii jest niskie.
Oryginalny opis (angielski, źródło NVD)
In NLnet Labs Unbound up to and including version 1.25.1, when the validator builds the canonical RDATA form for an RRSIG-covered PX/RP/MINFO/SOA RRset, it computes the address of the second embedded domain name as 'datstart + dname_valid(datstart, ...)' and passes it straight to 'query_dname_tolower()' without checking that a second name is actually present in the RDATA. The wire-format parser accepts multi-dname RRs whose RDATA ends after the first name, so an attacker who runs a DNSSEC-signed authoritative server can deliver a record with an absent second domain name (e.g. SOA record) and cause 'query_dname_tolower()' to walk label-by-label through stale bytes in the per-worker 'env->scratch_buffer', past the end of that heap allocation if 'msg-buffer-size' has been lowered from the default. This leads to heap buffer overflow and on a release build the outcome relies heavily on the contents of the buffer tail and the adjacent heap chunk.

