Skip to content

Исполняемый файл не является позиционно-независимым (PIE). #36

Description

@aaly11

PIE-бинарники работают в связке с ASLR (Address Space Layout Randomization), затрудняя эксплуатацию уязвимостей, основанных на знании точного адреса функций в памяти.

linux@10:~/Загрузки> rpm2cpio Keyboard-Sounds-Pro-Installer-Linux-x86_64.rpm | cpio -dium
29276 blocks
linux@10:~/Загрузки> readelf -h usr/bin/kbs-pro/kbs-pro
Заголовок ELF:
  Magic:   7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
  Класс:                             ELF64
  Данные:                            дополнение до 2, от младшего к старшему
  Version:                           1 (current)
  OS/ABI:                            UNIX - System V
  Версия ABI:                        0
  Тип:                               EXEC (Исполняемый файл)
  Машина:                            Advanced Micro Devices X86-64
  Версия:                            0x1
  Адрес точки входа:                 0x408ed0
  Начало заголовков программы:       64 (байт в файле)
  Начало заголовков раздела:         13242952 (байт в файле)
  Флаги:                             0x0
  Size of this header:               64 (bytes)
  Size of program headers:           56 (bytes)
  Number of program headers:         14
  Size of section headers:           64 (bytes)
  Number of section headers:         36
  Section header string table index: 35
linux@10:~/Загрузки> file usr/bin/kbs-pro/kbs-pro
usr/bin/kbs-pro/kbs-pro: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=efe961836faa521e947dcce4bc23d8c1aa53e71b, for GNU/Linux 3.2.0, stripped

Для сравнения приведу исполняемый файл собственной сборки.

linux@10:~/Загрузки> readelf -h /usr/libexec/kbs-pro/kbs-pro
Заголовок ELF:
  Magic:   7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
  Класс:                             ELF64
  Данные:                            дополнение до 2, от младшего к старшему
  Version:                           1 (current)
  OS/ABI:                            UNIX - System V
  Версия ABI:                        0
  Тип:                               DYN (Position-Independent Executable file)
  Машина:                            Advanced Micro Devices X86-64
  Версия:                            0x1
  Адрес точки входа:                 0x14df10
  Начало заголовков программы:       64 (байт в файле)
  Начало заголовков раздела:         14828656 (байт в файле)
  Флаги:                             0x0
  Size of this header:               64 (bytes)
  Size of program headers:           56 (bytes)
  Number of program headers:         15
  Size of section headers:           64 (bytes)
  Number of section headers:         38
  Section header string table index: 37
linux@10:~/Загрузки> file /usr/bin/kbs-pro
/usr/bin/kbs-pro: symbolic link to ../libexec/kbs-pro/kbs-pro
linux@10:~/Загрузки> file /usr/bin/../libexec/kbs-pro/kbs-pro
/usr/bin/../libexec/kbs-pro/kbs-pro: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=60165d41d5259daad0d900b663a3603d12271b2f, for GNU/Linux 4.3.0, stripped

Исправить не сложно, добавьте в сборочный скрипт:
export GOFLAGS="-buildmode=pie"

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions