Glibc 2.32 系统库发布

经过六个月的开发 发表 系统库发布 GNU C库 (glibc) 2.32,完全符合ISO C11和POSIX.1-2017的要求。 新版本包括来自 67 位开发人员的修复。

在 Glibc 2.32 中实现 改进 您可以注意:

  • 添加了对 Synopsys ARC HS (ARCv2 ISA) 处理器的支持。 该端口至少需要 binutils 2.32、gcc 8.3 和 Linux 内核 5.1 才能运行。 支持三种 ABI 变体:arc-linux-gnu、arc-linux-gnuhf 和 arceb-linux-gnu (big-endian);
  • 加载 DT_AUDIT 和 节中指定的审核模块
    可执行文件的 DT_DEPAUDIT。

  • 对于 powerpc64le 架构,实现了对 IEEE128 long double 类型的支持,在使用“-mabi=ieeelongdouble”选项构建时启用。
  • 一些 API 带有 GCC“访问”属性注释,这使得在 GCC 10 中编译时可以生成更好的警告,以检测可能的缓冲区溢出和其他越界情况。
  • 对于 Linux 系统,函数 pthread_attr_setsigmask_np 和
    pthread_attr_getsigmask_np,它使应用程序能够为使用 pthread_create 创建的线程指定信号掩码。

  • 更新了编码数据、字符类型信息和音译表,以支持 Unicode 13.0.0 规范;
  • 添加了新的头文件,它定义了 __libc_single_threaded 变量,可在应用程序中用于单线程优化。
  • 添加了函数 sigabbrev_np 和 sigdescr_np,它们返回信号的缩写名称和描述(例如,SIGHUP 的“HUP”和“Hangup”)。
  • 添加了函数 strerrorname_np 和 strerrordesc_np,它们返回错误的名称和描述(例如,EINVAL 的“EINVAL”和“无效参数”)。
  • 对于 ARM64 平台,添加了“--enable-standard-branch-protection”标志(或 GCC 中的 -mbranch-protection=standard),这使得 ARMv8.5-BTI(分支目标指示器)机制能够保护执行不应执行的指令集、分支转换。 阻止转换到代码的任意部分是为了防止在使用面向返回的编程技术(ROP - 返回导向的编程)的漏洞中创建小工具;攻击者不会尝试将其代码放入内存中,而是对已经存在的代码进行操作以返回控制指令结尾的机器指令,从中构建调用链以获得所需的功能)。
  • 对过时功能进行了重大清理,包括删除“--enable-obsolete-rpc”和“--enable-obsolete-nsl”选项、头文件。 函数 sstk、siginterrupt、sigpause、sighold、sigrelse、sigignore 和 sigset、数组 sys_siglist、_sys_siglist 和 sys_sigabbrev、符号 sys_errlist、_sys_errlist、sys_nerr 和 _sys_nerr 以及 NSS 模块 hesiod 已被弃用。
  • 默认情况下,ldconfig 已改为使用新的 ld.so.cache 格式,glibc 已支持该格式近 20 年。
  • 已修复的漏洞:
    • CVE-2016-10228 – 在处理不正确的多字节数据时,使用“-c”选项运行 iconv 实用程序时,会出现循环。
    • CVE-2020-10029 使用伪空参数调用三角函数时堆栈损坏。
    • CVE-2020-1752 - 在路径中扩展对主目录(“~user”)的引用时,glob 函数中的释放后使用内存访问。
    • CVE-2020-6096 – 在 ARMv7 平台上,memcpy() 和 memmove() 中负参数值的处理不正确,该值决定了复制区域的大小。 允许 在 memcpy() 和 memmove() 函数中处理以某种方式格式化的数据时组织代码执行。 值得注意的是,这个问题 留下来 自该信息公开披露以来近两个月以及自 Glibc 开发人员收到通知以来五个月内未更正。

来源: opennet.ru

添加评论