Cloudanix VulnDB

CVE-2023-4806

Medium · 5.9

CVSS

5.9

EPSS

1.6%

Published

Sep 18, 2023

CISA due date

—

Cloudanix analysis

Monitor only SSVC: Track

A rare flaw in the standard C library used by most Linux systems can cause programs that look up network addresses to crash under very specific conditions.

Exploitation
Remote Unauthenticated
Attacker needs
None
Complexity
High
Impact
Denial Of Service
Component
Library
Class
Use After Free
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

Use-after-free in glibc getaddrinfo when an NSS module provides only _nss_*_gethostbyname2_r and _nss_*_getcanonname_r hooks (no _nss_*_gethostbyname3_r), the resolved name returns many IPv4/IPv6 addresses, and the call uses AF_INET6 with AI_CANONNAME|AI_ALL|AI_V4MAPPED, resulting in access to freed memory and application crash.

Why it matters to the business

Applications performing DNS lookups under uncommon NSS configurations may experience unexpected crashes, leading to service disruption or degraded availability in environments relying on glibc for name resolution.

How an attack unfolds

An attacker triggers repeated getaddrinfo calls with the specific address family and flags against a system using a minimal NSS module implementation; the sequence of hook invocations causes the library to dereference freed memory, crashing the calling process and denying service.

How to fix it

Upgrade glibc to a version containing the fix for this use-after-free; monitor vendor advisories for Red Hat Enterprise Linux and Fedora packages and apply updates as they become available. Where immediate patching is not possible, restrict use of custom NSS modules that omit the _nss_*_gethostbyname3_r hook.

How to confirm the fix worked

After applying updates, recompile or redeploy affected applications and exercise getaddrinfo calls under the previously triggering conditions to confirm absence of crashes; review package versions against vendor security errata.

Typical attack path

  1. Identify or influence a target application that performs DNS resolution via glibc getaddrinfo
  2. Ensure the target environment uses an NSS module exposing only the two listed hooks without the third
  3. Craft or trigger name resolution requests returning large numbers of IPv4 and IPv6 addresses
  4. Invoke getaddrinfo with AF_INET6, AI_CANONNAME, AI_ALL, and AI_V4MAPPED flags
  5. Observe process crash due to use-after-free

How to detect it

Review application and system logs for unexpected crashes or segmentation faults occurring during DNS resolution; correlate timestamps with getaddrinfo usage in processes that rely on glibc; examine NSS configuration files for modules implementing only the two listed hooks.

What your security team should do

  • Prioritize patching glibc in internet-facing or high-availability systems that perform DNS lookups
  • Audit NSS module configurations and remove or replace minimal hook implementations where feasible
  • Monitor upstream glibc and distribution mailing lists for the availability of fixed packages
  • Include glibc version checks in vulnerability scanning and asset inventory processes

The record

A flaw has been identified in glibc. In an extremely rare situation, the getaddrinfo function may access memory that has been freed, resulting in an application crash. This issue is only exploitable when a NSS module implements only the _nss_*_gethostbyname2_r and _nss_*_getcanonname_r hooks without implementing the _nss_*_gethostbyname3_r hook. The resolved name should return a large number of IPv6 and IPv4, and the call to the getaddrinfo function should have the AF_INET6 address family with AI_CANONNAME, AI_ALL and AI_V4MAPPED as flags.

Affected packages

Ecosystem Package Introduced Fixed
AlmaLinux:8 compat-libpthread-nonshared 0 2.28-225.el8_8.6
AlmaLinux:8 glibc 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-all-langpacks 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-benchtests 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-common 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-devel 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-doc 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-gconv-extra 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-headers 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-aa 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-af 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-agr 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-ak 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-am 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-an 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-anp 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-ar 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-as 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-ast 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-ayc 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-az 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-be 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-bem 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-ber 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-bg 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-bhb 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-bho 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-bi 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-bn 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-bo 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-br 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-brx 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-bs 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-byn 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-ca 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-ce 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-chr 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-cmn 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-crh 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-cs 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-csb 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-cv 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-cy 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-da 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-de 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-doi 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-dsb 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-dv 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-dz 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-el 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-en 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-eo 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-es 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-et 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-eu 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-fa 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-ff 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-fi 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-fil 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-fo 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-fr 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-fur 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-fy 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-ga 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-gd 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-gez 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-gl 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-gu 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-gv 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-ha 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-hak 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-he 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-hi 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-hif 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-hne 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-hr 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-hsb 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-ht 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-hu 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-hy 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-ia 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-id 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-ig 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-ik 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-is 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-it 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-iu 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-ja 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-ka 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-kab 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-kk 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-kl 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-km 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-kn 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-ko 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-kok 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-ks 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-ku 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-kw 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-ky 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-lb 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-lg 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-li 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-lij 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-ln 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-lo 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-lt 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-lv 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-lzh 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-mag 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-mai 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-mfe 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-mg 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-mhr 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-mi 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-miq 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-mjw 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-mk 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-ml 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-mn 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-mni 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-mr 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-ms 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-mt 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-my 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-nan 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-nb 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-nds 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-ne 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-nhn 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-niu 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-nl 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-nn 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-nr 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-nso 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-oc 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-om 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-or 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-os 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-pa 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-pap 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-pl 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-ps 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-pt 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-quz 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-raj 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-ro 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-ru 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-rw 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-sa 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-sah 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-sat 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-sc 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-sd 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-se 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-sgs 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-shn 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-shs 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-si 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-sid 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-sk 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-sl 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-sm 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-so 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-sq 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-sr 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-ss 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-st 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-sv 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-sw 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-szl 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-ta 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-tcy 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-te 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-tg 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-th 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-the 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-ti 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-tig 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-tk 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-tl 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-tn 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-to 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-tpi 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-tr 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-ts 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-tt 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-ug 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-uk 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-unm 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-ur 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-uz 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-ve 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-vi 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-wa 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-wae 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-wal 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-wo 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-xh 0 2.28-225.el8_8.6
AlmaLinux:8 glibc-langpack-yi 0 2.28-225.el8_8.6

Related vulnerabilities