Cloudanix VulnDB

CVE-2023-6246

High · 8.4

CVSS

8.4

EPSS

4.8%

Published

Jan 31, 2024

CISA due date

—

Cloudanix analysis

Monitor only SSVC: Track

A flaw in a core system library can let local users crash programs or gain higher access rights if programs have very long names and use certain logging functions.

Exploit Available
Exploitation
Local Privilege
Attacker needs
Local User
Complexity
Low
Impact
Full Compromise
Component
Library
Class
Memory Corruption
Remediation
Upgrade
Effort
Medium
Patch risk
Medium

What it actually does

A heap-based buffer overflow occurs in the __vsyslog_internal function when the program name exceeds 1024 bytes without prior openlog call with non-NULL ident, potentially causing crashes or local privilege escalation.

Why it matters to the business

Applications using syslog without proper initialization may crash or allow local privilege escalation, disrupting services and compromising system security on affected systems.

How an attack unfolds

An attacker compiles or renames a binary with a name longer than 1024 bytes, ensures openlog is not called or ident is NULL, and invokes syslog or vsyslog functions to trigger the overflow for code execution or denial of service.

How to fix it

Upgrade glibc to the fixed commit ef321e23c20eebc6d6fb4044425c00e6df27b05f or later versions.

How to confirm the fix worked

Verify glibc version is updated beyond the vulnerable range and test applications with long program names to ensure no overflow occurs.

Typical attack path

  1. Create or modify executable with basename exceeding 1024 bytes
  2. Avoid calling openlog or pass NULL ident
  3. Trigger logging via syslog/vsyslog
  4. Exploit overflow for privilege escalation or crash

How to detect it

Examine system logs for crashes related to syslog functions and monitor for processes with unusually long names invoking logging.

What your security team should do

  • Apply the glibc patch immediately
  • Audit applications for syslog usage patterns
  • Monitor for updates in dependent packages

The record

A heap-based buffer overflow was found in the __vsyslog_internal function of the glibc library. This function is called by the syslog and vsyslog functions. This issue occurs when the openlog function was not called, or called with the ident argument set to NULL, and the program name (the basename of argv[0]) is bigger than 1024 bytes, resulting in an application crash or local privilege escalation. This issue affects glibc 2.36 and newer.

Affected packages

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

Related vulnerabilities