CVE-2026-84243
Received Received - Intake

Directory Traversal in GNU C Library via LANGUAGE Variable

Vulnerability report for CVE-2026-84243, including description, CVSS score, EPSS score, affected products, exploitability, helpful resources, and attack-flow context.

Publication date: 2026-10-30

Last updated on: 2026-10-30

Assigner: GNU C Library

Description

The gettext family of functions in the GNU C Library version 2.0 and later accept LANGUAGE environment variable entries that contain '/' or that are equal to "..", unless the program is setuid or setgid (AT_SECURE). An attacker who can set LANGUAGE in the environment of a program that uses gettext can make it load a message catalog (.mo file) from an arbitrary location in the file system. A crafted .mo file can crash the program through out-of-range offsets, or supply translations whose format directives do not match the arguments passed by the program. That causes undefined behaviour in the printf family of functions and may allow arbitrary code execution with the privileges of the program. The safety of message catalogs relies on them being installed in trusted, read-only locations, and the directory traversal bypasses this. The fix for CVE-2014-0475 rejects ".." path components in locale names passed to setlocale or taken from the LC_ALL, LC_* and LANG environment variables. gettext reads LANGUAGE directly and appends each colon-separated entry to the message catalog directory, so that fix did not cover LANGUAGE. LANGUAGE is only used when the LC_MESSAGES locale is not "C", "C.<encoding>" or "POSIX", so the attacker must also be able to select another installed locale, for example through LANG or LC_ALL. Exploitation also requires that the attacker can place the crafted file in a location readable by the target program, and that the environment crosses a trust boundary without the program running as AT_SECURE. An example is an SSH server that accepts LANGUAGE and LANG from clients through the AcceptEnv directive and restricts an account to a forced command; the attacker may use this to escape the restriction.

CVSS Scores

EPSS Scores

Probability:
Percentile:

Meta Information

Published
2026-10-30
Last Modified
2026-10-30
Generated
2026-10-30
AI Q&A
2026-10-30
EPSS Evaluated
N/A
NVD
EUVD

Affected Vendors & Products

Showing 1 associated CPE
Vendor Product Version / Range
The GNU C Library glibc 2.0

Helpful Resources

Exploitability

CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-22 The product uses external input to construct a pathname that is intended to identify a file or directory that is located underneath a restricted parent directory, but the product does not properly neutralize special elements within the pathname that can cause the pathname to resolve to a location that is outside of the restricted directory.

Attack-Flow Graph

AI Quick Actions

Instant insights powered by AI
Executive Summary

This vulnerability involves the GNU C Library's gettext functions improperly handling the LANGUAGE environment variable. Attackers can manipulate this variable to load malicious message catalog files from arbitrary locations, leading to crashes or arbitrary code execution. The issue arises because gettext does not validate path components like '..' or '/' in LANGUAGE entries, bypassing security checks present in other locale-related variables.

Detection Guidance

Check if programs using gettext are running with LANGUAGE environment variable set to values containing '/' or '..'. Inspect environment variables in running processes with commands like 'ps eww <pid>' or 'cat /proc/<pid>/environ | tr '\0' '\n''. Look for LANGUAGE entries with suspicious paths.

Impact Analysis

If exploited, this vulnerability could allow an attacker to execute arbitrary code on your system with the privileges of a vulnerable program. This could lead to data theft, system compromise, or further network infiltration. The attack requires specific conditions, such as the ability to set environment variables and place crafted files in accessible locations.

Mitigation Strategies

Update glibc to a patched version that rejects '..' in LANGUAGE. Set LC_MESSAGES to 'C' or 'POSIX' to disable LANGUAGE usage. Restrict environment variables passed to programs via SSH or other services to prevent LANGUAGE manipulation.

Chat Assistant

Ask questions about this CVE
Hi! I’m here to help you understand CVE-2026-84243. Ask me anything about the vulnerability, its impact, or mitigation strategies.
0/70

EPSS Chart