CVE-2026-80213
An issue was discovered in the resolv gem before 0.7.2 for Ruby. Resolv::DNS::MessageEncoder...
An issue was discovered in the resolv gem before 0.7.2 for Ruby. Resolv::DNS::MessageEncoder wrote a DNS label's length into a single octet without checking its range. A label longer than 255 octets had its length stored modulo 256 but the label data was written unchanged, and thus the bytes on the wire described a different name than the one the application asked to encode. RFC 1035 section 2.3.4 limits a label to 63 octets, and the two high bits of the length octet are reserved for compression pointers. put_string packed the length with put_pack("C", d.length) and put_label used it for labels, and thus any value from 0 to 255 could end up as a label length octet, including the reserved 0x40-0xBF range and the 0xC0-0xFF pointer range. Resolv::DNS::Name.create did not check per-label or total name length either, and thus an attacker-controlled hostname reached the encoder unchanged. An application that resolves an attacker-controlled hostname sends a query whose wire bytes name a domain the attacker chose. A hostname suffix that the application validates against an allowlist becomes padding that never appears on the wire, and thus allowlist and egress checks can be bypassed. The recursive resolver caches the response under the attacker's name, and DNS logs record that name rather than the one the application asked for. A label length whose low octet lands in the 0xC0-0xFF range produces a length octet that conforming parsers read as the start of a compression pointer, with the following attacker-controlled byte as the offset.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- High
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- None
- Integrity
- Low
- Availability
- None
Exploit likelihood
What each source reports
CVE List Score used
4.0
An issue was discovered in the resolv gem before 0.7.2 for Ruby. Resolv::DNS::MessageEncoder wrote a DNS label's length into a single octet without checking its range. A label longer than 255 octets had its length stored modulo 256 but the label data was written unchanged, and thus the bytes on the wire described a different name than the one the application asked to encode. RFC 1035 section 2.3.4 limits a label to 63 octets, and the two high bits of the length octet are reserved for compression pointers. put_string packed the length with put_pack("C", d.length) and put_label used it for labels, and thus any value from 0 to 255 could end up as a label length octet, including the reserved 0x40-0xBF range and the 0xC0-0xFF pointer range. Resolv::DNS::Name.create did not check per-label or total name length either, and thus an attacker-controlled hostname reached the encoder unchanged. An application that resolves an attacker-controlled hostname sends a query whose wire bytes name a domain the attacker chose. A hostname suffix that the application validates against an allowlist becomes padding that never appears on the wire, and thus allowlist and egress checks can be bypassed. The recursive resolver caches the response under the attacker's name, and DNS logs record that name rather than the one the application asked for. A label length whose low octet lands in the 0xC0-0xFF range produces a length octet that conforming parsers read as the start of a compression pointer, with the following attacker-controlled byte as the offset.
- Record
CVE-2026-80213- CVSS 3.1
- 4.0 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:N/I:L/A:N - Weakness
- CWE-197
- Updated
- 2026-11-02
EUVDEUVD-2026-67139
4.0
An issue was discovered in the resolv gem before 0.7.2 for Ruby. Resolv::DNS::MessageEncoder wrote a DNS label's length into a single octet without checking its range. A label longer than 255 octets had its length stored modulo 256 but the label data was written unchanged, and thus the bytes on the wire described a different name than the one the application asked to encode. RFC 1035 section 2.3.4 limits a label to 63 octets, and the two high bits of the length octet are reserved for compression pointers. put_string packed the length with put_pack("C", d.length) and put_label used it for labels, and thus any value from 0 to 255 could end up as a label length octet, including the reserved 0x40-0xBF range and the 0xC0-0xFF pointer range. Resolv::DNS::Name.create did not check per-label or total name length either, and thus an attacker-controlled hostname reached the encoder unchanged. An application that resolves an attacker-controlled hostname sends a query whose wire bytes name a domain the attacker chose. A hostname suffix that the application validates against an allowlist becomes padding that never appears on the wire, and thus allowlist and egress checks can be bypassed. The recursive resolver caches the response under the attacker's name, and DNS logs record that name rather than the one the application asked for. A label length whose low octet lands in the 0xC0-0xFF range produces a length octet that conforming parsers read as the start of a compression pointer, with the following attacker-controlled byte as the offset.
- Record
EUVD-2026-67139- CVSS 3.1
- 4.0 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:N/I:L/A:N - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-jr95-x3fr-rcg4
4.0
An issue was discovered in the resolv gem before 0.7.2 for Ruby. Resolv::DNS::MessageEncoder...
An issue was discovered in the resolv gem before 0.7.2 for Ruby. Resolv::DNS::MessageEncoder wrote a DNS label's length into a single octet without checking its range. A label longer than 255 octets had its length stored modulo 256 but the label data was written unchanged, and thus the bytes on the wire described a different name than the one the application asked to encode. RFC 1035 section 2.3.4 limits a label to 63 octets, and the two high bits of the length octet are reserved for compression pointers. put_string packed the length with put_pack("C", d.length) and put_label used it for labels, and thus any value from 0 to 255 could end up as a label length octet, including the reserved 0x40-0xBF range and the 0xC0-0xFF pointer range. Resolv::DNS::Name.create did not check per-label or total name length either, and thus an attacker-controlled hostname reached the encoder unchanged. An application that resolves an attacker-controlled hostname sends a query whose wire bytes name a domain the attacker chose. A hostname suffix that the application validates against an allowlist becomes padding that never appears on the wire, and thus allowlist and egress checks can be bypassed. The recursive resolver caches the response under the attacker's name, and DNS logs record that name rather than the one the application asked for. A label length whose low octet lands in the 0xC0-0xFF range produces a length octet that conforming parsers read as the start of a compression pointer, with the following attacker-controlled byte as the offset.
- Record
GHSA-jr95-x3fr-rcg4- CVSS 3.1
- 4.0 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:N/I:L/A:N - Weakness
- CWE-197
- Updated
- 2026-11-02
NVD
4.0
An issue was discovered in the resolv gem before 0.7.2 for Ruby. Resolv::DNS::MessageEncoder wrote a DNS label's length into a single octet without checking its range. A label longer than 255 octets had its length stored modulo 256 but the label data was written unchanged, and thus the bytes on the wire described a different name than the one the application asked to encode. RFC 1035 section 2.3.4 limits a label to 63 octets, and the two high bits of the length octet are reserved for compression pointers. put_string packed the length with put_pack("C", d.length) and put_label used it for labels, and thus any value from 0 to 255 could end up as a label length octet, including the reserved 0x40-0xBF range and the 0xC0-0xFF pointer range. Resolv::DNS::Name.create did not check per-label or total name length either, and thus an attacker-controlled hostname reached the encoder unchanged. An application that resolves an attacker-controlled hostname sends a query whose wire bytes name a domain the attacker chose. A hostname suffix that the application validates against an allowlist becomes padding that never appears on the wire, and thus allowlist and egress checks can be bypassed. The recursive resolver caches the response under the attacker's name, and DNS logs record that name rather than the one the application asked for. A label length whose low octet lands in the 0xC0-0xFF range produces a length octet that conforming parsers read as the start of a compression pointer, with the following attacker-controlled byte as the offset.
- Record
CVE-2026-80213- CVSS 3.1
- 4.0 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:N/I:L/A:N - Weakness
- CWE-197
- Updated
- 2026-11-02
OSVALPINE-CVE-2026-80213
4.0
An issue was discovered in the resolv gem before 0.7.2 for Ruby. Resolv::DNS::MessageEncoder wrote a DNS label's length into a single octet without checking its range. A label longer than 255 octets had its length stored modulo 256 but the label data was written unchanged, and thus the bytes on the wire described a different name than the one the application asked to encode. RFC 1035 section 2.3.4 limits a label to 63 octets, and the two high bits of the length octet are reserved for compression pointers. put_string packed the length with put_pack("C", d.length) and put_label used it for labels, and thus any value from 0 to 255 could end up as a label length octet, including the reserved 0x40-0xBF range and the 0xC0-0xFF pointer range. Resolv::DNS::Name.create did not check per-label or total name length either, and thus an attacker-controlled hostname reached the encoder unchanged. An application that resolves an attacker-controlled hostname sends a query whose wire bytes name a domain the attacker chose. A hostname suffix that the application validates against an allowlist becomes padding that never appears on the wire, and thus allowlist and egress checks can be bypassed. The recursive resolver caches the response under the attacker's name, and DNS logs record that name rather than the one the application asked for. A label length whose low octet lands in the 0xC0-0xFF range produces a length octet that conforming parsers read as the start of a compression pointer, with the following attacker-controlled byte as the offset.
- Record
ALPINE-CVE-2026-80213- CVSS 3.1
- 4.0 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:N/I:L/A:N - Updated
- 2026-11-02
OSVBELL-CVE-2026-80213
4.0
- Record
BELL-CVE-2026-80213- CVSS 3.1
- 4.0 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:N/I:L/A:N - Updated
- 2026-11-02
Show 15 moreShow less
OSV
4.0
An issue was discovered in the resolv gem before 0.7.2 for Ruby. Resolv::DNS::MessageEncoder wrote a DNS label's length into a single octet without checking its range. A label longer than 255 octets had its length stored modulo 256 but the label data was written unchanged, and thus the bytes on the wire described a different name than the one the application asked to encode. RFC 1035 section 2.3.4 limits a label to 63 octets, and the two high bits of the length octet are reserved for compression pointers. put_string packed the length with put_pack("C", d.length) and put_label used it for labels, and thus any value from 0 to 255 could end up as a label length octet, including the reserved 0x40-0xBF range and the 0xC0-0xFF pointer range. Resolv::DNS::Name.create did not check per-label or total name length either, and thus an attacker-controlled hostname reached the encoder unchanged. An application that resolves an attacker-controlled hostname sends a query whose wire bytes name a domain the attacker chose. A hostname suffix that the application validates against an allowlist becomes padding that never appears on the wire, and thus allowlist and egress checks can be bypassed. The recursive resolver caches the response under the attacker's name, and DNS logs record that name rather than the one the application asked for. A label length whose low octet lands in the 0xC0-0xFF range produces a length octet that conforming parsers read as the start of a compression pointer, with the following attacker-controlled byte as the offset.
- Record
CVE-2026-80213- CVSS 3.1
- 4.0 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:N/I:L/A:N - Weakness
- CWE-197
- Updated
- 2026-11-02
OSVDEBIAN-CVE-2026-80213
4.0
An issue was discovered in the resolv gem before 0.7.2 for Ruby. Resolv::DNS::MessageEncoder wrote a DNS label's length into a single octet without checking its range. A label longer than 255 octets had its length stored modulo 256 but the label data was written unchanged, and thus the bytes on the wire described a different name than the one the application asked to encode. RFC 1035 section 2.3.4 limits a label to 63 octets, and the two high bits of the length octet are reserved for compression pointers. put_string packed the length with put_pack("C", d.length) and put_label used it for labels, and thus any value from 0 to 255 could end up as a label length octet, including the reserved 0x40-0xBF range and the 0xC0-0xFF pointer range. Resolv::DNS::Name.create did not check per-label or total name length either, and thus an attacker-controlled hostname reached the encoder unchanged. An application that resolves an attacker-controlled hostname sends a query whose wire bytes name a domain the attacker chose. A hostname suffix that the application validates against an allowlist becomes padding that never appears on the wire, and thus allowlist and egress checks can be bypassed. The recursive resolver caches the response under the attacker's name, and DNS logs record that name rather than the one the application asked for. A label length whose low octet lands in the 0xC0-0xFF range produces a length octet that conforming parsers read as the start of a compression pointer, with the following attacker-controlled byte as the offset.
- Record
DEBIAN-CVE-2026-80213- CVSS 3.1
- 4.0 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:N/I:L/A:N - Updated
- 2026-11-07
OSVOESA-2026-3864
7.5
ruby security update
Ruby is a fast and easy interpreted scripting language for object-oriented programming. It has many functions for processing text Files and perform system management tasks (such as Perl).
Security Fix(es):
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.(CVE-2026-80212)
An issue was discovered in the resolv gem before 0.7.2 for Ruby. Resolv::DNS::MessageEncoder wrote a DNS label's length into a single octet without checking its range. A label longer than 255 octets had its length stored modulo 256 but the label data was written unchanged, and thus the bytes on the wire described a different name than the one the application asked to encode. RFC 1035 section 2.3.4 limits a label to 63 octets, and the two high bits of the length octet are reserved for compression pointers. put_string packed the length with put_pack("C", d.length) and put_label used it for labels, and thus any value from 0 to 255 could end up as a label length octet, including the reserved 0x40-0xBF range and the 0xC0-0xFF pointer range. Resolv::DNS::Name.create did not check per-label or total name length either, and thus an attacker-controlled hostname reached the encoder unchanged. An application that resolves an attacker-controlled hostname sends a query whose wire bytes name a domain the attacker chose. A hostname suffix that the application validates against an allowlist becomes padding that never appears on the wire, and thus allowlist and egress checks can be bypassed. The recursive resolver caches the response under the attacker's name, and DNS logs record that name rather than the one the application asked for. A label length whose low octet lands in the 0xC0-0xFF range produces a length octet that conforming parsers read as the start of a compression pointer, with the following attacker-controlled byte as the offset.(CVE-2026-80213)
RubyGems fails to re-validate path containment after filesystem symlink resolution during gem extraction. When a pre-existing symlink inside the destination directory points outside the extraction root, extracted files that appear to be written under the destination directory can instead be written outside of it, breaking the extraction safety boundary. The fix resolves the real path of the parent directory before writing and raises Gem::Package::PathError if it escapes the destination directory.(CVE-2026-82455)
- Record
OESA-2026-3864- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVOESA-2026-3865
6.9
ruby security update
Ruby is a fast and easy interpreted scripting language for object-oriented programming. It has many functions for processing text Files and perform system management tasks (such as Perl).
Security Fix(es):
An issue was discovered in the resolv gem before 0.7.2 for Ruby. Resolv::DNS::MessageEncoder wrote a DNS label's length into a single octet without checking its range. A label longer than 255 octets had its length stored modulo 256 but the label data was written unchanged, and thus the bytes on the wire described a different name than the one the application asked to encode. RFC 1035 section 2.3.4 limits a label to 63 octets, and the two high bits of the length octet are reserved for compression pointers. put_string packed the length with put_pack("C", d.length) and put_label used it for labels, and thus any value from 0 to 255 could end up as a label length octet, including the reserved 0x40-0xBF range and the 0xC0-0xFF pointer range. Resolv::DNS::Name.create did not check per-label or total name length either, and thus an attacker-controlled hostname reached the encoder unchanged. An application that resolves an attacker-controlled hostname sends a query whose wire bytes name a domain the attacker chose. A hostname suffix that the application validates against an allowlist becomes padding that never appears on the wire, and thus allowlist and egress checks can be bypassed. The recursive resolver caches the response under the attacker's name, and DNS logs record that name rather than the one the application asked for. A label length whose low octet lands in the 0xC0-0xFF range produces a length octet that conforming parsers read as the start of a compression pointer, with the following attacker-controlled byte as the offset.(CVE-2026-80213)
RubyGems fails to re-validate path containment after filesystem symlink resolution during gem extraction. When a pre-existing symlink inside the destination directory points outside the extraction root, extracted files that appear to be written under the destination directory can instead be written outside of it, breaking the extraction safety boundary. The fix resolves the real path of the parent directory before writing and raises Gem::Package::PathError if it escapes the destination directory.(CVE-2026-82455)
- Record
OESA-2026-3865- CVSS 4.0
- 6.9 Medium
CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:P/VC:N/VI:H/VA:H/SC:N/SI:N/SA:N - Updated
- 2026-11-02
OSVOESA-2026-3866
6.9
ruby security update
Ruby is a fast and easy interpreted scripting language for object-oriented programming. It has many functions for processing text Files and perform system management tasks (such as Perl).
Security Fix(es):
An issue was discovered in the resolv gem before 0.7.2 for Ruby. Resolv::DNS::MessageEncoder wrote a DNS label's length into a single octet without checking its range. A label longer than 255 octets had its length stored modulo 256 but the label data was written unchanged, and thus the bytes on the wire described a different name than the one the application asked to encode. RFC 1035 section 2.3.4 limits a label to 63 octets, and the two high bits of the length octet are reserved for compression pointers. put_string packed the length with put_pack("C", d.length) and put_label used it for labels, and thus any value from 0 to 255 could end up as a label length octet, including the reserved 0x40-0xBF range and the 0xC0-0xFF pointer range. Resolv::DNS::Name.create did not check per-label or total name length either, and thus an attacker-controlled hostname reached the encoder unchanged. An application that resolves an attacker-controlled hostname sends a query whose wire bytes name a domain the attacker chose. A hostname suffix that the application validates against an allowlist becomes padding that never appears on the wire, and thus allowlist and egress checks can be bypassed. The recursive resolver caches the response under the attacker's name, and DNS logs record that name rather than the one the application asked for. A label length whose low octet lands in the 0xC0-0xFF range produces a length octet that conforming parsers read as the start of a compression pointer, with the following attacker-controlled byte as the offset.(CVE-2026-80213)
RubyGems fails to re-validate path containment after filesystem symlink resolution during gem extraction. When a pre-existing symlink inside the destination directory points outside the extraction root, extracted files that appear to be written under the destination directory can instead be written outside of it, breaking the extraction safety boundary. The fix resolves the real path of the parent directory before writing and raises Gem::Package::PathError if it escapes the destination directory.(CVE-2026-82455)
- Record
OESA-2026-3866- CVSS 4.0
- 6.9 Medium
CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:P/VC:N/VI:H/VA:H/SC:N/SI:N/SA:N - Updated
- 2026-11-02
OSVOESA-2026-3867
6.9
ruby security update
Ruby is a fast and easy interpreted scripting language for object-oriented programming. It has many functions for processing text Files and perform system management tasks (such as Perl).
Security Fix(es):
An issue was discovered in the resolv gem before 0.7.2 for Ruby. Resolv::DNS::MessageEncoder wrote a DNS label's length into a single octet without checking its range. A label longer than 255 octets had its length stored modulo 256 but the label data was written unchanged, and thus the bytes on the wire described a different name than the one the application asked to encode. RFC 1035 section 2.3.4 limits a label to 63 octets, and the two high bits of the length octet are reserved for compression pointers. put_string packed the length with put_pack("C", d.length) and put_label used it for labels, and thus any value from 0 to 255 could end up as a label length octet, including the reserved 0x40-0xBF range and the 0xC0-0xFF pointer range. Resolv::DNS::Name.create did not check per-label or total name length either, and thus an attacker-controlled hostname reached the encoder unchanged. An application that resolves an attacker-controlled hostname sends a query whose wire bytes name a domain the attacker chose. A hostname suffix that the application validates against an allowlist becomes padding that never appears on the wire, and thus allowlist and egress checks can be bypassed. The recursive resolver caches the response under the attacker's name, and DNS logs record that name rather than the one the application asked for. A label length whose low octet lands in the 0xC0-0xFF range produces a length octet that conforming parsers read as the start of a compression pointer, with the following attacker-controlled byte as the offset.(CVE-2026-80213)
RubyGems fails to re-validate path containment after filesystem symlink resolution during gem extraction. When a pre-existing symlink inside the destination directory points outside the extraction root, extracted files that appear to be written under the destination directory can instead be written outside of it, breaking the extraction safety boundary. The fix resolves the real path of the parent directory before writing and raises Gem::Package::PathError if it escapes the destination directory.(CVE-2026-82455)
- Record
OESA-2026-3867- CVSS 4.0
- 6.9 Medium
CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:P/VC:N/VI:H/VA:H/SC:N/SI:N/SA:N - Updated
- 2026-11-02
OSVOESA-2026-3868
4.0
ruby security update
Ruby is a fast and easy interpreted scripting language for object-oriented programming. It has many functions for processing text Files and perform system management tasks (such as Perl).
Security Fix(es):
An issue was discovered in the resolv gem before 0.7.2 for Ruby. Resolv::DNS::MessageEncoder wrote a DNS label's length into a single octet without checking its range. A label longer than 255 octets had its length stored modulo 256 but the label data was written unchanged, and thus the bytes on the wire described a different name than the one the application asked to encode. RFC 1035 section 2.3.4 limits a label to 63 octets, and the two high bits of the length octet are reserved for compression pointers. put_string packed the length with put_pack("C", d.length) and put_label used it for labels, and thus any value from 0 to 255 could end up as a label length octet, including the reserved 0x40-0xBF range and the 0xC0-0xFF pointer range. Resolv::DNS::Name.create did not check per-label or total name length either, and thus an attacker-controlled hostname reached the encoder unchanged. An application that resolves an attacker-controlled hostname sends a query whose wire bytes name a domain the attacker chose. A hostname suffix that the application validates against an allowlist becomes padding that never appears on the wire, and thus allowlist and egress checks can be bypassed. The recursive resolver caches the response under the attacker's name, and DNS logs record that name rather than the one the application asked for. A label length whose low octet lands in the 0xC0-0xFF range produces a length octet that conforming parsers read as the start of a compression pointer, with the following attacker-controlled byte as the offset.(CVE-2026-80213)
- Record
OESA-2026-3868- CVSS 3.1
- 4.0 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:N/I:L/A:N - Updated
- 2026-11-02
OSVRHSA-2026:57565
9.1
Red Hat Security Advisory: Red Hat Hardened Images RPMs Security Update
- Record
RHSA-2026:57565- CVSS 3.1
- 9.1 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H - Updated
- 2026-11-02
OSVRHSA-2026:57986
7.5
Red Hat Security Advisory: Red Hat Hardened Images RPMs bug fix and enhancement update
- Record
RHSA-2026:57986- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVRHSA-2026:57994
7.5
Red Hat Security Advisory: Red Hat Hardened Images RPMs bug fix and enhancement update
- Record
RHSA-2026:57994- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVRHSA-2026:62562
9.1
Red Hat Security Advisory: Red Hat Hardened Images RPMs Security Update
- Record
RHSA-2026:62562- CVSS 3.1
- 9.1 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N - Updated
- 2026-11-02
OSVRHSA-2026:62563
9.1
Red Hat Security Advisory: Red Hat Hardened Images RPMs Security Update
- Record
RHSA-2026:62563- CVSS 3.1
- 9.1 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N - Updated
- 2026-11-02
OSVAZL-98229 No score
CVE-2026-80213 affecting package ruby for versions less than 3.3.5-9
An issue was discovered in the resolv gem before 0.7.2 for Ruby. Resolv::DNS::MessageEncoder wrote a DNS label's length into a single octet without checking its range. A label longer than 255 octets had its length stored modulo 256 but the label data was written unchanged, and thus the bytes on the wire described a different name than the one the application asked to encode. RFC 1035 section 2.3.4 limits a label to 63 octets, and the two high bits of the length octet are reserved for compression pointers. put_string packed the length with put_pack("C", d.length) and put_label used it for labels, and thus any value from 0 to 255 could end up as a label length octet, including the reserved 0x40-0xBF range and the 0xC0-0xFF pointer range. Resolv::DNS::Name.create did not check per-label or total name length either, and thus an attacker-controlled hostname reached the encoder unchanged. An application that resolves an attacker-controlled hostname sends a query whose wire bytes name a domain the attacker chose. A hostname suffix that the application validates against an allowlist becomes padding that never appears on the wire, and thus allowlist and egress checks can be bypassed. The recursive resolver caches the response under the attacker's name, and DNS logs record that name rather than the one the application asked for. A label length whose low octet lands in the 0xC0-0xFF range produces a length octet that conforming parsers read as the start of a compression pointer, with the following attacker-controlled byte as the offset.
- Record
AZL-98229- Updated
- 2026-11-02
OSVCLSA-2026-1789392152 No score
ruby: Fix of 2 CVEs
- CVE-2026-80212: fix unbounded memory growth in the DNS resolver by no longer permanently registering an on-demand class for each unknown (type, class) pair as a Generic constant and a ClassHash entry, and by comparing generic resources and questions by their type and class values rather than by class identity
- CVE-2026-80213: enforce the RFC 1035 DNS label and name size limits when encoding by making the 63-octet label limit an invariant of Label::Str, guarding put_string and put_label, counting the encoded form in get_labels, and raising ResolvError for an oversized name in Name.create
- Record
CLSA-2026-1789392152- Updated
- 2026-11-02
OSVCLSA-2026-1789644305 No score
ruby: Fix of 2 CVEs
- CVE-2026-80212: resolv: stop Resource::Generic.create from permanently registering a generated class for each unknown (type, class) pair as a Generic constant and a ClassHash entry, and compare generic resources and questions by their TypeValue/ClassValue instead of by class identity
- CVE-2026-80213: resolv: enforce the RFC 1035 label and name size limits when encoding by making the 63-octet label limit an invariant of Label::Str, bounding put_string and put_label, counting the encoded form in get_labels, and raising ResolvError for an oversized name in Name.create
- Record
CLSA-2026-1789644305- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
rubyAlpine:v3.21 |
before 3.3.13-r0 | 3.3.13-r0 |
rubyAlpine:v3.22 |
before 3.4.12-r0 | 3.4.12-r0 |
rubyAlpine:v3.23 |
before 3.4.12-r0 | 3.4.12-r0 |
rubyAlpine:v3.24 |
before 3.4.12-r0 | 3.4.12-r0 |
rubyAzure Linux:3 |
before 3.3.5-9 | 3.3.5-9 |
rubyAlpaquita:23 |
3.1.2-r1 up to 3.3.13-r0 | 3.3.13-r0 |
rubyAlpaquita:25 |
3.4.4-r0 up to 3.4.12-r0 | 3.4.12-r0 |
rubyAlpaquita:stream |
3.1.2-r1 up to 3.4.12-r0 | 3.4.12-r0 |
rubyTuxCare:AlmaLinux:9.2 From an advisory covering 2 CVEs |
before 3.0.4-160.el9_2.tuxcare.els19 | 3.0.4-160.el9_2.tuxcare.els19 |
ruby-default-gemsTuxCare:AlmaLinux:9.2 From an advisory covering 2 CVEs |
before 3.0.4-160.el9_2.tuxcare.els19 | 3.0.4-160.el9_2.tuxcare.els19 |
Show 134 moreShow less
| Package | Affected | Fixed |
|---|---|---|
ruby-develTuxCare:AlmaLinux:9.2 From an advisory covering 2 CVEs |
before 3.0.4-160.el9_2.tuxcare.els19 | 3.0.4-160.el9_2.tuxcare.els19 |
ruby-docTuxCare:AlmaLinux:9.2 From an advisory covering 2 CVEs |
before 3.0.4-160.el9_2.tuxcare.els19 | 3.0.4-160.el9_2.tuxcare.els19 |
ruby-libsTuxCare:AlmaLinux:9.2 From an advisory covering 2 CVEs |
before 3.0.4-160.el9_2.tuxcare.els19 | 3.0.4-160.el9_2.tuxcare.els19 |
rubygem-bigdecimalTuxCare:AlmaLinux:9.2 From an advisory covering 2 CVEs |
before 3.0.0-160.el9_2.tuxcare.els19 | 3.0.0-160.el9_2.tuxcare.els19 |
rubygem-bundlerTuxCare:AlmaLinux:9.2 From an advisory covering 2 CVEs |
before 2.2.33-160.el9_2.tuxcare.els19 | 2.2.33-160.el9_2.tuxcare.els19 |
rubygem-io-consoleTuxCare:AlmaLinux:9.2 From an advisory covering 2 CVEs |
before 0.5.7-160.el9_2.tuxcare.els19 | 0.5.7-160.el9_2.tuxcare.els19 |
rubygem-irbTuxCare:AlmaLinux:9.2 From an advisory covering 2 CVEs |
before 1.3.5-160.el9_2.tuxcare.els19 | 1.3.5-160.el9_2.tuxcare.els19 |
rubygem-jsonTuxCare:AlmaLinux:9.2 From an advisory covering 2 CVEs |
before 2.5.1-160.el9_2.tuxcare.els19 | 2.5.1-160.el9_2.tuxcare.els19 |
rubygem-minitestTuxCare:AlmaLinux:9.2 From an advisory covering 2 CVEs |
before 5.14.2-160.el9_2.tuxcare.els19 | 5.14.2-160.el9_2.tuxcare.els19 |
rubygem-power_assertTuxCare:AlmaLinux:9.2 From an advisory covering 2 CVEs |
before 1.2.0-160.el9_2.tuxcare.els19 | 1.2.0-160.el9_2.tuxcare.els19 |
rubygem-psychTuxCare:AlmaLinux:9.2 From an advisory covering 2 CVEs |
before 3.3.2-160.el9_2.tuxcare.els19 | 3.3.2-160.el9_2.tuxcare.els19 |
rubygem-rakeTuxCare:AlmaLinux:9.2 From an advisory covering 2 CVEs |
before 13.0.3-160.el9_2.tuxcare.els19 | 13.0.3-160.el9_2.tuxcare.els19 |
rubygem-rbsTuxCare:AlmaLinux:9.2 From an advisory covering 2 CVEs |
before 1.4.0-160.el9_2.tuxcare.els19 | 1.4.0-160.el9_2.tuxcare.els19 |
rubygem-rdocTuxCare:AlmaLinux:9.2 From an advisory covering 2 CVEs |
before 6.3.3-160.el9_2.tuxcare.els19 | 6.3.3-160.el9_2.tuxcare.els19 |
rubygem-rexmlTuxCare:AlmaLinux:9.2 From an advisory covering 2 CVEs |
before 3.3.3-160.el9_2.tuxcare.els19 | 3.3.3-160.el9_2.tuxcare.els19 |
rubygem-rssTuxCare:AlmaLinux:9.2 From an advisory covering 2 CVEs |
before 0.2.9-160.el9_2.tuxcare.els19 | 0.2.9-160.el9_2.tuxcare.els19 |
rubygem-test-unitTuxCare:AlmaLinux:9.2 From an advisory covering 2 CVEs |
before 3.3.7-160.el9_2.tuxcare.els19 | 3.3.7-160.el9_2.tuxcare.els19 |
rubygem-typeprofTuxCare:AlmaLinux:9.2 From an advisory covering 2 CVEs |
before 0.15.2-160.el9_2.tuxcare.els19 | 0.15.2-160.el9_2.tuxcare.els19 |
rubygemsTuxCare:AlmaLinux:9.2 From an advisory covering 2 CVEs |
before 3.2.33-160.el9_2.tuxcare.els19 | 3.2.33-160.el9_2.tuxcare.els19 |
rubygems-develTuxCare:AlmaLinux:9.2 From an advisory covering 2 CVEs |
before 3.2.33-160.el9_2.tuxcare.els19 | 3.2.33-160.el9_2.tuxcare.els19 |
rubyTuxCare:AlmaLinux:9.6 From an advisory covering 2 CVEs |
before 3.0.7-165.el9_6.tuxcare.els8 | 3.0.7-165.el9_6.tuxcare.els8 |
ruby-default-gemsTuxCare:AlmaLinux:9.6 From an advisory covering 2 CVEs |
before 3.0.7-165.el9_6.tuxcare.els8 | 3.0.7-165.el9_6.tuxcare.els8 |
ruby-develTuxCare:AlmaLinux:9.6 From an advisory covering 2 CVEs |
before 3.0.7-165.el9_6.tuxcare.els8 | 3.0.7-165.el9_6.tuxcare.els8 |
ruby-docTuxCare:AlmaLinux:9.6 From an advisory covering 2 CVEs |
before 3.0.7-165.el9_6.tuxcare.els8 | 3.0.7-165.el9_6.tuxcare.els8 |
ruby-libsTuxCare:AlmaLinux:9.6 From an advisory covering 2 CVEs |
before 3.0.7-165.el9_6.tuxcare.els8 | 3.0.7-165.el9_6.tuxcare.els8 |
rubygem-bigdecimalTuxCare:AlmaLinux:9.6 From an advisory covering 2 CVEs |
before 3.0.0-165.el9_6.tuxcare.els8 | 3.0.0-165.el9_6.tuxcare.els8 |
rubygem-bundlerTuxCare:AlmaLinux:9.6 From an advisory covering 2 CVEs |
before 2.2.33-165.el9_6.tuxcare.els8 | 2.2.33-165.el9_6.tuxcare.els8 |
rubygem-io-consoleTuxCare:AlmaLinux:9.6 From an advisory covering 2 CVEs |
before 0.5.7-165.el9_6.tuxcare.els8 | 0.5.7-165.el9_6.tuxcare.els8 |
rubygem-irbTuxCare:AlmaLinux:9.6 From an advisory covering 2 CVEs |
before 1.3.5-165.el9_6.tuxcare.els8 | 1.3.5-165.el9_6.tuxcare.els8 |
rubygem-jsonTuxCare:AlmaLinux:9.6 From an advisory covering 2 CVEs |
before 2.5.1-165.el9_6.tuxcare.els8 | 2.5.1-165.el9_6.tuxcare.els8 |
rubygem-minitestTuxCare:AlmaLinux:9.6 From an advisory covering 2 CVEs |
before 5.14.2-165.el9_6.tuxcare.els8 | 5.14.2-165.el9_6.tuxcare.els8 |
rubygem-power_assertTuxCare:AlmaLinux:9.6 From an advisory covering 2 CVEs |
before 1.2.1-165.el9_6.tuxcare.els8 | 1.2.1-165.el9_6.tuxcare.els8 |
rubygem-psychTuxCare:AlmaLinux:9.6 From an advisory covering 2 CVEs |
before 3.3.2-165.el9_6.tuxcare.els8 | 3.3.2-165.el9_6.tuxcare.els8 |
rubygem-rakeTuxCare:AlmaLinux:9.6 From an advisory covering 2 CVEs |
before 13.0.3-165.el9_6.tuxcare.els8 | 13.0.3-165.el9_6.tuxcare.els8 |
rubygem-rbsTuxCare:AlmaLinux:9.6 From an advisory covering 2 CVEs |
before 1.4.0-165.el9_6.tuxcare.els8 | 1.4.0-165.el9_6.tuxcare.els8 |
rubygem-rdocTuxCare:AlmaLinux:9.6 From an advisory covering 2 CVEs |
before 6.3.4.1-165.el9_6.tuxcare.els8 | 6.3.4.1-165.el9_6.tuxcare.els8 |
rubygem-rexmlTuxCare:AlmaLinux:9.6 From an advisory covering 2 CVEs |
before 3.2.5-165.el9_6.tuxcare.els8 | 3.2.5-165.el9_6.tuxcare.els8 |
rubygem-rssTuxCare:AlmaLinux:9.6 From an advisory covering 2 CVEs |
before 0.2.9-165.el9_6.tuxcare.els8 | 0.2.9-165.el9_6.tuxcare.els8 |
rubygem-test-unitTuxCare:AlmaLinux:9.6 From an advisory covering 2 CVEs |
before 3.3.7-165.el9_6.tuxcare.els8 | 3.3.7-165.el9_6.tuxcare.els8 |
rubygem-typeprofTuxCare:AlmaLinux:9.6 From an advisory covering 2 CVEs |
before 0.15.2-165.el9_6.tuxcare.els8 | 0.15.2-165.el9_6.tuxcare.els8 |
rubygemsTuxCare:AlmaLinux:9.6 From an advisory covering 2 CVEs |
before 3.2.33-165.el9_6.tuxcare.els8 | 3.2.33-165.el9_6.tuxcare.els8 |
rubygems-develTuxCare:AlmaLinux:9.6 From an advisory covering 2 CVEs |
before 3.2.33-165.el9_6.tuxcare.els8 | 3.2.33-165.el9_6.tuxcare.els8 |
ruby3.1Debian:12 |
All versions, plus listed versions 3.1.2-73.1.2-7+deb12u13.1.2-7+hurd.13.1.2-83.1.2-8.1~exp13.1.2-8.33.1.2-8.43.1.2-8.5 |
None known |
ruby3.3Debian:13 |
before 3.3.13-0+deb13u1, plus listed versions 3.3.8-23.3.8-2.13.3.8-2.2 |
3.3.13-0+deb13u1 |
ruby3.3Debian:14 |
All versions, plus listed versions 3.3.8-23.3.8-2.13.3.8-2.2 |
None known |
rubyopenEuler:24.03-LTS-SP4 From an advisory covering 3 CVEs |
before 3.2.2-160.oe2403sp4 | 3.2.2-160.oe2403sp4 |
rubyopenEuler:20.03-LTS-SP4 From an advisory covering 2 CVEs |
before 2.5.8-144.oe2003sp4 | 2.5.8-144.oe2003sp4 |
rubyopenEuler:22.03-LTS-SP4 From an advisory covering 2 CVEs |
before 3.0.3-151.oe2203sp4 | 3.0.3-151.oe2203sp4 |
rubyopenEuler:24.03-LTS-SP1 From an advisory covering 2 CVEs |
before 3.2.2-160.oe2403sp1 | 3.2.2-160.oe2403sp1 |
rubyopenEuler:24.03-LTS-SP3 |
before 3.2.2-161.oe2403sp3 | 3.2.2-161.oe2403sp3 |
ruby4.0Red Hat:hummingbird:1 From an advisory covering 4 CVEs |
before 0:4.0.6-37.2.hum1 | 0:4.0.6-37.2.hum1 |
ruby4.0-bundled-gemsRed Hat:hummingbird:1 From an advisory covering 4 CVEs |
before 0:4.0.6-37.2.hum1 | 0:4.0.6-37.2.hum1 |
ruby4.0-default-gemsRed Hat:hummingbird:1 From an advisory covering 4 CVEs |
before 0:4.0.6-37.2.hum1 | 0:4.0.6-37.2.hum1 |
ruby4.0-develRed Hat:hummingbird:1 From an advisory covering 4 CVEs |
before 0:4.0.6-37.2.hum1 | 0:4.0.6-37.2.hum1 |
ruby4.0-docRed Hat:hummingbird:1 From an advisory covering 4 CVEs |
before 0:4.0.6-37.2.hum1 | 0:4.0.6-37.2.hum1 |
ruby4.0-libsRed Hat:hummingbird:1 From an advisory covering 4 CVEs |
before 0:4.0.6-37.2.hum1 | 0:4.0.6-37.2.hum1 |
rubygem4.0-bigdecimalRed Hat:hummingbird:1 From an advisory covering 4 CVEs |
before 0:4.0.1-37.2.hum1 | 0:4.0.1-37.2.hum1 |
rubygem4.0-bundlerRed Hat:hummingbird:1 From an advisory covering 4 CVEs |
before 0:4.0.16-37.2.hum1 | 0:4.0.16-37.2.hum1 |
rubygem4.0-develRed Hat:hummingbird:1 From an advisory covering 4 CVEs |
before 0:4.0.16-37.2.hum1 | 0:4.0.16-37.2.hum1 |
rubygem4.0-io-consoleRed Hat:hummingbird:1 From an advisory covering 4 CVEs |
before 0:0.8.2-37.2.hum1 | 0:0.8.2-37.2.hum1 |
rubygem4.0-irbRed Hat:hummingbird:1 From an advisory covering 4 CVEs |
before 0:1.16.0-37.2.hum1 | 0:1.16.0-37.2.hum1 |
rubygem4.0-jsonRed Hat:hummingbird:1 From an advisory covering 4 CVEs |
before 0:2.18.0-37.2.hum1 | 0:2.18.0-37.2.hum1 |
rubygem4.0-minitestRed Hat:hummingbird:1 From an advisory covering 4 CVEs |
before 0:6.0.0-37.2.hum1 | 0:6.0.0-37.2.hum1 |
rubygem4.0-power_assertRed Hat:hummingbird:1 From an advisory covering 4 CVEs |
before 0:3.0.1-37.2.hum1 | 0:3.0.1-37.2.hum1 |
rubygem4.0-psychRed Hat:hummingbird:1 From an advisory covering 4 CVEs |
before 0:5.3.1-37.2.hum1 | 0:5.3.1-37.2.hum1 |
rubygem4.0-raccRed Hat:hummingbird:1 From an advisory covering 4 CVEs |
before 0:1.8.1-37.2.hum1 | 0:1.8.1-37.2.hum1 |
rubygem4.0-rakeRed Hat:hummingbird:1 From an advisory covering 4 CVEs |
before 0:13.3.1-37.2.hum1 | 0:13.3.1-37.2.hum1 |
rubygem4.0-rbsRed Hat:hummingbird:1 From an advisory covering 4 CVEs |
before 0:3.10.0-37.2.hum1 | 0:3.10.0-37.2.hum1 |
rubygem4.0-rdocRed Hat:hummingbird:1 From an advisory covering 4 CVEs |
before 0:7.0.4-37.2.hum1 | 0:7.0.4-37.2.hum1 |
rubygem4.0-rexmlRed Hat:hummingbird:1 From an advisory covering 4 CVEs |
before 0:3.4.4-37.2.hum1 | 0:3.4.4-37.2.hum1 |
rubygem4.0-rssRed Hat:hummingbird:1 From an advisory covering 4 CVEs |
before 0:0.3.2-37.2.hum1 | 0:0.3.2-37.2.hum1 |
rubygem4.0-rubygemsRed Hat:hummingbird:1 From an advisory covering 4 CVEs |
before 0:4.0.16-37.2.hum1 | 0:4.0.16-37.2.hum1 |
rubygem4.0-test-unitRed Hat:hummingbird:1 From an advisory covering 4 CVEs |
before 0:3.7.5-37.2.hum1 | 0:3.7.5-37.2.hum1 |
rubygem4.0-typeprofRed Hat:hummingbird:1 From an advisory covering 4 CVEs |
before 0:0.31.1-37.2.hum1 | 0:0.31.1-37.2.hum1 |
ruby3.3Red Hat:hummingbird:1 From an advisory covering 3 CVEs |
before 0:3.3.10-23.5.hum1 | 0:3.3.10-23.5.hum1 |
ruby3.3-bundled-gemsRed Hat:hummingbird:1 From an advisory covering 3 CVEs |
before 0:3.3.10-23.5.hum1 | 0:3.3.10-23.5.hum1 |
ruby3.3-default-gemsRed Hat:hummingbird:1 From an advisory covering 3 CVEs |
before 0:3.3.10-23.5.hum1 | 0:3.3.10-23.5.hum1 |
ruby3.3-develRed Hat:hummingbird:1 From an advisory covering 3 CVEs |
before 0:3.3.10-23.5.hum1 | 0:3.3.10-23.5.hum1 |
ruby3.3-docRed Hat:hummingbird:1 From an advisory covering 3 CVEs |
before 0:3.3.10-23.5.hum1 | 0:3.3.10-23.5.hum1 |
ruby3.3-libsRed Hat:hummingbird:1 From an advisory covering 3 CVEs |
before 0:3.3.10-23.5.hum1 | 0:3.3.10-23.5.hum1 |
ruby3.4Red Hat:hummingbird:1 From an advisory covering 3 CVEs |
before 0:3.4.10-31.6.hum1 | 0:3.4.10-31.6.hum1 |
ruby3.4-bundled-gemsRed Hat:hummingbird:1 From an advisory covering 3 CVEs |
before 0:3.4.10-31.6.hum1 | 0:3.4.10-31.6.hum1 |
ruby3.4-default-gemsRed Hat:hummingbird:1 From an advisory covering 3 CVEs |
before 0:3.4.10-31.6.hum1 | 0:3.4.10-31.6.hum1 |
ruby3.4-develRed Hat:hummingbird:1 From an advisory covering 3 CVEs |
before 0:3.4.10-31.6.hum1 | 0:3.4.10-31.6.hum1 |
ruby3.4-docRed Hat:hummingbird:1 From an advisory covering 3 CVEs |
before 0:3.4.10-31.6.hum1 | 0:3.4.10-31.6.hum1 |
ruby3.4-libsRed Hat:hummingbird:1 From an advisory covering 3 CVEs |
before 0:3.4.10-31.6.hum1 | 0:3.4.10-31.6.hum1 |
ruby3.3Red Hat:hummingbird:1 From an advisory covering 22 CVEs |
before 0:3.3.10-23.6.hum1 | 0:3.3.10-23.6.hum1 |
ruby3.3-bundled-gemsRed Hat:hummingbird:1 From an advisory covering 22 CVEs |
before 0:3.3.10-23.6.hum1 | 0:3.3.10-23.6.hum1 |
ruby3.3-default-gemsRed Hat:hummingbird:1 From an advisory covering 22 CVEs |
before 0:3.3.10-23.6.hum1 | 0:3.3.10-23.6.hum1 |
ruby3.3-develRed Hat:hummingbird:1 From an advisory covering 22 CVEs |
before 0:3.3.10-23.6.hum1 | 0:3.3.10-23.6.hum1 |
ruby3.3-docRed Hat:hummingbird:1 From an advisory covering 22 CVEs |
before 0:3.3.10-23.6.hum1 | 0:3.3.10-23.6.hum1 |
ruby3.3-libsRed Hat:hummingbird:1 From an advisory covering 22 CVEs |
before 0:3.3.10-23.6.hum1 | 0:3.3.10-23.6.hum1 |
rubygem3.3-bigdecimalRed Hat:hummingbird:1 From an advisory covering 22 CVEs |
before 0:3.1.5-23.6.hum1 | 0:3.1.5-23.6.hum1 |
rubygem3.3-bundlerRed Hat:hummingbird:1 From an advisory covering 22 CVEs |
before 0:2.5.22-23.6.hum1 | 0:2.5.22-23.6.hum1 |
rubygem3.3-develRed Hat:hummingbird:1 From an advisory covering 22 CVEs |
before 0:3.5.22-23.6.hum1 | 0:3.5.22-23.6.hum1 |
rubygem3.3-io-consoleRed Hat:hummingbird:1 From an advisory covering 22 CVEs |
before 0:0.7.1-23.6.hum1 | 0:0.7.1-23.6.hum1 |
rubygem3.3-irbRed Hat:hummingbird:1 From an advisory covering 22 CVEs |
before 0:1.13.1-23.6.hum1 | 0:1.13.1-23.6.hum1 |
rubygem3.3-jsonRed Hat:hummingbird:1 From an advisory covering 22 CVEs |
before 0:2.7.2-23.6.hum1 | 0:2.7.2-23.6.hum1 |
rubygem3.3-minitestRed Hat:hummingbird:1 From an advisory covering 22 CVEs |
before 0:5.20.0-23.6.hum1 | 0:5.20.0-23.6.hum1 |
rubygem3.3-power_assertRed Hat:hummingbird:1 From an advisory covering 22 CVEs |
before 0:2.0.3-23.6.hum1 | 0:2.0.3-23.6.hum1 |
rubygem3.3-psychRed Hat:hummingbird:1 From an advisory covering 22 CVEs |
before 0:5.1.2-23.6.hum1 | 0:5.1.2-23.6.hum1 |
rubygem3.3-raccRed Hat:hummingbird:1 From an advisory covering 22 CVEs |
before 0:1.7.3-23.6.hum1 | 0:1.7.3-23.6.hum1 |
rubygem3.3-rakeRed Hat:hummingbird:1 From an advisory covering 22 CVEs |
before 0:13.1.0-23.6.hum1 | 0:13.1.0-23.6.hum1 |
rubygem3.3-rbsRed Hat:hummingbird:1 From an advisory covering 22 CVEs |
before 0:3.4.0-23.6.hum1 | 0:3.4.0-23.6.hum1 |
rubygem3.3-rdocRed Hat:hummingbird:1 From an advisory covering 22 CVEs |
before 0:6.6.3.1-23.6.hum1 | 0:6.6.3.1-23.6.hum1 |
rubygem3.3-rexmlRed Hat:hummingbird:1 From an advisory covering 22 CVEs |
before 0:3.4.4-23.6.hum1 | 0:3.4.4-23.6.hum1 |
rubygem3.3-rssRed Hat:hummingbird:1 From an advisory covering 22 CVEs |
before 0:0.3.1-23.6.hum1 | 0:0.3.1-23.6.hum1 |
rubygem3.3-rubygemsRed Hat:hummingbird:1 From an advisory covering 22 CVEs |
before 0:3.5.22-23.6.hum1 | 0:3.5.22-23.6.hum1 |
rubygem3.3-test-unitRed Hat:hummingbird:1 From an advisory covering 22 CVEs |
before 0:3.6.1-23.6.hum1 | 0:3.6.1-23.6.hum1 |
rubygem3.3-typeprofRed Hat:hummingbird:1 From an advisory covering 22 CVEs |
before 0:0.21.9-23.6.hum1 | 0:0.21.9-23.6.hum1 |
ruby4.0Red Hat:hummingbird:1 From an advisory covering 21 CVEs |
before 0:4.0.6-37.3.hum1 | 0:4.0.6-37.3.hum1 |
ruby4.0-bundled-gemsRed Hat:hummingbird:1 From an advisory covering 21 CVEs |
before 0:4.0.6-37.3.hum1 | 0:4.0.6-37.3.hum1 |
ruby4.0-default-gemsRed Hat:hummingbird:1 From an advisory covering 21 CVEs |
before 0:4.0.6-37.3.hum1 | 0:4.0.6-37.3.hum1 |
ruby4.0-develRed Hat:hummingbird:1 From an advisory covering 21 CVEs |
before 0:4.0.6-37.3.hum1 | 0:4.0.6-37.3.hum1 |
ruby4.0-docRed Hat:hummingbird:1 From an advisory covering 21 CVEs |
before 0:4.0.6-37.3.hum1 | 0:4.0.6-37.3.hum1 |
ruby4.0-libsRed Hat:hummingbird:1 From an advisory covering 21 CVEs |
before 0:4.0.6-37.3.hum1 | 0:4.0.6-37.3.hum1 |
rubygem4.0-bigdecimalRed Hat:hummingbird:1 From an advisory covering 21 CVEs |
before 0:4.0.1-37.3.hum1 | 0:4.0.1-37.3.hum1 |
rubygem4.0-bundlerRed Hat:hummingbird:1 From an advisory covering 21 CVEs |
before 0:4.0.16-37.3.hum1 | 0:4.0.16-37.3.hum1 |
rubygem4.0-develRed Hat:hummingbird:1 From an advisory covering 21 CVEs |
before 0:4.0.16-37.3.hum1 | 0:4.0.16-37.3.hum1 |
rubygem4.0-io-consoleRed Hat:hummingbird:1 From an advisory covering 21 CVEs |
before 0:0.8.2-37.3.hum1 | 0:0.8.2-37.3.hum1 |
rubygem4.0-irbRed Hat:hummingbird:1 From an advisory covering 21 CVEs |
before 0:1.16.0-37.3.hum1 | 0:1.16.0-37.3.hum1 |
rubygem4.0-jsonRed Hat:hummingbird:1 From an advisory covering 21 CVEs |
before 0:2.18.0-37.3.hum1 | 0:2.18.0-37.3.hum1 |
rubygem4.0-minitestRed Hat:hummingbird:1 From an advisory covering 21 CVEs |
before 0:6.0.0-37.3.hum1 | 0:6.0.0-37.3.hum1 |
rubygem4.0-power_assertRed Hat:hummingbird:1 From an advisory covering 21 CVEs |
before 0:3.0.1-37.3.hum1 | 0:3.0.1-37.3.hum1 |
rubygem4.0-psychRed Hat:hummingbird:1 From an advisory covering 21 CVEs |
before 0:5.3.1-37.3.hum1 | 0:5.3.1-37.3.hum1 |
rubygem4.0-raccRed Hat:hummingbird:1 From an advisory covering 21 CVEs |
before 0:1.8.1-37.3.hum1 | 0:1.8.1-37.3.hum1 |
rubygem4.0-rakeRed Hat:hummingbird:1 From an advisory covering 21 CVEs |
before 0:13.3.1-37.3.hum1 | 0:13.3.1-37.3.hum1 |
rubygem4.0-rbsRed Hat:hummingbird:1 From an advisory covering 21 CVEs |
before 0:3.10.0-37.3.hum1 | 0:3.10.0-37.3.hum1 |
rubygem4.0-rdocRed Hat:hummingbird:1 From an advisory covering 21 CVEs |
before 0:7.0.4-37.3.hum1 | 0:7.0.4-37.3.hum1 |
rubygem4.0-rexmlRed Hat:hummingbird:1 From an advisory covering 21 CVEs |
before 0:3.4.4-37.3.hum1 | 0:3.4.4-37.3.hum1 |
rubygem4.0-rssRed Hat:hummingbird:1 From an advisory covering 21 CVEs |
before 0:0.3.2-37.3.hum1 | 0:0.3.2-37.3.hum1 |
rubygem4.0-rubygemsRed Hat:hummingbird:1 From an advisory covering 21 CVEs |
before 0:4.0.16-37.3.hum1 | 0:4.0.16-37.3.hum1 |
rubygem4.0-test-unitRed Hat:hummingbird:1 From an advisory covering 21 CVEs |
before 0:3.7.5-37.3.hum1 | 0:3.7.5-37.3.hum1 |
rubygem4.0-typeprofRed Hat:hummingbird:1 From an advisory covering 21 CVEs |
before 0:0.31.1-37.3.hum1 | 0:0.31.1-37.3.hum1 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, aliases, references | OSV | |
| affected, facts | ||
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-80213 is a medium vulnerability (CVSS 4.0) in Ruby Resolv, published August 21, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.27%, the 19th percentile. Fixed in ruby 3.3.13-r0.
References
github.com/ruby/resolv
ruby-lang.org/en/news/2026/08/27/multiple-vulnerabilities-in-resolv
nvd.nist.gov/vuln/detail/CVE-2026-80213
github.com/advisories/GHSA-jr95-x3fr-rcg4
security.alpinelinux.org/vuln/CVE-2026-80213
docs.bell-sw.com/security/cves/CVE-2026-80213
Show 130 moreShow less
errata.tuxcare.com/els_os/almalinux9.2esu/CLSA-2026-1789392152.html
nvd.nist.gov/vuln/detail/CVE-2026-80212
errata.tuxcare.com/els_os/tuxcare9.6esu/CLSA-2026-1789644305.html
github.com/CVEProject/cvelistV5/tree/main/cves/2026/80xxx/CVE-2026-80213.json
security-tracker.debian.org/tracker/CVE-2026-80213
openeuler.org/zh/security/security-bulletins/detail?id=openEuler-SA-2026-3864
nvd.nist.gov/vuln/detail/CVE-2026-82455
openeuler.org/zh/security/security-bulletins/detail?id=openEuler-SA-2026-3865
openeuler.org/zh/security/security-bulletins/detail?id=openEuler-SA-2026-3866
openeuler.org/zh/security/security-bulletins/detail?id=openEuler-SA-2026-3867
openeuler.org/zh/security/security-bulletins/detail?id=openEuler-SA-2026-3868
access.redhat.com/errata/RHSA-2026:57565
access.redhat.com/security/cve/CVE-2026-33210
images.redhat.com
access.redhat.com/security/cve/CVE-2026-54876
access.redhat.com/security/cve/CVE-2026-80213
access.redhat.com/security/cve/CVE-2026-80212
access.redhat.com/security/updates/classification
security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_57565.json
bugzilla.redhat.com/show_bug.cgi?id=2449871
cve.org/CVERecord?id=CVE-2026-33210
nvd.nist.gov/vuln/detail/CVE-2026-33210
github.com/ruby/json/security/advisories/GHSA-3m6g-2423-7cp3
bugzilla.redhat.com/show_bug.cgi?id=2511600
cve.org/CVERecord?id=CVE-2026-54876
nvd.nist.gov/vuln/detail/CVE-2026-54876
github.com/openssl/openssl/commit/155b5fe0f93365e6df1c56ee3606b121080c6c12
github.com/openssl/openssl/commit/d8c51048ac037a21bae0f41cad7a3920dc7f3638
openssl-library.org/news/secadv/20260805.txt
bugzilla.redhat.com/show_bug.cgi?id=2525066
cve.org/CVERecord?id=CVE-2026-80212
github.com/ruby/resolv/commit/6393c628b224d0234ef915813c0977e11ebe57ea
bugzilla.redhat.com/show_bug.cgi?id=2525014
cve.org/CVERecord?id=CVE-2026-80213
github.com/ruby/resolv/commit/b336e42d6a3e2a824308f7b47fa26a968641b366
access.redhat.com/errata/RHSA-2026:57986
security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_57986.json
access.redhat.com/errata/RHSA-2026:57994
security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_57994.json
access.redhat.com/errata/RHSA-2026:62562
access.redhat.com/security/cve/CVE-2026-75803
access.redhat.com/security/cve/CVE-2026-34181
access.redhat.com/security/cve/CVE-2026-42769
access.redhat.com/security/cve/CVE-2026-42768
access.redhat.com/security/cve/CVE-2026-34180
access.redhat.com/security/cve/CVE-2026-42767
access.redhat.com/security/cve/CVE-2026-7383
access.redhat.com/security/cve/CVE-2026-45447
access.redhat.com/security/cve/CVE-2026-42766
access.redhat.com/security/cve/CVE-2026-45446
access.redhat.com/security/cve/CVE-2026-34183
access.redhat.com/security/cve/CVE-2026-45445
access.redhat.com/security/cve/CVE-2026-9076
access.redhat.com/security/cve/CVE-2026-42765
access.redhat.com/security/cve/CVE-2026-42771
access.redhat.com/security/cve/CVE-2026-35188
access.redhat.com/security/cve/CVE-2026-42770
access.redhat.com/security/cve/CVE-2026-42764
access.redhat.com/security/cve/CVE-2026-34182
access.redhat.com/security/cve/CVE-2026-84782
security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_62562.json
bugzilla.redhat.com/show_bug.cgi?id=2481879
cve.org/CVERecord?id=CVE-2026-7383
nvd.nist.gov/vuln/detail/CVE-2026-7383
bugzilla.redhat.com/show_bug.cgi?id=2481880
cve.org/CVERecord?id=CVE-2026-9076
nvd.nist.gov/vuln/detail/CVE-2026-9076
bugzilla.redhat.com/show_bug.cgi?id=2481881
cve.org/CVERecord?id=CVE-2026-34180
nvd.nist.gov/vuln/detail/CVE-2026-34180
bugzilla.redhat.com/show_bug.cgi?id=2481882
cve.org/CVERecord?id=CVE-2026-34181
nvd.nist.gov/vuln/detail/CVE-2026-34181
bugzilla.redhat.com/show_bug.cgi?id=2481884
cve.org/CVERecord?id=CVE-2026-34182
nvd.nist.gov/vuln/detail/CVE-2026-34182
bugzilla.redhat.com/show_bug.cgi?id=2481885
cve.org/CVERecord?id=CVE-2026-34183
nvd.nist.gov/vuln/detail/CVE-2026-34183
bugzilla.redhat.com/show_bug.cgi?id=2481886
cve.org/CVERecord?id=CVE-2026-35188
nvd.nist.gov/vuln/detail/CVE-2026-35188
bugzilla.redhat.com/show_bug.cgi?id=2481887
cve.org/CVERecord?id=CVE-2026-42764
nvd.nist.gov/vuln/detail/CVE-2026-42764
bugzilla.redhat.com/show_bug.cgi?id=2481889
cve.org/CVERecord?id=CVE-2026-42765
nvd.nist.gov/vuln/detail/CVE-2026-42765
bugzilla.redhat.com/show_bug.cgi?id=2481890
cve.org/CVERecord?id=CVE-2026-42766
nvd.nist.gov/vuln/detail/CVE-2026-42766
bugzilla.redhat.com/show_bug.cgi?id=2481891
cve.org/CVERecord?id=CVE-2026-42767
nvd.nist.gov/vuln/detail/CVE-2026-42767
bugzilla.redhat.com/show_bug.cgi?id=2481892
cve.org/CVERecord?id=CVE-2026-42768
nvd.nist.gov/vuln/detail/CVE-2026-42768
bugzilla.redhat.com/show_bug.cgi?id=2481893
cve.org/CVERecord?id=CVE-2026-42769
nvd.nist.gov/vuln/detail/CVE-2026-42769
bugzilla.redhat.com/show_bug.cgi?id=2481894
cve.org/CVERecord?id=CVE-2026-42770
nvd.nist.gov/vuln/detail/CVE-2026-42770
bugzilla.redhat.com/show_bug.cgi?id=2481895
cve.org/CVERecord?id=CVE-2026-42771
nvd.nist.gov/vuln/detail/CVE-2026-42771
bugzilla.redhat.com/show_bug.cgi?id=2481896
cve.org/CVERecord?id=CVE-2026-45445
nvd.nist.gov/vuln/detail/CVE-2026-45445
bugzilla.redhat.com/show_bug.cgi?id=2481897
cve.org/CVERecord?id=CVE-2026-45446
nvd.nist.gov/vuln/detail/CVE-2026-45446
bugzilla.redhat.com/show_bug.cgi?id=2481898
cve.org/CVERecord?id=CVE-2026-45447
nvd.nist.gov/vuln/detail/CVE-2026-45447
bugzilla.redhat.com/show_bug.cgi?id=2523425
cve.org/CVERecord?id=CVE-2026-75803
nvd.nist.gov/vuln/detail/CVE-2026-75803
github.com/openssl/openssl/commit/119ab9555dc62275bbd71f6f49529b1a44feba42
github.com/openssl/openssl/commit/3621257986e27e540bf96a11570929a6e5a9e05b
github.com/openssl/openssl/commit/6c7aa6f8f6449b7fe0137ee8be65fcd239bd7d6a
github.com/openssl/openssl/commit/bdeb0cd994d915342787f117ee75044f0dc36f34
github.com/openssl/openssl/commit/bf95f5f772e9362f87b25cfa2f8cb15d984865b9
openssl-library.org/news/secadv/20260825.txt
bugzilla.redhat.com/show_bug.cgi?id=2537080
cve.org/CVERecord?id=CVE-2026-84782
nvd.nist.gov/vuln/detail/CVE-2026-84782
openssl-library.org/news/vulnerabilities
access.redhat.com/errata/RHSA-2026:62563
security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_62563.json