NewStart CGSL MAIN 6.02:glibc 多个漏洞 (NS-SA-2021-0053)

critical Nessus 插件 ID 147282

语言:

简介

远程机器受到多个漏洞影响。

描述

运行 MAIN 6.02 版本的远程 NewStart CGSL 主机上安装的 glibc 程序包受到多个漏洞的影响:

- 在低于 1.33 的 libidn 版本中,上下文有关的攻击者可利用 lib/idna.c 的 idna_to_ascii_4i 函数,通过 64 字节输入,造成拒绝服务(越界读取和崩溃)。(CVE-2016-6261)

- 在低于 1.33 的 libidn 版本中,上下文有关的攻击者可利用 lib/nfkc.c 的 stringprep_utf8_nfkc_normalize 函数,通过构建的 UTF-8 数据,造成拒绝服务(越界读取和崩溃)。
(CVE-2016-6263)

- glibc 2.1.1(1999 年 5 月 24 日发布)中存在内存泄漏,通过 LD_HWCAP_MASK 环境变量可利用此漏洞,并放大影响。请注意,如果已对 CVE-2017-1000366 进行修补,许多 glibc 版本都不易受到此问题的影响。(CVE-2017-1000408)

- glibc 2.5(2006 年 9 月 29 日发布)中存在缓冲区溢出,通过 LD_LIBRARY_PATH 环境变量可触发此漏洞。请注意,如果已对 CVE-2017-1000366 进行修补,许多 glibc 版本都不易受到此问题的影响。(CVE-2017-1000409)

- 在低于 2.0.4 的 Libidn2 版本中,puny_decode.c 的 decode_digit 函数存在整数溢出,远程攻击者可利用此漏洞,造成拒绝服务或可能造成其他不明影响。(CVE-2017-14062)

- 版本低于 2.27 的 GNU C 库(又称为 glibc 或 libc6)包含差一错误,导致 glob.c 的 glob 函数存在基于堆的缓冲区溢出漏洞,这与使用 ~ 运算符后跟长字符串的主目录处理相关。(CVE-2017-15670)

- 在低于 2.27 的 GNU C 库(又称为 glibc 或 libc6)中,glob.c 的 glob 函数在含运算符 ~ 的用户名非转义过程中存在缓冲区溢出漏洞。(CVE-2017-15804)

- GNU C 库(又称为 glibc 或 libc6)2.19 - 2.26 中的 elf/dl-load.c 未正确处理具有权限的(setuid 或 AT_SECURE)程序含有 $ORIGIN 的 RPATH 和 RUNPATH,本地用户可利用此漏洞,通过当前工作目录中的特洛伊木马库获取权限,这与 fillin_rpath 和 decompose_rpath 函数相关。这与将空 RPATH/RUNPATH 令牌误解译为 ./ 目录有关。注意:针对具权限程序的此 RPATH/RUNPATH 配置显然非常罕见;很可能是,任何常见的 Linux 发行版本都没有随附此类程序。(CVE-2017-16997)

- 如果尝试分配大小接近 SIZE_MAX 的对象,GNU C 库(又称为 glibc 或 libc6)2.26 中的 malloc 函数会返回过小的内存块,可能导致后续的堆溢出。存在此问题的原因是,每线程缓存(又称为 tcache)功能启用缺少整数溢出检查的代码路径。(CVE-2017-17426)

- 在 GNU C 库(又称为 glibc 或 libc6)2.21 - 2.27 的 sysdeps/i386/i686/multiarch/memcpy-sse2-unaligned.S 中,如果源内存范围跨越地址空间中间部分,针对 i386 的 SSE2 优化 memmove 实现无法正确执行重叠内存检查,从而导致复制操作生成损坏数据。此漏洞可能导致向上下文有关的攻击者泄露信息、拒绝服务或可能导致执行代码。(CVE-2017-18269)

