Skip to main content

Ruby resolv gem EUVDEUVD-2026-67138

| CVE-2026-80212 HIGH
Allocation of Resources Without Limits or Throttling (CWE-770)
2026-08-27 mitre GHSA-x2vh-ff4w-v64c
7.5
CVSS 3.1 · Vendor: mitre
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Gain control of upstream DNS resolver or achieve on-path DNS spoofing position
  2. Delivery
    Craft DNS responses containing tens of thousands of distinct unknown type/class pairs
  3. Exploit
    Target Ruby application calls Resolv::DNS::Message.decode on attacker-supplied response
  4. Execution
    Each unknown pair triggers permanent class and constant registration in ClassHash
  5. Persist
    Memory grows unbounded across repeated response cycles
  6. Impact
    Ruby process exhausts available memory and crashes

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Resource allocation limits
MITRE ATT&CK

1 technique across 1 tactic: Impact

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires the attacker to control DNS responses returned to the target Ruby application - specifically through one of: a spoofed DNS response delivered via an on-path network position, a malicious DNS server configured as the application's upstream resolver, or a hijacked legitimate upstream DNS server. No special application configuration is required; any code path calling Resolv::DNS::Message.decode (including standard Ruby DNS lookup utilities) is affected as long as the response content can be attacker-influenced. Exploitation is bounded by the prerequisite of DNS response control, which prevents trivial opportunistic mass exploitation but does not protect applications resolving external or user-supplied hostnames. DNSSEC deployment at the resolver reduces the viability of spoofed-response attacks but does not address the compromised-resolver scenario. The vulnerability is present in all Ruby installations using resolv prior to 0.7.2, with no platform or version carve-outs noted in the advisory.

Impact

The CVSS 3.1 score of 7.5 (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H) accurately characterizes a remotely exploitable denial-of-service with no authentication or user interaction requirement. The practical exploitation barrier is the need to influence DNS responses reaching the target - via DNS cache poisoning, an on-path spoofing position, or a malicious or hijacked upstream resolver - which is a meaningful prerequisite that AC:L arguably understates. EPSS data is absent from the available intelligence, preventing probabilistic exploitation likelihood assessment; the CVE does not appear in CISA KEV and no public exploit code has been identified, indicating active exploitation is not yet confirmed. Despite these moderating factors, the real-world risk is substantial: the memory accumulation is mechanically permanent and unbounded - the Ruby runtime's GC invariants guarantee classes anchored by constants are never collected - meaning even a modest volume of crafted responses causes irreversible process memory growth. The threat model is most relevant for Ruby applications that resolve external or attacker-influenced hostnames, including applications that follow redirects, resolve user-supplied domains, or use resolv as part of a service-discovery or email-handling flow. The inability to recover memory without a process restart means that sustained low-rate exploitation can degrade service over time rather than requiring a single large-volume burst.

Exploit ScenarioDerived

An attacker who has compromised or is impersonating an upstream DNS resolver sends a series of DNS responses to a target Ruby application, each containing tens of thousands of resource records with distinct unknown (type, class) pairs. Each decoded response permanently registers hundreds of new Ruby class constants in the resolv library's ClassHash, growing the process heap by tens of megabytes per response. After repeated exchanges - automated and requiring no user interaction - the Ruby process exhausts available memory and terminates, denying service. No public exploit code exists at time of analysis, but the attack is mechanically straightforward for any actor with DNS response control.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.5% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Aug 27, 2026

Unbounded memory exhaustion in Ruby's resolv gem (before 0.7.2) allows an attacker controlling DNS responses to permanently grow a target process's memory without limit, eventually crashing the service. The root cause is that Resolv::DNS::Resource.get_class and related methods register a new Ruby class as a constant for each unknown DNS resource record type/class pair encountered, preventing garbage collection for the lifetime of the process. Because resolv is a default Ruby gem requiring no installation step, any plain Ruby installation performing DNS resolution - web services, workers, CLI tools - is exposed without opt-in configuration, and no public exploit has been identified at time of analysis.

