CVE-2023-6246
High · 8.4CVSS
8.4
EPSS
4.8%
Published
Jan 31, 2024
CISA due date
—
Cloudanix analysis
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.
- 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
- Create or modify executable with basename exceeding 1024 bytes
- Avoid calling openlog or pass NULL ident
- Trigger logging via syslog/vsyslog
- 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
- CVE-2026-4437 Calling gethostbyaddr or gethostbyaddr_r with a configured nsswitch.conf that specifies… Also affects glibc
- CVE-2026-4438 Calling gethostbyaddr or gethostbyaddr_r with a configured nsswitch.conf that specifies… Also affects glibc
- CVE-2025-15281 Calling wordexp with WRDE_REUSE in conjunction with WRDE_APPEND in the GNU C Library… Also affects glibc
- CVE-2023-6780 An integer overflow was found in the __vsyslog_internal function of the glibc library. Also affects glibc
- CVE-2023-6779 An off-by-one heap-based buffer overflow was found in the __vsyslog_internal function of… Also affects glibc
- CVE-2026-111497 A buffer overflow vulnerability in the Brotli decoder (c/dec/decode.c) in Google Brotli… CWE-787
- CVE-2026-112397 Pillow is a Python imaging library. CWE-787
- CVE-2026-112059 libLAS through 1.8.1 contains a heap out-of-bounds write vulnerability in the point… CWE-787