- 在 glibc 2.26 及较早版本中,同时使用 getcwd() 和 realpath() 会产生混淆,攻击者可利用此漏洞,在目的地缓冲区之前写入数据,从而导致缓冲区下溢,并可能执行代码。
(CVE-2018-1000001)

- 在 GNU C 库(又称为 glibc 或 libc6)2.27 及较早版本的 stdlib/canonicalize.c 中,处理 realpath 函数过长的路径名参数时,可能会在 32 位架构上遭遇整数溢出,导致基于堆栈的缓冲区溢出,并可能执行任意代码。
(CVE-2018-11236)

- 在 GNU C 库(又称为 glibc 或 libc6)2.27 及较早版本中,mempcpy 函数的 AVX-512 优化实现可能在目标缓冲区之外写入数据,
从而导致 __mempcpy_avx512_no_vzeroupper 发生缓冲区溢出。(CVE-2018-11237)

- 在 GNU C 库(又称为 glibc 或 libc6)2.28 及之前版本中,尝试通过 getaddrinfo() 解析构建的主机名会导致分配未结束的套接字描述符。这与 if_nametoindex() 函数相关。(CVE-2018-19591)

- 在 GNU C 库(又称为 glibc 或 libc6)2.29 及之前版本中,posix/regexec.c 的 proceed_next_node 通过尝试匹配不区分大小写的正则表达式,造成基于堆的缓冲区过度读取。(CVE-2019-9169)

- 如果 80 位长双重函数的输入包含非规范位模式,如在将 0x5d414141414141410000 值传递至 x86 目标上的 sinl 时所见,2.32 之前的 GNU C 库(亦称 glibc 或 libc6)会在范围检查期间导致堆栈上的缓冲区溢出。这与 sysdeps/ieee754/ldbl-96/e_rem_pio2l.c 相关。(CVE-2020-10029)

请注意,Nessus 尚未测试此问题,而是只依赖于应用程序自我报告的版本号。

解决方案

升级易受攻击的 CGSL glibc 程序包。请注意,可能尚无可用的已更新程序包。请联系 ZTE 获取更多信息。

另见

http://security.gd-linux.com/notice/NS-SA-2021-0053

插件详情

严重性: Critical

ID: 147282

文件名: newstart_cgsl_NS-SA-2021-0053_glibc.nasl

版本: 1.4

类型: local

发布时间: 2021/3/10

最近更新时间: 2022/5/10

支持的传感器: Nessus

风险信息

VPR

风险因素: High

分数: 7.4

CVSS v2

风险因素: High

基本分数: 9.3

时间分数: 7.7

矢量: CVSS2#AV:N/AC:M/Au:N/C:C/I:C/A:C

CVSS 分数来源: CVE-2017-16997

CVSS v3

风险因素: Critical

基本分数: 9.8

时间分数: 9.1

矢量: CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

时间矢量: CVSS:3.0/E:F/RL:O/RC:C

CVSS 分数来源: CVE-2019-9169

漏洞信息

必需的 KB 项: Host/local_checks_enabled, Host/cpu, Host/ZTE-CGSL/release, Host/ZTE-CGSL/rpm-list

可利用: true

易利用性: Exploits are available

补丁发布日期: 2021/3/9

漏洞发布日期: 2016/7/20

可利用的方式

Metasploit (glibc realpath() Privilege Escalation)

参考资料信息

CVE: CVE-2016-6261, CVE-2016-6263, CVE-2017-1000408, CVE-2017-1000409, CVE-2017-14062, CVE-2017-15670, CVE-2017-15804, CVE-2017-16997, CVE-2017-17426, CVE-2017-18269, CVE-2018-1000001, CVE-2018-11236, CVE-2018-11237, CVE-2018-19591, CVE-2019-9169, CVE-2020-10029

BID: 92070, 101521, 101535, 102228, 102525, 102913, 102914, 104255, 104256, 106037, 107160