CVE-2026-80212
HighCVSS 7.5Exploitation Probability (EPSS)
Low risk40th percentile - higher than 40% of all known CVEs
Summary
In the resolv gem before version 0.7.2 for Ruby, during decoding of DNS responses, a new class is generated for each unknown record (type, class) pair or SvcParamKey, and permanently registered as a constant and in hashes, causing unbounded memory growth. An attacker controlling DNS responses can send a response with thousands of unknown types, causing permanent process memory growth that is not reclaimed by GC.
Risk Assessment
Unbounded memory growth may lead to resource exhaustion and service denial (DoS).
Recommendation
Upgrade the resolv gem to version 0.7.2 or later, which fixes this issue.
Original NVD description (English source)
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.

