CVE-2026-80212
WysokieCVSS 7.5Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 40 - wyżej niż 40% wszystkich znanych CVE
Streszczenie
W gemie resolv przed wersją 0.7.2 dla Ruby, podczas dekodowania odpowiedzi DNS, dla każdego nieznanego rekordu (typ, klasa) lub SvcParamKey generowana jest nowa klasa, która jest trwale rejestrowana jako stała i w hashach, co powoduje nieograniczony wzrost pamięci. Atakujący kontrolujący odpowiedzi DNS może wysłać odpowiedź z tysiącami nieznanych typów, powodując trwały wzrost pamięci procesu, który nie jest odzyskiwany przez GC.
Ocena ryzyka
Nieograniczony wzrost pamięci może prowadzić do wyczerpania zasobów i awarii usługi (DoS).
Rekomendacja
Zaktualizuj gem resolv do wersji 0.7.2 lub nowszej, która naprawia ten problem.
Oryginalny opis (angielski, źródło NVD)
An issue was discovered in the resolv gem before 0.7.2 for Ruby. Resolv::DNS::Resource.get_class, Resolv::DNS::Resource::Generic.create, and Resolv::DNS::SvcParam::Generic.create generate a new class for each unknown DNS resource record (type, class) pair, or each unknown SvcParamKey, encountered while decoding a response. Each generated class was permanently registered both as a constant on Resource (or SvcParam::Generic) and as an entry in a class-lookup hash (ClassHash), and thus the class remained reachable through that constant after the response was discarded. Type and class are each 16-bit values, and thus an attacker controlling DNS responses (a spoofed response, or a malicious or hijacked upstream DNS server) has roughly 2^32 distinct (type, class) pairs to choose from. A single response of a few hundred kilobytes carrying tens of thousands of distinct unknown types permanently grows process memory by tens of megabytes; repeated responses accumulate without bound and are never reclaimed by garbage collection, because the constant keeps each class alive. Any code path that calls Resolv::DNS::Message.decode on attacker-influenced DNS responses is affected. resolv is a default gem, and thus this is reachable from a plain Ruby installation without any additional dependency.