RemediationAI

The primary fix is to upgrade the resolv gem to version 0.7.2 or later, which corrects the unbounded class registration behavior. Operators can update the gem independently of the Ruby runtime version by running 'gem update resolv', or by pinning 'gem "resolv", ">= 0.7.2"' in a Gemfile and running 'bundle update resolv'. Full advisory details are at https://www.ruby-lang.org/en/news/2026/08/27/multiple-vulnerabilities-in-resolv/. Where immediate patching is not feasible, targeted compensating controls include: restricting Ruby applications to trusted, internally managed DNS resolvers (reduces risk from external DNS hijacking but does not prevent a compromised resolver); deploying DNSSEC validation at the resolver level to reject spoofed responses (reduces spoofing vectors but does not help against a legitimately compromised upstream server); and monitoring Ruby process memory growth as a leading indicator of exploitation attempts. Network-perimeter DNS response filtering for anomalously large record type diversity is possible but carries meaningful operational risk of breaking legitimate DNS traffic.

Affected VersionsENISA

resolv 0.4.0 <0.7.2
resolv 0 <0.3.2

Affected Packages

euvd resolv fix: 0.3.2, 0.7.2

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The resolv gem is Ruby's built-in DNS resolution library, included as a default gem with all standard Ruby installations (CPE: cpe:2.3:a:ruby:resolv:*:*:*:*:*:*:*:*). When Resolv::DNS::Message.decode processes a DNS response, three methods - Resolv::DNS::Resource.get_class, Resolv::DNS::Resource::Generic.create, and Resolv::DNS::SvcParam::Generic.create - dynamically generate Ruby class objects for each unknown resource record (type, class) pair or SvcParamKey. The critical defect (CWE-770: Allocation of Resources Without Limits or Throttling) is that each generated class is permanently registered both as a named constant on the Resource or SvcParam::Generic module and as an entry in the ClassHash lookup table. Ruby's garbage collector cannot reclaim objects reachable through live constants, so these classes accumulate for the entire process lifetime regardless of whether the originating DNS response has been discarded. With DNS type and class each being 16-bit unsigned integers, there are approximately 2^32 distinct (type, class) combinations an attacker can supply, providing a near-inexhaustible supply of unique keys to drive accumulation.

Know when Resolv gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (mitre) PRIMARY 7.5 HIGH
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
vuln.today AI 7.5 HIGH

DNS response delivery is network-based with no auth or interaction required; impact is purely availability via unbounded memory growth, with no confidentiality or integrity effect.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
Red Hat 7.5 HIGH

Primary rating from Vendor (mitre).

CVSS VectorVendor: mitre

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

Lifecycle Timeline

2
Patch available
Aug 27, 2026 - 18:02 EUVD
CVE Published
Aug 27, 2026 - 14:15 cve.org
HIGH 7.5

DescriptionCVE.org

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.

Executive ViewAI

Why It Matters

A denial-of-service vulnerability in Ruby's standard resolv library (versions before 0.7.2) enables attackers controlling DNS responses to exhaust process memory indefinitely, crashing any Ruby-based web service or tool that performs DNS resolution. While no public exploit has been identified at time of analysis, this affects all Ruby installations by default as the resolv gem is built-in and requires no explicit configuration. Organizations must implement mitigations immediately to prevent service outages if exploitation becomes widespread.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Deploy network-level mitigations: restrict DNS resolution to a curated allowlist of trusted nameservers, implement rate limiting on DNS queries, and enable continuous monitoring of application process memory consumption with automated alerts for abnormal growth. Consider isolating affected services on segregated networks to limit potential lateral impact.

Threat Intelligence Overview

EPSS Score
0.5%
Top 60% exploitable
Prevalence
High
default gem in widely-deployed Ruby installations worldwide
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment Vendor GitHub VulDB

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.5%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
Yes
Human Impact
High
Technical Impact
Partial

Priority Score

38
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +38
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

Vendor StatusVendor

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy