Public vulnerability disclosure

CVE-2023-4911

Glibc: buffer overflow in ld.so leading to privilege escalation

publishedKnown exploited · CISA KEVCWE-122

A buffer overflow was discovered in the GNU C Library's dynamic loader ld.so while processing the GLIBC_TUNABLES environment variable. This issue could allow a local attacker to use maliciously crafted GLIBC_TUNABLES environment variables when launching binaries with SUID permission to execute code with elevated privileges.

Technical severity7.8 highCVSS 3.1 · CNA: redhat
Published2023-10-03Source updated 2026-11-07
Collected2026-11-073 attributed sources

Fixes and workarounds

Workaround

For customers who cannot update immediately and do not have Secure Boot feature enabled, the issue can be mitigated using the provided SystemTap script with the following steps. When enabled, any setuid program invoked with GLIBC_TUNABLES in the environment will be terminated immediately. To invoke the setuid program, users will then have to unset or clear the GLIBC_TUNABLES envvar, e.g. `GLIBC_TUNABLES= sudo` . Note that these mitigation steps will need to be repeated if the system is rebooted. 1) Install required systemtap packages and dependencies as per - https://access.redhat.com/solutions/5441 2) Create the following systemtap script, and name it stap_block_suid_tunables.stp: ~~~ function has_tunable_string:long() { name = "GLIBC_TUNABLES" mm = @task(task_current())->mm; if (mm) { env_start = @mm(mm)->env_start; env_end = @mm(mm)->env_end; if (env_start != 0 && env_end != 0) while (env_end > env_start) { cur = user_string(env_start, ""); env_name = tokenize(cur, "="); if (env_name == name && tokenize("", "") != "") return 1; env_start += strlen (cur) + 1 } } return 0; } probe process("/lib*/ld*.so*").function("__tunables_init") { atsecure = 0; /* Skip processing if we can't read __libc_enable_secure, e.g. core dump handler (systemd-cgroups-agent and systemd-coredump). */ try { atsecure = @var("__libc_enable_secure"); } catch { printk (4, sprintf ("CVE-2023-4911: Skipped check: %s (%d)", execname(), pid())); } if (atsecure && has_tunable_string ()) raise (9); } ~~~ 3) Load the systemtap module into the running kernel: ~~~ stap -g -F -m stap_block_suid_tunables stap_block_suid_tunables.stp ~~~ 4) Ensure the module is loaded: ~~~ lsmod | grep -i stap_block_suid_tunables stap_block_suid_tunables 249856 0 ~~~ 5) Once the glibc package is updated to the version containing the fix, the systemtap generated kernel module can be removed by running: ~~~ rmmod stap_block_suid_tunables ~~~ If Secure Boot is enabled on a system, the SystemTap module must be signed. An external compiling server can be used to sign the generated kernel module with a key enrolled into the kernel's keyring or starting with SystemTap 4.7 you can sign a module without a compile server. See further information here - https://www.redhat.com/sysadmin/secure-boot-systemtap

Source: CNA: redhat

Affected products and versions

Affected products, source version ranges and reporting authorities
ProductVersionsAuthority


glibc
https://sourceware.org/git/glibc.git
≥ 2.34; < 2.39 (affected, custom)
Other versions: unaffected
CNA: redhat
Red Hat Enterprise Linux 8
Red Hat
glibc
https://access.redhat.com/downloads/content/package-browser/
≥ 0:2.28-225.el8_8.6; < * (unaffected, rpm)
Other versions: affected
CNA: redhat
Red Hat Enterprise Linux 8.6 Extended Update Support
Red Hat
glibc
https://access.redhat.com/downloads/content/package-browser/
≥ 0:2.28-189.6.el8_6; < * (unaffected, rpm)
Other versions: affected
CNA: redhat
Red Hat Enterprise Linux 9
Red Hat
glibc
https://access.redhat.com/downloads/content/package-browser/
≥ 0:2.34-60.el9_2.7; < * (unaffected, rpm)
Other versions: affected
CNA: redhat
Red Hat Enterprise Linux 9.0 Extended Update Support
Red Hat
glibc
https://access.redhat.com/downloads/content/package-browser/
≥ 0:2.34-28.el9_0.4; < * (unaffected, rpm)
Other versions: affected
CNA: redhat
Red Hat Virtualization 4 for Red Hat Enterprise Linux 8
Red Hat
glibc
https://access.redhat.com/downloads/content/package-browser/
≥ 0:2.28-189.6.el8_6; < * (unaffected, rpm)
Other versions: affected
CNA: redhat
Red Hat Virtualization 4 for Red Hat Enterprise Linux 8
Red Hat
redhat-release-virtualization-host
https://access.redhat.com/downloads/content/package-browser/
≥ 0:4.5.3-10.el8ev; < * (unaffected, rpm)
Other versions: affected
CNA: redhat
Red Hat Virtualization 4 for Red Hat Enterprise Linux 8
Red Hat
redhat-virtualization-host
https://access.redhat.com/downloads/content/package-browser/
≥ 0:4.5.3-202312060823_8.6; < * (unaffected, rpm)
Other versions: affected
CNA: redhat
Red Hat Enterprise Linux 6
Red Hat
glibc
https://access.redhat.com/downloads/content/package-browser/
Range not reported
Other versions: unaffected
CNA: redhat
Red Hat Enterprise Linux 7
Red Hat
compat-glibc
https://access.redhat.com/downloads/content/package-browser/
Range not reported
Other versions: unaffected
CNA: redhat
Red Hat Enterprise Linux 7
Red Hat
glibc
https://access.redhat.com/downloads/content/package-browser/
Range not reported
Other versions: unaffected
CNA: redhat
SIMATIC S7-1500 CPU 1518-4 PN/DP MFP
Siemens
≥ V3.1.5; < * (affected, custom)
Other versions: unknown
ADP: siemens-SADP
SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP
Siemens
≥ V3.1.5; < * (affected, custom)
Other versions: unknown
ADP: siemens-SADP
SIMATIC S7-1500 TM MFP - GNU/Linux subsystem
Siemens
≥ 0; < V1.1 (affected, custom)
Other versions: unknown
ADP: siemens-SADP
SIPLUS S7-1500 CPU 1518-4 PN/DP MFP
Siemens
≥ V3.1.5; < * (affected, custom)
Other versions: unknown
ADP: siemens-SADP

Version ranges are source assertions. Check the vendor advisory and your installed configuration before determining exposure.

CVSS assessments

CVSS scores, vectors and reporting authorities
Version / scoreVectorAuthority
3.1 / 7.8
high
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:HCNA: redhat

Exploit evidence

No exploit evidence in collected sources. This is not proof of no exploitation.

References

For agents and automation

Read public disclosures for free as Markdown or JSON. Compatible browsers also expose native WebMCP tools to search disclosures, read this page, and discover API access.

Use the ontology-linked Cyber API with x402 pay per request, or a Y2 Pro or Elite API key with the intel:cyber scope.

Endpoints and access details

https://api.y2.dev/api/v2/cyber/cves
https://api.y2.dev/api/v2/cyber/cves/{cveId}

A workspace owner or admin can create a Pro or Elite API key. Send Authorization: Bearer <Y2_API_KEY> from your trusted agent runtime.

For x402, omit Authorization and read the HTTP 402 payment challenge before signing a retry. Public browser tools do not make payments.

Agent access JSON · OpenAPI · CVE API guide