CVE-2026-50046
ŚrednieCVSS 5.9Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 16 - wyżej niż 16% wszystkich znanych CVE
Streszczenie
W Unbound od wersji 1.15.0 do 1.25.1, nazwa serwera TLS używana dla zapytań DoT jest przechowywana w strukturze 'serviced_query', ale także referencjonowana przez 'waiting_tcp'. Gdy struktura zostanie usunięta podczas uzgadniania TLS, a następnie wystąpi błąd, następuje dereferencja zwolnionego wskaźnika, co prowadzi do awarii demona.
Ocena ryzyka
Atakujący znający konfigurację Unbound z DoT może spowodować awarię serwera DNS poprzez precyzyjnie wymierzone zapytania i obciążenie.
Rekomendacja
Zaktualizuj Unbound do wersji 1.25.2 lub nowszej, która zawiera poprawkę dla tego problemu.
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-56416Średnie
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.
- 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.
Oryginalny opis (angielski, źródło NVD)
In NLnet Labs Unbound 1.15.0 up to and including 1.25.1, the TLS server name used for DNS-over-TLS (DoT) forwarded queries is tied to a struct's ('serviced_query') lifetime but also referenced by another struct ('waiting_tcp'). When the owning struct is jostled out of the mesh while the DoT TCP stream is still handshaking it frees the storage behind the referenced string and if the TLS stream then errors out, it dereferences the freed pointer. The dereference is read-only and the practical impact is a daemon crash resulting in denial of service. A malicious actor that knows a DoT forwarding/stub Unbound's configuration could exploit the vulnerability by quering records in the appropriate zone while keeping Unbound uder pressure so that the jostle logic kicks in. If answers for the vulnerable zone are slow, the likelihood of jostling such queries is higher, although the timing of the jostle needs to be precise. Requirements for a vulnerable Unbound is the existence of a stub/forward zone configured for DoT together with a configured '#authname' suffix on the server identification. The connectivity to the server needs to exhibit a transient failure at the correct time in order to kick off the vulnerable error path.

