This update for binutils to 2.31 fixes the following issues:
These security issues were fixed:
- CVE-2017-15996: readelf allowed remote attackers to cause a denial of service
(excessive memory allocation) or possibly have unspecified other impact via a
crafted ELF file that triggered a buffer overflow on fuzzed archive header
(bsc#1065643).
- CVE-2017-15939: Binary File Descriptor (BFD) library (aka libbfd) mishandled
NULL files in a .debugline file table, which allowed remote attackers to cause
a denial of service (NULL pointer dereference and application crash) via a
crafted ELF file, related to concatfilename (bsc#1065689).
- CVE-2017-15938: the Binary File Descriptor (BFD) library (aka libbfd)
miscalculated DWFORMrefaddr die refs in the case of a relocatable object
file, which allowed remote attackers to cause a denial of service
(findabstractinstancename invalid memory read, segmentation fault, and
application crash) (bsc#1065693).
- CVE-2017-16826: The coffslurpline_table function the Binary File Descriptor
(BFD) library (aka libbfd) allowed remote attackers to cause a denial of
service (invalid memory access and application crash) or possibly have
unspecified other impact via a crafted PE file (bsc#1068640).
- CVE-2017-16832: The pebfdread_buildid function in the Binary File
Descriptor (BFD) library (aka libbfd) did not validate size and offset values
in the data dictionary, which allowed remote attackers to cause a denial of
service (segmentation violation and application crash) or possibly have
unspecified other impact via a crafted PE file (bsc#1068643).
- CVE-2017-16831: Binary File Descriptor (BFD) library (aka libbfd) did not
validate the symbol count, which allowed remote attackers to cause a denial of
service (integer overflow and application crash, or excessive memory
allocation) or possibly have unspecified other impact via a crafted PE file
(bsc#1068887).
- CVE-2017-16830: The printgnuproperty_note function did not have
integer-overflow protection on 32-bit platforms, which allowed remote attackers
to cause a denial of service (segmentation violation and application crash) or
possibly have unspecified other impact via a crafted ELF file (bsc#1068888).
- CVE-2017-16829: The bfdelfparsegnu_properties function in the Binary File
Descriptor (BFD) library (aka libbfd) did not prevent negative pointers, which
allowed remote attackers to cause a denial of service (out-of-bounds read and
application crash) or possibly have unspecified other impact via a crafted ELF
file (bsc#1068950).
- CVE-2017-16828: The displaydebugframes function allowed remote attackers to
cause a denial of service (integer overflow and heap-based buffer over-read,
and application crash) or possibly have unspecified other impact via a crafted
ELF file (bsc#1069176).
- CVE-2017-16827: The aoutgetexternalsymbols function in the Binary File
Descriptor (BFD) library (aka libbfd) allowed remote attackers to cause a
denial of service (slurpsymtab invalid free and application crash) or possibly
have unspecified other impact via a crafted ELF file (bsc#1069202).
- CVE-2018-6323: The elfobjectp function in the Binary File Descriptor (BFD)
library (aka libbfd) had an unsigned integer overflow because bfdsizetype
multiplication is not used. A crafted ELF file allowed remote attackers to
cause a denial of service (application crash) or possibly have unspecified
other impact (bsc#1077745).
- CVE-2018-6543: Prevent integer overflow in the function
loadspecificdebug_section() which resulted in
malloc()
with 0 size. A
crafted ELF file allowed remote attackers to cause a denial of service
(application crash) or possibly have unspecified other impact (bsc#1079103).
- CVE-2018-6759: The bfdgetdebuglinkinfo_1 function in the Binary File
Descriptor (BFD) library (aka libbfd) had an unchecked strnlen operation.
Remote attackers could have leveraged this vulnerability to cause a denial of
service (segmentation fault) via a crafted ELF file (bsc#1079741).
- CVE-2018-6872: The elfparsenotes function in the Binary File Descriptor
(BFD) library (aka libbfd) allowed remote attackers to cause a denial of
service (out-of-bounds read and segmentation violation) via a note with a large
alignment (bsc#1080556).
- CVE-2018-7208: In the coffpointerizeaux function in the Binary File
Descriptor (BFD) library (aka libbfd) an index was not validated, which allowed
remote attackers to cause a denial of service (segmentation fault) or possibly
have unspecified other impact via a crafted file, as demonstrated by objcopy of
a COFF object (bsc#1081527).
- CVE-2018-7570: The assignfilepositionsfornonloadsections function in
the Binary File Descriptor (BFD) library (aka libbfd) allowed remote attackers
to cause a denial of service (NULL pointer dereference and application crash)
via an ELF file with a RELRO segment that lacks a matching LOAD segment, as
demonstrated by objcopy (bsc#1083528).
- CVE-2018-7569: The Binary File Descriptor (BFD) library (aka libbfd) allowed
remote attackers to cause a denial of service (integer underflow or overflow,
and application crash) via an ELF file with a corrupt DWARF FORM block, as
demonstrated by nm (bsc#1083532).
- CVE-2018-8945: The bfdsectionfrom_shdr function in the Binary File
Descriptor (BFD) library (aka libbfd) allowed remote attackers to cause a
denial of service (segmentation fault) via a large attribute section
(bsc#1086608).
- CVE-2018-7643: The displaydebugranges function allowed remote attackers to
cause a denial of service (integer overflow and application crash) or possibly
have unspecified other impact via a crafted ELF file, as demonstrated by
objdump (bsc#1086784).
- CVE-2018-7642: The swapstdrelocin function in the Binary File Descriptor
(BFD) library (aka libbfd) allowed remote attackers to cause a denial of
service (aout32swapstdrelocout NULL pointer dereference and application
crash) via a crafted ELF file, as demonstrated by objcopy (bsc#1086786).
- CVE-2018-7568: The parse_die function in the Binary File Descriptor (BFD)
library (aka libbfd) allowed remote attackers to cause a denial of service
(integer overflow and application crash) via an ELF file with corrupt dwarf1
debug information, as demonstrated by nm (bsc#1086788).
- CVE-2018-10373: concat_filename in the Binary File Descriptor (BFD) library
(aka libbfd) allowed remote attackers to cause a denial of service (NULL
pointer dereference and application crash) via a crafted binary file, as
demonstrated by nm-new (bsc#1090997).
- CVE-2018-10372: processcutu_index allowed remote attackers to cause a
denial of service (heap-based buffer over-read and application crash) via a
crafted binary file, as demonstrated by readelf (bsc#1091015).
- CVE-2018-10535: The ignoresectionsym function in the Binary File Descriptor
(BFD) library (aka libbfd) did not validate the output_section pointer in the
case of a symtab entry with a 'SECTION' type that has a '0' value, which
allowed remote attackers to cause a denial of service (NULL pointer dereference
and application crash) via a crafted file, as demonstrated by objcopy
(bsc#1091365).
- CVE-2018-10534: The bfdXXbfdcopyprivatebfddatacommon function in the
Binary File Descriptor (BFD) library (aka libbfd) processesed a negative Data
Directory size with an unbounded loop that increased the value of
(externalIMAGEDEBUGDIRECTORY) *edd so that the address exceeded its own
memory region, resulting in an out-of-bounds memory write, as demonstrated by
objcopy copying private info with _bfdpex64bfdcopyprivatebfddatacommon
in pex64igen.c (bsc#1091368).
These non-security issues were fixed:
- The AArch64 port now supports showing disassembly notes which are emitted
when inconsistencies are found with the instruction that may result in the
instruction being invalid. These can be turned on with the option -M notes
to objdump.
- The AArch64 port now emits warnings when a combination of an instruction and
a named register could be invalid.
- Added O modifier to ar to display member offsets inside an archive
- The ADR and ADRL pseudo-instructions supported by the ARM assembler
now only set the bottom bit of the address of thumb function symbols
if the -mthumb-interwork command line option is active.
- Add --generate-missing-build-notes=[yes|no] option to create (or not) GNU
Build Attribute notes if none are present in the input sources. Add a
--enable-generate-build-notes=[yes|no] configure time option to set the
default behaviour. Set the default if the configure option is not used
to 'no'.
- Remove -mold-gcc command-line option for x86 targets.
- Add -O[2|s] command-line options to x86 assembler to enable alternate
shorter instruction encoding.
- Add support for .nops directive. It is currently supported only for
x86 targets.
- Speed up direct linking with DLLs for Cygwin and Mingw targets.
- Add a configure option --enable-separate-code to decide whether
-z separate-code should be enabled in ELF linker by default. Default
to yes for Linux/x86 targets. Note that -z separate-code can increase
disk and memory size.
- RISC-V: Fix symbol address problem with versioned symbols
- Restore riscv64-elf cross prefix via symlinks
- RISC-V: Don't enable relaxation in relocatable link
- Prevent linking faiures on i386 with assertion (bsc#1085784)
- Fix symbol size bug when relaxation deletes bytes
- Add --debug-dump=links option to readelf and --dwarf=links option to objdump
which displays the contents of any .gnudebuglink or .gnudebugaltlink
sections.
Add a --debug-dump=follow-links option to readelf and a --dwarf=follow-links
option to objdump which causes indirect links into separate debug info files
to be followed when dumping other DWARF sections.
- Add support for loaction views in DWARF debug line information.
- Add -z separate-code to generate separate code PT_LOAD segment.
- Add '-z undefs' command line option as the inverse of the '-z defs' option.
- Add -z globalaudit command line option to force audit libraries to be run
for every dynamic object loaded by an executable - provided that the loader
supports this functionality.
- Tighten linker script grammar around file name specifiers to prevent the use
of SORTBYALIGNMENT and SORTBYINIT_PRIORITY on filenames. These would
previously be accepted but had no effect.
- The EXCLUDEFILE directive can now be placed within any SORT* directive
within input section lists.
- Fix linker relaxation with --wrap
- Add arm-none-eabi symlinks (bsc#1074741)
Former updates of binutils also fixed the following security issues, for which
there was not CVE assigned at the time the update was released or no mapping
between code change and CVE existed:
- CVE-2014-9939: Prevent stack buffer overflow when printing bad bytes in Intel
Hex objects (bsc#1030296).
- CVE-2017-7225: The findnearestline function in addr2line did not handle the
case where the main file name and the directory name are both empty, triggering
a NULL pointer dereference and an invalid write, and leading to a program crash
(bsc#1030585).
- CVE-2017-7224: The findnearestline function in objdump was vulnerable to an
invalid write (of size 1) while disassembling a corrupt binary that contains an
empty function name, leading to a program crash (bsc#1030588).
- CVE-2017-7223: GNU assembler in was vulnerable to a global buffer overflow
(of size 1) while attempting to unget an EOF character from the input stream,
potentially leading to a program crash (bsc#1030589).
- CVE-2017-7226: The peILFobject_p function in the Binary File Descriptor
(BFD) library (aka libbfd) was vulnerable to a heap-based buffer over-read of
size 4049 because it used the strlen function instead of strnlen, leading to
program crashes in several utilities such as addr2line, size, and strings. It
could lead to information disclosure as well (bsc#1030584).
- CVE-2017-7299: The Binary File Descriptor (BFD) library (aka libbfd) had an
invalid read (of size 8) because the code to emit relocs (bfdelffinal_link
function in bfd/elflink.c) did not check the format of the input file trying to
read the ELF reloc section header. The vulnerability leads to a GNU linker (ld)
program crash (bsc#1031644).
- CVE-2017-7300: The Binary File Descriptor (BFD) library (aka libbfd) had an
aoutlinkadd_symbols function in bfd/aoutx.h that is vulnerable to a
heap-based buffer over-read (off-by-one) because of an incomplete check for
invalid string offsets while loading symbols, leading to a GNU linker (ld)
program crash (bsc#1031656).
- CVE-2017-7302: The Binary File Descriptor (BFD) library (aka libbfd) had a
swapstdreloc_out function in bfd/aoutx.h that is vulnerable to an invalid
read (of size 4) because of missing checks for relocs that could not be
recognised. This vulnerability caused Binutils utilities like strip to crash
(bsc#1031595).
- CVE-2017-7303: The Binary File Descriptor (BFD) library (aka libbfd) was
vulnerable to an invalid read (of size 4) because of missing a check (in the
find_link function) for null headers attempting to match them. This
vulnerability caused Binutils utilities like strip to crash (bsc#1031593).
- CVE-2017-7301: The Binary File Descriptor (BFD) library (aka libbfd) had an
aoutlinkadd_symbols function in bfd/aoutx.h that has an off-by-one
vulnerability because it did not carefully check the string offset. The
vulnerability could lead to a GNU linker (ld) program crash (bsc#1031638).
- CVE-2017-7304: The Binary File Descriptor (BFD) library (aka libbfd) was
vulnerable to an invalid read (of size 8) because of missing a check (in the
copyspecialsectionfields function) for an invalid shlink field attempting
to follow it. This vulnerability caused Binutils utilities like strip to crash
(bsc#1031590).
- CVE-2017-8392: The Binary File Descriptor (BFD) library (aka libbfd) was
vulnerable to an invalid read of size 8 because of missing a check to determine
whether symbols are NULL in the bfddwarf2findnearest_line function. This
vulnerability caused programs that conduct an analysis of binary programs using
the libbfd library, such as objdump, to crash (bsc#1037052).
- CVE-2017-8393: The Binary File Descriptor (BFD) library (aka libbfd) was
vulnerable to a global buffer over-read error because of an assumption made by
code that runs for objcopy and strip, that SHTREL/SHRRELA sections are always
named starting with a .rel/.rela prefix. This vulnerability caused programs
that conduct an analysis of binary programs using the libbfd library, such as
objcopy and strip, to crash (bsc#1037057).
- CVE-2017-8394: The Binary File Descriptor (BFD) library (aka libbfd) was
vulnerable to an invalid read of size 4 due to NULL pointer dereferencing of
bfdelflargecom_section. This vulnerability caused programs that conduct an
analysis of binary programs using the libbfd library, such as objcopy, to crash
(bsc#1037061).
- CVE-2017-8396: The Binary File Descriptor (BFD) library (aka libbfd) was
vulnerable to an invalid read of size 1 because the existing reloc offset range
tests didn't catch small negative offsets less than the size of the reloc
field. This vulnerability caused programs that conduct an analysis of binary
programs using the libbfd library, such as objdump, to crash (bsc#1037066).
- CVE-2017-8421: The function coffsetalignment_hook in Binary File Descriptor
(BFD) library (aka libbfd) had a memory leak vulnerability which can cause
memory exhaustion in objdump via a crafted PE file (bsc#1037273).
- CVE-2017-9746: The disassemble_bytes function in objdump.c allowed remote
attackers to cause a denial of service (buffer overflow and application crash)
or possibly have unspecified other impact via a crafted binary file, as
demonstrated by mishandling of rae insns printing for this file during 'objdump
-D' execution (bsc#1044891).
- CVE-2017-9747: The ieeearchivep function in the Binary File Descriptor
(BFD) library (aka libbfd) might have allowed remote attackers to cause a
denial of service (buffer overflow and application crash) or possibly have
unspecified other impact via a crafted binary file, as demonstrated by
mishandling of this file during 'objdump -D' execution (bsc#1044897).
- CVE-2017-9748: The ieeeobjectp function in the Binary File Descriptor (BFD)
library (aka libbfd) might have allowed remote attackers to cause a denial of
service (buffer overflow and application crash) or possibly have unspecified
other impact via a crafted binary file, as demonstrated by mishandling of this
file during 'objdump -D' execution (bsc#1044901).
- CVE-2017-9750: opcodes/rx-decode.opc lacked bounds checks for certain scale
arrays, which allowed remote attackers to cause a denial of service (buffer
overflow and application crash) or possibly have unspecified other impact via a
crafted binary file, as demonstrated by mishandling of this file during
'objdump -D' execution (bsc#1044909).
- CVE-2017-9755: Not considering the the number of registers for bnd mode
allowed remote attackers to cause a denial of service (buffer overflow and
application crash) or possibly have unspecified other impact via a crafted
binary file, as demonstrated by mishandling of this file during 'objdump -D'
execution (bsc#1044925).
- CVE-2017-9756: The aarch64extldst_reglist function allowed remote attackers
to cause a denial of service (buffer overflow and application crash) or
possibly have unspecified other impact via a crafted binary file, as
demonstrated by mishandling of this file during 'objdump -D' execution
(bsc#1044927).
- CVE-2017-7209: The dumpsectionas_bytes function in readelf accessed a NULL
pointer while reading section contents in a corrupt binary, leading to a
program crash (bsc#1030298).
- CVE-2017-6965: readelf wrote to illegal addresses while processing corrupt
input files containing symbol-difference relocations, leading to a heap-based
buffer overflow (bsc#1029909).
- CVE-2017-6966: readelf had a use-after-free (specifically read-after-free)
error while processing multiple, relocated sections in an MSP430 binary. This
is caused by mishandling of an invalid symbol index, and mishandling of state
across invocations (bsc#1029908).
- CVE-2017-6969: readelf was vulnerable to a heap-based buffer over-read while
processing corrupt RL78 binaries. The vulnerability can trigger program
crashes. It may lead to an information leak as well (bsc#1029907).
- CVE-2017-7210: objdump was vulnerable to multiple heap-based buffer
over-reads (of size 1 and size 8) while handling corrupt STABS enum type
strings in a crafted object file, leading to program crash (bsc#1030297).