Register for the AI for Security Summit: Join Figma, Perplexity & Wiz

CVE-2026-80212
Ruby vulnerability analysis and mitigation

Overview

CVE-2026-80212 is a memory exhaustion (Denial of Service) vulnerability in the Ruby resolv gem, a default gem included with standard Ruby installations. The flaw causes unbounded memory growth when a Ruby application decodes DNS responses containing unknown resource record types, allowing an attacker who controls a DNS server to crash the target process. Affected versions are resolv before 0.3.2 and versions 0.4.0 through before 0.7.2. It was disclosed on August 27, 2026, with a CVSS v3.1 base score of 7.5 (High) (Ruby Advisory, GitHub Advisory).

Technical details

The root cause is classified as CWE-770 (Allocation of Resources Without Limits or Throttling). The methods Resolv::DNS::Resource.get_class, Resolv::DNS::Resource::Generic.create, and Resolv::DNS::SvcParam::Generic.create dynamically generate a new Ruby class for each unknown DNS resource record (type, class) pair or unknown SvcParamKey encountered during response decoding. Each generated class is permanently registered as a Ruby constant on Resource (or SvcParam::Generic) and inserted into a ClassHash lookup table. Because the constant holds a reference to the class, Ruby's garbage collector cannot reclaim it even after the DNS response is discarded. Since DNS type and class fields are each 16-bit values, an attacker has up to 2^32 distinct (type, class) combinations to exploit; a single crafted response of a few hundred kilobytes can permanently grow process memory by tens of megabytes, and repeated responses accumulate without bound. Any code path invoking Resolv::DNS::Message.decode on attacker-influenced responses is vulnerable, including scenarios where user-supplied URLs or webhook targets trigger DNS resolution (Ruby Advisory, GitHub Advisory).

Impact

Successful exploitation causes unbounded memory growth in the affected Ruby process, ultimately leading to process crash and service unavailability (Denial of Service). There is no confidentiality or integrity impact — the vulnerability is purely an availability issue. Because resolv is a default gem shipped with every standard Ruby installation, any Ruby application that performs DNS resolution on attacker-influenced hostnames (e.g., user-supplied URLs, webhook endpoints, or redirect targets) is potentially affected without requiring any additional dependencies (Ruby Advisory, GitHub Advisory).

Exploitability

No public proof-of-concept exploit code is known to exist, and there is no evidence of in-the-wild exploitation at this time (GitHub Advisory). The vulnerability is rated automatable by NVD SSVC, meaning exploitation does not require human interaction and can be triggered remotely with no privileges. The EPSS score is approximately 0.49–0.57%, placing it around the 45th percentile for exploitation probability within 30 days. The CVE is not currently listed in the CISA Known Exploited Vulnerabilities (KEV) catalog.

Exploitation steps

  1. Set up a malicious DNS server: Configure a rogue authoritative DNS server (e.g., using tools like dnsmasq, CoreDNS, or a custom script) capable of returning crafted DNS responses containing tens of thousands of distinct unknown resource record (type, class) pairs.
  2. Identify a target: Find a Ruby application that performs DNS resolution on attacker-influenced input — such as a web service that fetches user-supplied URLs, processes webhooks, or follows HTTP redirects, causing it to resolve attacker-controlled hostnames.
  3. Direct the target to resolve attacker-controlled hostnames: Supply a URL or hostname that resolves through the attacker's malicious DNS server (e.g., via a webhook URL, SSRF vector, or DNS delegation).
  4. Send crafted DNS responses: Have the malicious DNS server respond with messages containing large numbers of unknown resource record types (up to ~2^32 unique (type, class) pairs). A single response of a few hundred kilobytes with tens of thousands of distinct unknown types can grow the target process memory by tens of megabytes.
  5. Repeat to exhaust memory: Send repeated crafted responses; since allocated classes are never garbage collected, memory grows without bound until the Ruby process exhausts available memory and crashes, causing a denial of service (Ruby Advisory, GitHub Advisory).

Indicators of compromise

  • Process Behavior: Steadily increasing RSS/heap memory usage in Ruby application processes without a corresponding increase in legitimate workload; process OOM (Out of Memory) kills or crashes with no apparent application-level error.
  • Logs: Application logs showing repeated DNS resolution attempts for unusual or attacker-controlled hostnames; OOM killer entries in system logs (/var/log/syslog, dmesg) referencing the Ruby process.
  • Network: Outbound DNS queries to unexpected or external nameservers; DNS responses of unusually large size (hundreds of kilobytes) from upstream resolvers; high volume of DNS queries for a single or small set of hostnames.
  • System Metrics: Sudden spikes in process memory consumption visible in monitoring tools (e.g., Prometheus, Datadog) correlated with DNS resolution activity; swap usage increases or memory pressure alerts.

Mitigation and workarounds

Upgrade the resolv gem to version 0.7.2 or later, which fixes the unbounded class registration behavior (Ruby Advisory). For versions prior to 0.4.0, upgrade to at least 0.3.2. As interim workarounds: restrict DNS resolution to trusted, internal nameservers only; implement rate limiting on hostname resolution requests; validate and sanitize user-supplied URLs and webhook targets before performing DNS lookups; and set memory limits (e.g., via cgroups or ulimit) on Ruby application processes to contain the impact of memory exhaustion.

Community reactions

The vulnerability was published by the Ruby security team on August 27, 2026, alongside a companion advisory (CVE-2026-80213) for the same resolv gem (Ruby Advisory). Red Hat issued a security advisory covering hardened image RPMs in response to this CVE. No significant independent researcher commentary or broad social media discussion has been observed beyond standard vulnerability tracking and aggregation sites.

Additional resources

Linux Distribution fix status

Fix availability across major Linux distributions and their releases.

RHEL / CentOS

Fixed

RHEL 8

:appstream:ruby:2.5/ruby/ruby-0:2.5.9-116.module%2Bel8.10.0%2B24853%2B52b5af56

Fixed

RHEL 9

:appstream:ruby/ruby-0:3.0.7-168.el9_8

Fixed

RHEL 10

ruby/ruby-0:3.3.12-15.el10_2

Fixed

SourceThis report was generated using AI

Related Ruby vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-50276HIGH7.5
  • Ruby logoRuby
  • datadog
NoYesSep 14, 2026
CVE-2026-70658HIGH7.4
  • Ruby logoRuby
  • pay
NoNoSep 14, 2026
CVE-2026-44163MEDIUM5.3
  • Ruby logoRuby
  • fluent-plugin-opentelemetry
NoYesSep 15, 2026
CVE-2026-44282MEDIUM4.8
  • Ruby logoRuby
  • decidim-elections
NoYesSep 15, 2026
CVE-2026-44162LOW2.7
  • Ruby logoRuby
  • fluent-plugin-s3
NoYesSep 14, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management