EulerOS 2.0 SP2:binutils (EulerOS-SA-2019-2450)

critical Nessus 插件 ID 131604

简介

远程 EulerOS 主机缺少多个安全更新。

描述

根据安装的 binutils 程序包版本,远程主机上安装的 EulerOS 会受到下列漏洞影响:- 在 GNU Binutils 2.29 和 2.30 发布之 GNU libiberty 的 cplus-dem.c 中发现一个问题。在 libiberty 提供的 C++ demangling 函数中发生堆栈耗尽,而且有递归堆栈帧:demangle_nested_args、demangle_args、do_arg 和 do_type。(CVE-2018-9138) - 在 GNU Binutils 2.28 中发布的二进制文件描述符 (BFD) 库(又称为 libbfd)因为缺少 malloc() return-value 检查,无法查看实际上是否在 _bfd_generic_get_section_contents 函数中分配内存,而容易受到大小为 8 的无效写入影响。此漏洞造成使用 libbfd 库进行二进制程序分析的程序(例如 objcopy)崩溃。(CVE-2017-8395) - 在 GNU Binutils 2.29 发布的二进制文件描述符 (BFD) 库(又称为 libbfd)中,elf.c 中的 _bfd_elf_slurp_version_tables 允许远程攻击者通过特制的 ELF 文件,造成拒绝服务(过度内存分配和应用程序崩溃)。(CVE-2017-14938) - GNU Binutils 2.28 中的 opcodes/rl78-decode.opc 存在一个无限的 GETBYTE 宏,进而允许远程攻击者通过特制的二进制文件,造成拒绝服务(缓冲区溢出和应用程序崩溃),或可能造成其他不明影响,在“objdump -D”执行期间未正确处理此文件即为一例。(CVE-2017-9751) - 在 GNU Binutils 2.28 发布的二进制文件描述符 (BFD) 库(又称为 libbfd)中,elflink.c 存在一个“在空指针内访问成员”的未定义行为问题,进而可能允许远程攻击者通过“int main() {return 0}”程序,造成拒绝服务(应用程序崩溃),或可能造成其他不明影响。(CVE-2017-7614) - 在 GNU Binutils 2.31 发布之二进制文件描述符 (BFD) 库(又称为 libbfd)中,在 merge.c 中的 sec_merge_hash_lookup 函数发现一个基于堆的缓冲区过度读取问题,因为在大小不是 entsize 的倍数时,_bfd_add_merge_section 未正确处理段合并。特制的 ELF 允许远程攻击者造成拒绝服务,ld 即为一例。(CVE-2018-18605) - 在 GNU Binutils 2.31 发布的二进制文件描述符 (BFD) 库(又称为 libbfd)中,在 merge.c 的 merge_strings 函数中发现一个问题。尝试将段与大型对齐合并时,在 _bfd_add_merge_section 中存在一个空指针取消引用。特制的 ELF 允许远程攻击者造成拒绝服务,ld 即为一例。(CVE-2018-18606) - 在 GNU Binutils 2.31 发布的二进制文件描述符 (BFD) 库(又称为 libbfd)中,elflink.c 的 elf_link_input_bfd 中发现一个问题。当用于寻找不含任何 TLS 段的 STT_TLS 符号时,在 elf_link_input_bfd 中存在一个空指针取消引用。特制的 ELF 允许远程攻击者造成拒绝服务,ld 即为一例。(CVE-2018-18607) - 在 GNU Binutils 2.31 发布的二进制文件描述符 (BFD) 库(又称为 libbfd)中,syms.c 中的 _bfd_generic_read_minisymbols 函数通过特制的 ELF 文件而存在一个内存泄露,进而导致拒绝服务(内存耗用),nm 即为一例。(CVE-2018-20002) - 在 GNU Binutils 2.29 发布的二进制文件描述符 (BFD) 库(又称为 libbfd)中,dwarf2.c 中的 decode_line_info 函数允许远程攻击者通过特制的 ELF 文件,造成拒绝服务(read_1_byte 基于堆的缓冲区过度读取和应用程序崩溃)。(CVE-2017-14128) - 在 GNU Binutils 2.29 发布的二进制文件描述符 (BFD) 库(又称为 libbfd)中,dwarf2.c 中的 decode_line_info 未正确处理长度计算,进而允许远程攻击者通过特制的 ELF 文件,造成拒绝服务(基于堆的缓冲区过度读取和应用程序崩溃),这与 read_1_byte 相关。(CVE-2017-14939) - 在 GNU Binutils 2.32 发布的二进制文件描述符 (BFD) 库(又称为 libbfd)中发现一个问题。从 pei-x86_64.c 中的 pex64_get_runtime_function 调用时,越界读取在 libbfd.c 的 bfd_getl32 中会导致 SEGV。(CVE-2019-9074) - 在 GNU Binutils 2.28 中发布的二进制文件描述符 (BFD) 库(又称为 libbfd)存在一个无效读取(大小为 8),因为发出 relocs(bfd/elflink.c 中的 bfd_elf_final_link 函数)的代码在尝试读取 ELF reloc 段标头之前,未检查输入文件的格式。此漏洞会导致 GNU 链接器 (ld) 程序崩溃。(CVE-2017-7299) - 在 GNU Binutils 2.29 发布的二进制文件描述符 (BFD) 库(又称为 libbfd)中,elf.c 中的 setup_group 函数允许远程攻击者通过太小的组区域,造成拒绝服务(空指针取消引用和应用程序崩溃)。(CVE-2017-13710) - ** 拒绝 ** 请勿使用此候选编号。ConsultID:CVE-2018-7642。原因:此候选版本是 CVE-2018-7642 的保留复本。注意:所有 CVE 用户都应该参照 CVE-2018-7642 而非此候选版本。此候选版本中的所有参照和描述都已经遭到移除以防止意外使用。(CVE-2018-14038) - 在 GNU Binutils 2.29 和更旧版本发布的二进制文件描述符 (BFD) 库(又称为 libbfd)中,vms-misc.c 中的 _bfd_vms_save_sized_string 函数允许远程攻击者通过特制的 vms 文件,造成越界堆读取。(CVE-2017-12449) - 在 GNU Binutils 2.29 及较旧版本中发行的二进制文件描述符 (BFD) 库(又称为 libbfd)中,bfd/coff-rs6000.c 和 bfd/coff64-rs6000.c 中的 _bfd_xcoff_read_ar_hdr 函数让远程攻击者可以通过特制的 COFF 图像文件造成越界堆栈读取。(CVE-2017-12451) - 在 GNU Binutils 2.29 和更旧版本发布的二进制文件描述符 (BFD) 库(又称为 libbfd)中,bfd/mach-o-i386.c 中的 bfd_mach_o_i386_canonicalize_one_reloc 函数允许远程攻击者通过特制的 mach-o 文件,造成越界堆读取。(CVE-2017-12452) - 在 GNU Binutils 2.29 和更旧版本发布的二进制文件描述符 (BFD) 库(又称为 libbfd©)中,libbfd.c 中的 _bfd_vms_slurp_eeom 函数允许远程攻击者通过特制的 vms alpha 文件,造成越界堆读取。(CVE-2017-12453) - 在 GNU Binutils 2.29 和更旧版本发布的二进制文件描述符 (BFD) 库(又称为 libbfd)中,bfd/vms-alpha.c 中的 _bfd_vms_slurp_egsd 函数允许远程攻击者通过特制的 vms alpha 文件,造成任意内存读取。(CVE-2017-12454) - 在 GNU Binutils 2.29 及较旧版本中发行的二进制文件描述符 (BFD) 库(又称为 libbfd)中,vms-alpha.c 中的 evax_bfd_print_emh 函数让远程攻击者可以通过特制的 vms alpha 文件造成越界堆读取。(CVE-2017-12455) - 在 GNU Binutils 2.29 和更旧版本中,rddbg.c 内的 read_symbol_stabs_debugging_info 函数允许远程攻击者通过特制的二进制文件,造成越界堆读取。(CVE-2017-12456) - 在 GNU Binutils 2.29 和更旧版本发布的二进制文件描述符 (BFD) 库(又称为 libbfd)中,section.c 中的 bfd_make_section_with_flags 函数允许远程攻击者通过特制的文件,造成空指针取消引用。(CVE-2017-12457) - 在 GNU Binutils 2.29 和更旧版本发布的二进制文件描述符 (BFD) 库(又称为 libbfd)中,bfd/nlmcode.h 中的 bfd/nlmcode.h 的 nlm_swap_auxiliary_headers_in 函数允许远程攻击者通过特制的 nlm 文件,造成越界堆读取。(CVE-2017-12458) - 在 GNU Binutils 2.28 中发布的二进制文件描述符 (BFD) 库(又称为 libbfd)容易受到大小为 4 的无效读取影响,这是因为 _bfd_elf_large_com_section 的空指针取消引用所致。此漏洞造成使用 libbfd 库进行二进制程序分析的程序(例如 objcopy)崩溃。(CVE-2017-8394) - GNU Binutils 2.28 允许远程攻击者通过特制的 ELF 文件,造成拒绝服务(基于堆的缓冲区过度读取和应用程序崩溃),这与在 readelf.c 的 process_mips_specific 函数中,MIPS GOT 错误处理相关。(CVE-2017-9041) - GNU Binutils 2.28 允许远程攻击者通过具有许多程序标头的特制 ELF 文件,造成拒绝服务(内存耗用),这与 readelf.c 中的 get_program_headers 函数相关。(CVE-2017-9039) - 在 GNU Binutils 2.29 发布的二进制文件描述符 (BFD) 库(又称为 libbfd)中,tekhex.c 中的 getsym 函数允许远程攻击者通过格式错误的 tekhex 二进制文件,造成拒绝服务(堆栈型缓冲区过度读取和应用程序崩溃)。(CVE-2017-12967) - GNU Binutils 2.26 之前版本中的 ihex.c 在 Intel Hex 对象中打印错误字节时,含有一个堆栈缓冲区溢出。(CVE-2014-9939) - GNU Binutils 2.28 允许远程攻击者通过特制的 ELF 文件,造成拒绝服务(基于堆的缓冲区过度读取和应用程序崩溃),这与 elfcomm.c 中的 byte_get_little_endian 函数、readelf.c 中的 get_unwind_section_word 函数,以及含有无效字偏移的 ARM 展开信息相关。(CVE-2017-9038) - GNU Binutils 2.28 中的 opcodes/rx-decode.opc 对特定规模数组缺少边界检查,进而允许远程攻击者通过特制的二进制文件,造成拒绝服务(缓冲区溢出和应用程序崩溃),或可能造成其他不明影响,在“objdump -D”执行期间未正确处理此文件即为一例。(CVE-2017-9750) - GNU Binutils 2.28 中的 objdump 在特制的对象文件中处理损毁的 STABS enum 类型字符串时,容易受到多个基于堆的缓冲区过度读取(大小为 1 和 8)影响,进而导致程序崩溃。(CVE-2017-7210) - GNU Binutils 2.28 中的 GNU 汇编程序在尝试从输入流命令 unget EOF 字符时,容易受到全域缓冲区溢出(大小为 1)影响,进而可能导致程序崩溃。(CVE-2017-7223) - 在 GNU Binutils 2.28 的 objdump 中,find_nearest_line 函数在反汇编含有空函数名称的损毁二进制文件时,容易受到无效写入(大小为 1)影响,进而导致程序崩溃。(CVE-2017-7224) - 在 GNU Binutils 2.28 的 addr2line 中,find_nearest_line 函数未处理主要文件名称和目录名称皆为空白的情况,进而触发空指针取消引用和无效写入,并导致程序崩溃。(CVE-2017-7225) - 在 GNU Binutils 2.28 发布的二进制文件描述符 (BFD) 库(又称为 libbfd)中,pe_ILF_object_p 函数容易受到大小为 4049 的基于堆的缓冲区过度读取影响,因为它使用 strlen 函数而非 strnlen,进而导致程序在 addr2line、大小和字符串等数个实用工具中崩溃。它也可能导致信息泄露。(CVE-2017-7226) - GNU Binutils 2.28 中 GNU 链接器 (ld) 在处理假的输入脚本时,容易受到基于堆的缓冲区溢出影响,进而导致程序崩溃。这与 ldlex.l 中缺少名称字段的“\0”终止相关。(CVE-2017-7227) - GNU Binutils 2.28 中的 opcodes/i386-dis.c 未考虑 bnd 模式的寄存器数目,进而允许远程攻击者通过特制的二进制文件,造成拒绝服务(缓冲区溢出和应用程序崩溃),或可能造成其他不明影响,在“objdump -D”执行期间未正确处理此文件即为一例。(CVE-2017-9755) - 在 GNU Binutils 2.30 发布的二进制文件描述符 (BFD) 库(又称为 libbfd)中,opncls.c 中的 bfd_get_debug_link_info_1 函数存在一个未经检查的 strnlen 操作。远程攻击者可利用此漏洞,通过特制的 ELF 文件,造成拒绝服务(段错误)。(CVE-2018-6759) - 在 GNU Binutils 2.29 发布的二进制文件描述符 (BFD) 库(又称为 libbfd)中,dwarf2.c 中的 read_section 函数允许远程攻击者通过特制的 ELF 文件,造成拒绝服务(parse_comp_unit基于堆的缓冲区过度读取和应用程序崩溃)。(CVE-2017-14129) - 在 GNU Binutils 2.29 发布的二进制文件描述符 (BFD) 库(又称为 libbfd)中,dwarf2.c 未验证 DW_AT_name 数据类型,进而允许远程攻击者通过特制的 ELF 文件,造成拒绝服务(bfd_hash_hash 空指针取消引用或越界访问和应用程序崩溃),这与 scan_unit_for_symbols 和 parse_comp_unit 相关。(CVE-2017-15022) - 在 GNU Binutils 2.29.1 发布的二进制文件描述符 (BFD) 库(又称为 libbfd)中,coffcode.h 中的 coff_slurp_reloc_table 函数允许远程攻击者通过特制的 COFF 型文件,造成拒绝服务(空指针取消引用和应用程序崩溃)。(CVE-2017-17123) - 在 GNU Binutils 2.29 发布的二进制文件描述符 (BFD) 库(又称为 libbfd)中,peXXigen.c 中的 pe_print_idata 函数未正确处理 HintName 向量条目,进而允许远程攻击者通过特制的 PE 文件,造成拒绝服务(基于堆的缓冲区过度读取和应用程序崩溃),这与 bfd_getl16 函数相关。(CVE-2017-14529) - 在 GNU Binutils 2.29 发布的二进制文件描述符 (BFD) 库(又称为 libbfd)中,dwarf2.c 中的 find_abstract_instance_name 允许远程攻击者通过特制的 ELF 文件,造成拒绝服务(无限递归和应用程序崩溃)。(CVE-2017-15024) - GNU Binutils 2.28 中的 readelf 在处理损毁的 RL78 二进制文件时,容易受到基于堆的缓冲区过度读取影响。该漏洞可触发程序崩溃。它也可能会导致信息泄露。(CVE-2017-6969) – 在 GNU Binutils 2.29 发布的二进制文件描述符 (BFD) 库(又称为 libbfd)中,dwarf2.c 中的 decode_line_info 发生内存泄露,可让远程攻击者通过特制的 ELF 文件造成拒绝服务(内存消耗)。(CVE-2017-14930) - 在 GNU Binutils 2.29 发布的二进制文件描述符 (BFD) 库(又称为 libbfd)中,dwarf2.c 中的 decode_line_info 可让远程攻击者通过特制的 ELF 文件造成拒绝服务(除零错误和应用程序崩溃)。(CVE-2017-15025) - 在 GNU Binutils 2.29 发布的二进制文件描述符 (BFD) 库(又称为 libbfd)中,dwarf2.c 中的 decode_line_info 可让远程攻击者通过特制的 ELF 文件造成拒绝服务(无限循环)。(CVE-2017-14932) - 在 GNU Binutils 2.29 发布的二进制文件描述符 (BFD) 库(又称为 libbfd)中,dwarf2.c 中的 _bfd_dwarf2_cleanup_debug_info 可让远程攻击者通过特制的 ELF 文件造成拒绝服务(内存泄露)。(CVE-2017-15225) - 在 GNU Binutils 2.28 发布的二进制文件描述符 (BFD) 库(又称为 libbfd)中,bfd/vms-alpha.c 中的 _bfd_vms_slurp_etir 函数可让远程攻击者通过特制的二进制文件造成拒绝服务(缓冲区溢出和应用程序崩溃),或可能造成其他不明影响,在“objdump -D”执行过程中不当处理此文件即为一例。(CVE-2017-9745) - 在 GNU Binutils 2.29 发布的二进制文件描述符 (BFD) 库(又称为 libbfd)中,dwarf.c 中的 process_debug_info 可让远程攻击者通过特制的 ELF 文件(在 CU 结构中,包含一个负大小值)造成拒绝服务(无限循环)。(CVE-2017-14934) - 在 GNU Binutils 2.29.1 发布的二进制文件描述符 (BFD) 库(又称为 libbfd)中,elf.c 未验证内核注意事项的大小,进而让远程攻击者得以通过特制的对象文件造成拒绝服务(bfd_getl32 基于堆的缓冲区过度读取和应用程序崩溃),这与 elfcore_grok_netbsd_procinfo、elfcore_grok_openbsd_procinfo 和 elfcore_grok_nto_status 相关。(CVE-2017-17080) - 在 GNU Binutils 2.29 发布的二进制文件描述符 (BFD) 库(又称为 libbfd)中,dwarf2.c 中的 scan_unit_for_symbols 可让远程攻击者通过特制的 ELF 文件造成拒绝服务(空指针取消引用和应用程序崩溃)。(CVE-2017-14940) - GNU Binutils 2.29.1 发布的二进制文件描述符 (BFD) 库(又称为 libbfd)可让远程攻击者通过 COFF 二进制(其中重定位指的是重定位区段结束后的位置)造成拒绝服务(内存访问违规),或可能造成其他不明影响。(CVE-2017-17121) - 在 GNU Binutils 2.29 发布的二进制文件描述符 (BFD) 库(又称为 libbfd)中,opncls.c 中的 bfd_get_debug_link_info_1 可让远程攻击者通过特制的 ELF 文件造成拒绝服务(基于堆的缓冲区过度读取和应用程序崩溃),这与 bfd_getl32 相关。(CVE-2017-15021) - 在 GNU Binutils 2.29.1 中,objdump.c 中的 dump_relocs_in_section 函数未检查重定位计数整数溢出,进而让远程攻击者得以通过特制的 PE 文件造成拒绝服务(过度内存分配,或基于堆的缓冲区溢出和应用程序崩溃),或可能造成其他不明影响。(CVE-2017-17122) - 在 GNU Binutils 2.28 发布的二进制文件描述符 (BFD) 库(又称为 libbfd)中,tekhex.c 中的 getvalue 函数可让远程攻击者通过特制的 tekhex 文件造成拒绝服务(堆栈型缓冲区过度读取和应用程序崩溃),nm 程序内的不当处理即为一例。(CVE-2017-9954) - 在 GNU Binutils 2.29.1 发布的二进制文件描述符 (BFD) 库(又称为 libbfd)中,coffgen.c 中的 _bfd_coff_read_string_table 函数未正确验证外部字符串表的大小,进而让远程攻击者得以通过特制的 COFF 二进制造成拒绝服务(过度内存消耗,或基于堆的缓冲区溢出和应用程序崩溃),或可能造成其他不明影响。(CVE-2017-17124) - 在 GNU Binutils 2.28 发布的二进制文件描述符 (BFD) 库(又称为 libbfd)中,bfd/aoutx.h 中的 aout_link_add_symbols 函数因未在加载符号时完整检查无效字符串偏移,而容易发生基于堆的缓冲区过度读取(差一),进而导致 GNU 链接器 (ld) 程序崩溃。(CVE-2017-7300) - 在 GNU Binutils 2.28 发布的二进制文件描述符 (BFD) 库(又称为 libbfd)中,bfd/aoutx.h 中的 aout_link_add_symbols 函数因未仔细检查字符串偏移,而存在差一漏洞。该漏洞可能会导致 GNU 链接器 (ld) 程序崩溃。(CVE-2017-7301) - GNU binutils gold gold v1.11-v1.16 (GNU binutils v2.21-v2.31.1) 受到下列漏洞影响:不当输入验证、已签字/未签字的比较、越界读取。影响为:拒绝服务。组件为:gold/fileread.cc:497、elfcpp/elfcpp_file.h:644。攻击向量为:拥有无效 e_shoff 标头字段的 ELF 文件必须打开。(CVE-2019-1010204) 请注意,Tenable Network Security 已直接从 EulerOS 安全公告中提取上述描述块。Tenable 已尝试在不引入其他问题的情况下尽可能进行了自动整理和排版。

