7.5 HIGH
- CVSS version (CVSS): 3.1
- Attack Vector (AV): Network (N)
- Attack Complexity (AC): Low (L)
- Privileges Required (PR): None (N)
- User Interaction (UI): None (N)
- Scope (S): Unchanged (U)
- Confidentiality (C): None (N)
- Integrity (I): None (N)
- Availability (A): High (H)
- Modified Attack Vector (MAV): Network (N)
- Modified Attack Complexity (MAC): Low (L)
- Modified Privileges Required (MPR): None (N)
- Modified User Interaction (MUI): None (N)
- Modified Confidentiality (MC): None (N)
- Modified Scope (MS): Unchanged (U)
- Modified Integrity (MI): None (N)
- Modified Availability (MA): High (H)
Activity log
- Created suggestion
An issue was discovered in the resolv gem before 0.7.2 …
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.
References
Affected products
- <0.7.2
- <0.3.2
Matching in nixpkgs
pkgs.openresolv
Program to manage /etc/resolv.conf
pkgs.flaresolverr
Proxy server to bypass Cloudflare protection
pkgs.knot-resolver
Caching validating DNS resolver, from .cz domain registry
pkgs.resolv_wrapper
Wrapper for the user, group and hosts NSS API
pkgs.davinci-resolve
Professional video editing, color, effects and audio post-processing
pkgs.knot-resolver_5
Caching validating DNS resolver, from .cz domain registry
pkgs.knot-resolver_6
Caching validating DNS resolver, from .cz domain registry
pkgs.darwin.libresolv
Libresolv implementation for Darwin
pkgs.update-resolv-conf
Script to update your /etc/resolv.conf with DNS settings that come from the received push dhcp-options
-
nixos-unstable 2017-06-21
- nixpkgs-unstable 2017-06-21
- nixos-unstable-small 2017-06-21
-
nixos-26.05 2017-06-21
- nixos-26.05-small 2017-06-21
- nixpkgs-26.05-darwin 2017-06-21
pkgs.resolve-march-native
Tool to determine what GCC flags -march=native would resolve into
pkgs.davinci-resolve-studio
Professional video editing, color, effects and audio post-processing
pkgs.haskellPackages.resolv
Domain Name Service (DNS) lookup via the libresolv standard library routines
pkgs.knot-resolver-manager_6
Caching validating DNS resolver, from .cz domain registry
pkgs.update-systemd-resolved
Helper script for OpenVPN to directly update the DNS settings of a link through systemd-resolved via DBus
pkgs.graylogPlugins.dnsresolver
Message filter plugin can be used to do DNS lookups for the source field in Graylog messages
pkgs.ocamlPackages.dns-resolver
DNS resolver business logic
pkgs.python313Packages.resolvelib
Resolve abstract dependencies into concrete ones
pkgs.python314Packages.resolvelib
Resolve abstract dependencies into concrete ones
pkgs.perlPackages.NetDNSResolverMock
Mock a DNS Resolver object for testing
-
nixos-unstable 1.20230216
- nixpkgs-unstable 1.20230216
- nixos-unstable-small 1.20230216
-
nixos-26.05 1.20230216
- nixos-26.05-small 1.20230216
- nixpkgs-26.05-darwin 1.20230216
pkgs.perl5Packages.NetDNSResolverMock
Mock a DNS Resolver object for testing
-
nixos-unstable 1.20230216
- nixpkgs-unstable 1.20230216
- nixos-unstable-small 1.20230216
-
nixos-26.05 1.20230216
- nixos-26.05-small 1.20230216
- nixpkgs-26.05-darwin 1.20230216
pkgs.azure-cli-extensions.dns-resolver
Microsoft Azure Command-Line Tools DnsResolverManagementClient Extension
pkgs.ocamlPackages_latest.dns-resolver
DNS resolver business logic
pkgs.python313Packages.cert-chain-resolver
Resolve / obtain the certificate intermediates of a x509 certificate
pkgs.python314Packages.cert-chain-resolver
Resolve / obtain the certificate intermediates of a x509 certificate
pkgs.python313Packages.pkgutil-resolve-name
Backport of Python 3.9’s pkgutil.resolve_name
pkgs.python314Packages.pkgutil-resolve-name
Backport of Python 3.9’s pkgutil.resolve_name
pkgs.perlPackages.NetDNSResolverProgrammable
Programmable DNS resolver class for offline emulation of DNS
pkgs.haskellPackages.amazonka-route53resolver
Amazon Route 53 Resolver SDK
-
nixos-unstable 2.0-unstable-2025-04-16
- nixpkgs-unstable 2.0-unstable-2025-04-16
- nixos-unstable-small 2.0-unstable-2025-04-16
-
nixos-26.05 2.0-unstable-2025-04-16
- nixos-26.05-small 2.0-unstable-2025-04-16
- nixpkgs-26.05-darwin 2.0-unstable-2025-04-16
pkgs.perl5Packages.NetDNSResolverProgrammable
Programmable DNS resolver class for offline emulation of DNS
pkgs.python313Packages.aiohttp-asyncmdnsresolver
Module to resolve mDNS with aiohttp
pkgs.python314Packages.aiohttp-asyncmdnsresolver
Module to resolve mDNS with aiohttp
pkgs.python313Packages.mypy-boto3-route53resolver
Type annotations for boto3 route53resolver
pkgs.python314Packages.mypy-boto3-route53resolver
Type annotations for boto3 route53resolver
pkgs.python313Packages.types-aiobotocore-route53resolver
Type annotations for aiobotocore route53resolver
pkgs.python314Packages.types-aiobotocore-route53resolver
Type annotations for aiobotocore route53resolver
-
nixos-unstable -
- nixos-unstable-small 3.9.0
Package maintainers
-
@katexochen Paul Meyer <katexochen0@gmail.com>
-
@toonn Toon Nolten <nixpkgs@toonn.io>
-
@reckenrode Randy Eckenrode <randy@largeandhighquality.com>
-
@Samasaur1 Samasaur <sam@samasaur.com>
-
@emilazy Emily <nixpkgs@emily.moe>
-
@cafkafk Christina Sørensen <christina@cafkafk.com>
-
@XBagon XBagon <xbagon@outlook.de>
-
@amarshall Andrew Marshall <andrew@johnandrewmarshall.com>
-
@toXel Timo Arlt
-
@diogotcorreia Diogo Correia <me@diogotc.com>
-
@vcunat Vladimír Čunát <v@cunat.cz>
-
@osnyx Oliver Schmidt <os@flyingcircus.io>
-
@leona-ya Leona Maroni <nix@leona.is>
-
@vbgl Vincent Laporte <Vincent.Laporte@gmail.com>
-
@andir Andreas Rammhold <andreas@rammhold.de>
-
@balsoft Alexander Bantyev <balsoft75@gmail.com>
-
@pyrox0 Pyrox <pyrox@pyrox.dev>
-
@fabaff Fabian Affolter <mail@fabian-affolter.ch>
-
@veehaitch Vincent Haupert <mail@vincent-haupert.de>
-
@yajo Jairo Llopis <yajo.sk8@gmail.com>
-
@lovesegfault Bernardo Meurer <meurerbernardo@gmail.com>
-
@eadwu Edmund Wu <edmund.wu@protonmail.com>