Alpine: multiple ruby packages: security update to 3.4.12-r0

critical Tenable Cloud Security Plugin ID 477499

Description

There are packages installed that are affected by multiple vulnerabilities referenced in the following CVEs:

- GitLab has remediated an issue in GitLab CE/EE affecting all versions from 19.2 before 19.2.8, 19.3 before
19.3.5, and 19.4 before 19.4.2 that, under certain conditions, could have allowed an unauthenticated user
to execute arbitrary code on the GitLab server via a specially crafted regular expression in a CI/CD
configuration, due to insufficient regular expression validation. (CVE-2026-97229)

- 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)

- GitLab has remediated an issue in GitLab CE/EE affecting all versions from 19.2 before 19.2.7, 19.3 before
19.3.3, and 19.4 before 19.4.1 that under certain conditions could have allowed an authenticated user to
execute arbitrary code on the GitLab server due to a double free issue when parsing a specially crafted
regular expression in a CI/CD configuration. (CVE-2026-89078)

- GitLab has remediated an issue in GitLab CE/EE affecting all versions from 19.2 before 19.2.7, 19.3 before
19.3.3, and 19.4 before 19.4.1 that under certain conditions could have allowed an authenticated user to
execute arbitrary code on the GitLab server due to an integer overflow issue when compiling a specially
crafted regular expression in a CI/CD configuration. (CVE-2026-93577)

Solution

Update the ruby library and its related packages to version 3.4.12-r0 or later.

See Also

https://security.alpinelinux.org/vuln/CVE-2026-110264

https://security.alpinelinux.org/vuln/CVE-2026-80212

https://security.alpinelinux.org/vuln/CVE-2026-80213

https://security.alpinelinux.org/vuln/CVE-2026-89078

https://security.alpinelinux.org/vuln/CVE-2026-93577

https://security.alpinelinux.org/vuln/CVE-2026-97229

Plugin Details

Severity: Critical

ID: 477499

Version: Revision 1.3

Type: Local

Published: 10/27/2026

Updated: 10/27/2026

Supported Sensors: Agentless Assessment, Tenable Cloud Security, Tenable Self-Hosted Container Security

Risk Information

VPR

Risk Factor: High

Score: 8

Percentile: 99.69

CVSS v2

Risk Factor: Critical

Base Score: 10

Temporal Score: 7.8

Vector: CVSS2#AV:N/AC:L/Au:N/C:C/I:C/A:C

CVSS Score Source: CVE-2026-97229

CVSS v3

Risk Factor: Critical

Base Score: 10

Temporal Score: 9

Vector: CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H

Temporal Vector: CVSS:3.0/E:P/RL:O/RC:C

Vulnerability Information

Exploit Available: true

Exploit Ease: Exploits are available

Vulnerability Publication Date: 8/27/2026

Reference Information

CVE: CVE-2026-110264, CVE-2026-80212, CVE-2026-80213, CVE-2026-89078, CVE-2026-93577, CVE-2026-97229