解决方案

更新受影响的 binutils 程序包。

另见

http://www.nessus.org/u?e6d75b11

插件详情

严重性: Critical

ID: 131604

文件名: EulerOS_SA-2019-2450.nasl

版本: 1.5

类型: local

发布时间: 2019/12/4

最近更新时间: 2021/1/6

支持的传感器: Nessus

风险信息

VPR

风险因素: Medium

分数: 6.7

CVSS v2

风险因素: High

基本分数: 7.5

时间分数: 5.9

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

CVSS v3

风险因素: Critical

基本分数: 9.8

时间分数: 8.8

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

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

漏洞信息

CPE: p-cpe:/a:huawei:euleros:binutils, p-cpe:/a:huawei:euleros:binutils-devel, cpe:/o:huawei:euleros:2.0

必需的 KB 项: Host/local_checks_enabled, Host/EulerOS/release, Host/EulerOS/rpm-list, Host/EulerOS/sp

排除的 KB 项: Host/EulerOS/uvp_version

可利用: true

易利用性: Exploits are available

补丁发布日期: 2019/12/4

参考资料信息

CVE: CVE-2014-9939, CVE-2017-12449, CVE-2017-12451, CVE-2017-12452, CVE-2017-12453, CVE-2017-12454, CVE-2017-12455, CVE-2017-12456, CVE-2017-12457, CVE-2017-12458, CVE-2017-12967, CVE-2017-13710, CVE-2017-14128, CVE-2017-14129, CVE-2017-14529, CVE-2017-14930, CVE-2017-14932, CVE-2017-14934, CVE-2017-14938, CVE-2017-14939, CVE-2017-14940, CVE-2017-15021, CVE-2017-15022, CVE-2017-15024, CVE-2017-15025, CVE-2017-15225, CVE-2017-17080, CVE-2017-17121, CVE-2017-17122, CVE-2017-17123, CVE-2017-17124, CVE-2017-6969, CVE-2017-7210, CVE-2017-7223, CVE-2017-7224, CVE-2017-7225, CVE-2017-7226, CVE-2017-7227, CVE-2017-7299, CVE-2017-7300, CVE-2017-7301, CVE-2017-7614, CVE-2017-8394, CVE-2017-8395, CVE-2017-9038, CVE-2017-9039, CVE-2017-9041, CVE-2017-9745, CVE-2017-9750, CVE-2017-9751, CVE-2017-9755, CVE-2017-9954, CVE-2018-14038, CVE-2018-18605, CVE-2018-18606, CVE-2018-18607, CVE-2018-20002, CVE-2018-6759, CVE-2018-9138, CVE-2019-1010204, CVE-2019-9074