发布 Glibc 2.39 系统库和 GNU Binutils 2.42 实用程序集

经过六个月的开发,GNU C Library (glibc) 2.39系统库已经发布,完全符合ISO C11和POSIX.1-2017标准的要求。 新版本包含 67 名开发人员的修复。

Glibc 2.39 中实现的一些改进包括:

  • 已提供对内核中引入的影子堆栈的支持。 Linux 6.6 版本利用 Intel 处理器的硬件特性,防止在栈缓冲区溢出时函数返回地址被覆盖,从而阻止了许多攻击。该保护机制的工作原理是:在控制权转移到函数后,不仅将返回地址存储在常规栈上,还会存储在一个独立的“影子栈”上。影子栈无法被直接修改。函数退出前,会从影子栈中弹出返回地址,并与主栈中的返回地址进行比较。如果地址不匹配,则会抛出异常,从而阻止攻击覆盖主栈上的地址。新增的“--enable-cet”构建选项用于启用此保护机制。
  • 添加了新的头文件,在 ISO C2X 标准草案中定义,包括函数 stdc_leading_zeros、stdc_leading_ones、stdc_trailing_zeros、stdc_trailing_ones、stdc_first_leading_zero、stdc_first_leading_one、stdc_first_trailing_zero、stdc_first_trailing_one、stdc_count_zeros、stdc_count_ones、stdc_has _single_bit、stdc_bit_width、std c_bit_floor 和 stdc_bit_ceil 的变体类型为“unsigned char”、“无符号短整型”、“无符号整型”、“无符号长整型”和“无符号长整型”。
  • 对于平台 Linux 已实现 posix_spawnattr_getcgroup_np 和 posix_spawnattr_setcgroup_np 函数以及 POSIX_SPAWN_SETCGROUP 标志。这些函数允许使用 posix_spawn 和 posix_spawnp 函数在新进程中设置 cgroupv2,从而消除竞争条件。这些函数是 GNU 扩展,需要内核才能运行。 Linux 支持 clone3 系统调用。
  • 对于平台 Linux pidfd_spawn 和 pidfd_spawp 函数已经实现,它们的语义与 posix_spawn 函数类似,但它们返回的不是进程标识符 (PID),而是文件描述符,供支持 PIDFD 机制的函数使用,例如 pidfd_send_signal、poll 和 waitid(PIDFD 与特定进程关联且不会改变,而 PID 可以在与该 PID 关联的当前进程终止后与另一个进程关联)。
  • 对于平台 Linux 添加了 pidfd_getpid 函数,用于根据 pid_spawn、fork_np 和 pidfd_open 函数返回的进程文件描述符 (PIDFD) 确定进程标识符 (PID)。
  • 大小修饰符“wN”已添加到 scanf 系列函数中,用于 intN_t、int_leastN_t、uintN_t 和 uint_leastN_t 类型的参数。例如,要读取int32_t和int_least32_t类型的十进制值,可以指定“%w32d”,十六进制值可以指定为“%w32x”。同样,ISO C2X 标准草案中引入的 int_fastN_t 和 uint_fastN_t 类型中添加了“wfN”修饰符。
  • 添加了“glibc.cpu.plt_rewrite”设置,可以在 x86-64 系统上重写 PLT(过程链接表),其中链接器将用直接分支替换 PLT 中的间接分支。
  • 添加了“glibc.mem.decorate_maps”设置以添加额外的内存分配信息(例如由 pthread_create 创建的线程堆栈或通过 malloc 分配的内存)。
  • 现在,“statvfs”结构体中的“f_type”字段会填充文件系统类型的信息,其内容与“statfs”结构体中该字段的内容相同。此前, Linux “f_type”字段始终包含0。
  • 对于 AArch64 平台,libmvec 和 math.h 中添加了注释,在构建时指定“-ffast-math”选项时,允许在 GCC 9 和更新版本的编译器中构建时使用调用向量。数学函数 acos、acosf、asin、asinf、atan、atanf、atan2、atan2f、cos、cosf、exp、expf、exp10、exp10f、exp2、exp2f、expm1、expm1f、log、logf、log10、log10f、启用矢量化log1p、log1pf、log2、log2f、sin、sinf、tan 和 tanf。
  • libcrypt 库和相关头文件已从包中删除” ”鼓励应用程序开发人员切换到替代库,例如 libxcrypt。
  • ldconfig 实用程序现在会跳过带有“;”字符的文件。在文件名中或以“.dpkg.tmp”和“.dpkg.new”结尾,这可以让您避免处理 rpm 和 dpkg 包管理器的临时文件。
  • 对 Intel Itanium 处理器中使用的 ia64 架构 (ia64*-*-linux-gnu) 的支持已停止。
  • 已修复的漏洞:
    • CVE-2023-6246、CVE-2023-6779、CVE-2023-6780 是 __vsyslog_internal() 函数中的严重漏洞,允许用户通过启动 SUID 应用程序进行操作来以提升的权限执行代码。
    • CVE-2023-4911 是 Glibc ld.so 中的一个漏洞,可让您获得系统的 root 权限。该漏洞是由于 GLIBC_TUNABLES 环境变量中指定的字符串解析代码中存在错误造成的,这可能会导致解析值在分配的缓冲区中越界写入。有可行的漏洞利用。
    • CVE-2023-4806 是 getaddrinfo 函数中的释放后使用漏洞。当 NSS 插件仅实现“_gethostbyname2_r”和“_getcanonname_r”回调,但不支持“_gethostbyname3_r”调用时,就会出现此问题。要利用此漏洞,DNS 服务器必须为请求的主机返回大量 IPv6 和 IPv4 地址,这将导致当 AI_CANONNAME、AI_ALL 和 AI_V6MAPPED 标志为 AF_INET4 系列的 getaddrinfo 函数的进程崩溃。放。
    • CVE-2023-4527 是 getaddrinfo 函数中的一个漏洞,在处理通过 TCP 接收的大于 2048 字节的 DNS 响应时,该漏洞允许从缓冲区边界之外的区域读取数据。当使用 /etc/resolv.conf 中的“no-aaaa”选项时,会出现该漏洞。

    此外,我们还可以注意到一组系统实用程序 GNU Binutils 2.42 的发布,其中包括 GNU 链接器、GNU 汇编器、nm、objdump、strings、strip 等程序。

    在新版本的Binutils中:

    • x86-64 系统的汇编程序 (gas) 中添加了实验性选项“--scfi=experimental”,以合成与 System V AMD64 ABI 对应的手写汇编代码的 CFI(控制流完整性)结构。
    • 向 readelf 添加了“--extra-sym-info”选项,以显示有关符号(“-symbols”)的扩展信息,例如 st_shndx 索引引用的节的名称。
    • objcopy 实用程序提供了使用“--set-section-flags”选项和“large”值来为 x86-64 系统上的 ELF 对象设置 SHF_X86_64_LARGE 标志部分的功能。 “--visualize-jumps”选项实现了对 s390 架构的支持。
    • 实现了反汇编s390指令时在指令描述中显示注释的功能。要启用描述,您可以在 objdump 中指定“-M insndesc”选项,并在 gdb 中指定“set disassembler-options insndesc”选项。
    • 向链接器添加了“-z mark-plt”和“-z nomark-plt”选项,以使用 DT_X86_64_PLT、DT_X86_64_PLTSZ 和 DT_X86_64_PLTENT 标签来标记 PLT 表中的条目。
    • 添加了对链接器反向排序的支持。
    • 添加了“--warn-execstack-objects”、“--error-execstack”和“--error-rxw-segments”选项,用于在可执行堆栈对象上使用时输出警告或错误。
    • 已经实现了对LoongArch架构的ABI 2.30的支持,以及对LoongArch 1.10规范中定义的新指令的支持。
    • 添加了对 Kalray 处理器中使用的 KVX 指令集(例如,SoC Coolidge 中使用的)的支持。
    • 对于基于Intel架构的系统,增加了对扩展的支持:
      • 英特尔 APX:32 个 GPR、NDD、PUSH2/POP2、PUSHP/POPP。
      • USER_MSR。
      • AVX10.1。
      • PBNDKB。
      • SM4。
      • SM3。
      • SHA512。
      • AVX-VNNI-INT16。
    • RISC-V 架构端口添加了对扩展的支持:
      • T 型头(XTheadVector、XTheadZvlsseg 和 XTheadZvamo)。
      • CORE-V(XCVmac、XCValu)。
      • SiFive VCIX (XSfVcp)。
    • AArch64 架构的端口已添加对扩展的支持:
      • SVE2.1(可扩展矢量扩展2.1)。
      • SME2.1(可扩展矩阵扩展2.1)。
      • B16B16(SVE16 和 SME16 的 BFloat2 和 BFloat2)。
      • RASv2(可靠性、可用性和可服务性 v2)。
      • LSE128(128 位原子)。
      • GCS(防护控制站)。
      • CHK(检查功能状态)。
      • SPECRES2(增强的投机限制)。
      • LRCPC3(加载采集 RCpc)。
      • THE(翻译强化)。
      • ITE(指令跟踪)。
      • D128(128 位内存页表描述符)。
      • XS(XS内存属性)。
    • 添加了对 AArch64 Cortex-A520、Cortex-A720、Cortex-X3 和 Cortex-X4 处理器的支持。
    • 为了与 clang/LLVM 汇编器兼容,BPF 汇编器添加了对使用符号“#”和“//”分隔注释以及使用符号“;”的支持分隔行内的表达式(“;”不能再用于注释)。

    来源: opennet.ru

为具有 DDoS 保护、VPS VDS 服务器的站点购买可靠的主机 🔥 购买具备 DDoS 防护的可靠网站托管服务,包括 VPS 和 VDS 服务器 | ProHoster