The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Выпуск системной библиотеки Glibc 2.39 и набора утилит GNU Binutils 2.42

01.02.2024 11:45

После шести месяцев разработки опубликован релиз системной библиотеки GNU C Library (glibc) 2.39, которая полностью следует требованиям стандартов ISO C11 и POSIX.1-2017. В состав нового выпуска включены исправления от 67 разработчиков.

Из реализованных в Glibc 2.39 улучшений можно отметить:

  • Обеспечена поддержка теневого стека (shadow stack), появившегося в ядре Linux 6.6 и позволяющего блокировать работу многих эксплоитов, используя аппаратные возможности процессоров Intel для защиты от перезаписи адреса возврата из функции в случае переполнения буфера в стеке. Суть защиты в том, что после передачи управления функции, адреса возврата сохраняются процессором не только в обычном стеке, но и в отдельном "теневом" стеке, который не может быть изменён напрямую. Перед выходом из функции адрес возврата извлекается из теневого стека и сверяется с адресом возврата из основного стека. Несовпадение адресов приводит к генерации исключения, блокирующего ситуации, когда эксплоиту удалось перезаписать адрес в основном стеке. Для включения добавлена сборочная опция "--enable-cet".
  • Добавлен новый заголовочный файл <stdbit.h>, определённый в черновике стандарта 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, stdc_bit_floor and stdc_bit_ceil в вариантах с типами "unsigned char", "unsigned short", "unsigned int", "unsigned long int" и "unsigned long long int".
  • Для платформы Linux реализованы функции posix_spawnattr_getcgroup_np и posix_spawnattr_setcgroup_np, а также флаг POSIX_SPAWN_SETCGROUP, которые позволяют настроить cgroupv2 в новом процессе при помощи функций posix_spawn и posix_spawnp, исключив возникновение состояния гонки. Функции являются расширениями GNU и для работы требуют наличия ядра Linux с поддержкой системного вызова clone3.
  • Для платформы Linux реализованы функции pidfd_spawn и pidfd_spawp, которые близки по семантике к функции posix_spawn, но возвращают не идентификатор процесса (PID), а файловый дескриптор для использования в функциях, поддерживающих механизм PIDFD, таких как pidfd_send_signal, poll и waitid (PIDFD связывается с конкретным процессом и не меняется, в том время как PID может быть привязан к другому процессу после завершения текущего процесса, ассоциированного с этим PID).
  • Для платформы Linux добавлена функция pidfd_getpid для определения идентификатора процесса (PID) на основе файлового дескриптора процесса (PIDFD), возвращённого функциями pid_spawn, fork_np и pidfd_open.
  • В функции семейства scanf добавлен модификатор размера "wN", применяемый для аргументов с типами intN_t, int_leastN_t, uintN_t и uint_leastN_t. Например, для чтения десятичных значений с типами int32_t и int_least32_t можно указать "%w32d", а шестнадцатеричных - "%w32x". Аналогично добавлен модификатор "wfN" для типов int_fastN_t и uint_fastN_t, представленных в черновом стандарте ISO C2X.
  • Добавлена настройка "glibc.cpu.plt_rewrite", включающая перезапись PLT (Procedure Linkage Table) на системах x86-64 при которой компоновщик заменит косвенные переходы (indirect branch) в 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 и связанный с ней заголовочный файл "<crypt.h>". Разработчикам приложений рекомендуется перейти на использование альтернативных библиотек, таких как libxcrypt.
  • В утилите ldconfig теперь пропускаются файлы с символом ';' в имени файла или заканчивающиеся на ".dpkg.tmp" и ".dpkg.new", что позволяет не обрабатывать временных файлы пакетных менеджеров rpm и dpkg.
  • Прекращена поддержка архитектуры ia64 (ia64*-*-linux-gnu), применяемой в процессорах Intel Itanium.
  • Устранены уязвимости:
    • 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, вызванная обращением к памяти после её освобождения (use-after-free). Проблема проявляется когда NSS-плагин реализует только call-back-вызовы "_gethostbyname2_r" и "_getcanonname_r", но не поддерживает вызов "_gethostbyname3_r". Для эксплуатации уязвимости DNS-сервер должен вернуть для запрошенного хоста большое число адресов IPv6 и IPv4, что приведёт к краху процесса, вызвавшего функцию getaddrinfo для семейства AF_INET6 при выставлении флагов AI_CANONNAME, AI_ALL и AI_V4MAPPED.
    • CVE-2023-4527 - уязвимость в функции getaddrinfo, позволяющая прочитать данные из области вне границы буфера при обработке DNS-ответа, полученного по TCP, размером более 2048 байт. Уязвимость проявляется при использовании опции "no-aaaa" в /etc/resolv.conf.



    Дополнительно можно отметить выпуск набора системных утилит GNU Binutils 2.42, в состав которого входят такие программы, как GNU linker, GNU assembler, nm, objdump, strings, strip.

    В новой версии Binutils:

    • В ассемблер (gas) для систем x86-64 добавлена экспериментальная опция "--scfi=experimental" для синтеза конструкций CFI (Control Flow Integrity) для вручную написанного ассембрерного кода, соответствующего System V AMD64 ABI.
    • В программу readelf добавлена опция "--extra-sym-info" для вывода расширенной информации о символах ("--symbols"), такой как имя секции, на которую ссылается индекс st_shndx.
    • В утилите objcopy предоставлена возможность использования в опции "--set-section-flags" значения "large"для выставления секции флага SHF_X86_64_LARGE для ELF-объектов на системах x86-64. В опции "--visualize-jumps" реализована поддержка архитектуры s390.
    • При дизассемблировании инструкций s390 реализована возможность отображения комментариев в описанием инструкций. Для включения описаний в objdump можно указать параметр "-M insndesc", а в gdb - настройку "set disassembler-options insndesc".
    • В компоновщик добавлены опции "-z mark-plt" и "-z nomark-plt" для пометки записей в таблице PLT, используя теги DT_X86_64_PLT, DT_X86_64_PLTSZ и DT_X86_64_PLTENT.
    • В компоновщике добавлена поддержка сортировки в обратном порядке.
    • Добавлены опции "--warn-execstack-objects", "--error-execstack" и "--error-rxw-segments" для вывода предупреждений или ошибок при использовании в объектах исполняемого стека.
    • Реализована поддержка ABI 2.30 архитектуры LoongArch, а также поддержка новых инструкций, определённых в спецификации LoongArch 1.10.
    • Добавлена поддержка набора инструкций KVX, используемых в процессторах Kalray (например, применяются в SoC Coolidge).
    • Для систем на базе архитектуры Intel добавлена поддержка расширений:
      • Intel APX: 32 GPRs, NDD, PUSH2/POP2, PUSHP/POPP.
      • USER_MSR.
      • AVX10.1.
      • PBNDKB.
      • SM4.
      • SM3.
      • SHA512.
      • AVX-VNNI-INT16.
    • В порт для архитектуры RISC-V добавлена поддержка расширений:
      • T-Head (XTheadVector, XTheadZvlsseg и XTheadZvamo).
      • CORE-V (XCVmac, XCValu).
      • SiFive VCIX (XSfVcp).
    • В порт для архитектуры AArch64 добавлена поддержка расширений:
      • SVE2.1 (Scalable Vector Extension 2.1).
      • SME2.1 (Scalable Matrix Extension 2.1).
      • B16B16 (BFloat16 и BFloat16 для SVE2 и SME2).
      • RASv2 (Reliability, Availability and Serviceability v2).
      • LSE128 (128-bit Atomic).
      • GCS (Guarded Control Stac).
      • CHK (Check Feature Status).
      • SPECRES2 (Enhanced Speculation Restriction).
      • LRCPC3 (Load-Acquire RCpc).
      • THE (Translation Hardening).
      • ITE (Instruction Trace).
      • D128 (128-битовые дескрипторы таблицы страниц памяти).
      • XS (атрибут памяти XS).
    • Добавлена поддержка процессоров AArch64 Cortex-A520, Cortex-A720, Cortex-X3 и Cortex-X4.
    • В ассемблер BPF для совместимости с ассемблером clang/LLVM добавлена поддержка отделения комментариев символами "#" и "//", а также использования символа ";" для разделения выражений в строке (";" больше не может использоваться для комментариев).


  1. Главная ссылка к новости (https://sourceware.org/piperma...)
  2. OpenNews: Уязвимость в glibc, позволяющая получить root-доступ в системе
  3. OpenNews: В сообществе разработчиков Glibc внедрён кодекс поведения
  4. OpenNews: Уязвимость в Glibc ld.so, позволяющая получить права root в большинстве дистрибутивов Linux
  5. OpenNews: Выпуск системной библиотеки Glibc 2.38 и набора утилит GNU Binutils 2.41
  6. OpenNews: Для избавления Glibc от проблемы 2038 года предложено прекратить использование utmp
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/60534-glibc
Ключевые слова: glibc, binutils
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (38) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.2, Аноним (-), 12:48, 01/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Ого сколько уязвимостей закрыли, молодцы.
    Лучше бы конечно они их не допустили, т.к СИ и "записи разобранного значения за пределы выделенного буфера" + use-after-free это уже притча во языцах(
     
     
  • 2.18, Аноним (18), 16:32, 01/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А сколько добавили...
    Было конечно справедливее, если бы потом все возвращались и писали в подобных темах типа "Ай-ай, через год в этой версии нашли страшную багу, CVE по которой сочинили стишок и кучу мемов, минус этой новости". Но к сожалению, мы живем в слишком оптимистичном мире что само по себе уже даёт не мало повода для пессимизма.
     

  • 1.3, Швондик (?), 13:13, 01/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    когда уже сделают SWIFT для LINUX ?
     
     
  • 2.4, _kp (ok), 13:18, 01/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    От голого swift, без фреймворков, толку как от него же на Виндовсе. Плюс лицензионный ад.
     
  • 2.5, Бывалый смузихлёб (?), 13:22, 01/02/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ходят слухи, что он таки есть под линь
    https://www.swift.org/install/linux/
     
     
  • 3.16, Аноним (16), 15:43, 01/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Аш 18.04 предлагают использовать. Похоже заброшено.
     
     
  • 4.42, Бывалый смузихлёб (?), 10:35, 03/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Аш 18.04 предлагают использовать.
    > Похоже заброшено.

    Запросто
    Ведь они продвигали стрижа как серверный язык. Но никто так и не понял нахрена он там нужен и чем лучше того что есть

     
  • 2.6, Аноним (-), 13:29, 01/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Для линукс уже давно есть. Вон рач предлагает wiki.archlinux.org/title/Swift.

    Более того, точно знаю, проект, для которого core функционал на swift пишут под андроид и винду.
    Думаю им пришлось немало попердолить систему сборки, но такие приложения уже существуют.
    Так что не все так плохо)

     
     
  • 3.19, Швондик (?), 16:32, 01/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    а дистрибутив с предустановленным Swift уже есть? было бы хорошо, если бы был бы такой дистрибутив, где можно в менеджере программ поставить галку и установить без плясок любой компилятор - хоть С#, хоть Swift, хоть Java, хоть assembler, хоть Visual Studio. Типа Linux дистрибутив для программирования - очень нужная штука для школьников и просто начинающих программировать
     
     
  • 4.30, Фрик из соседней пещеры (?), 20:03, 01/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    По поводу свифта хз,но в Слаке при полной установке по-моему это как раз и имеется.
     
  • 4.39, Аноним (39), 11:53, 02/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > а дистрибутив с предустановленным Swift уже есть?

    Думаю, уже под каждую программу есть по дистрибутиву. Нужно больше дистрибутивов!

    > установить без плясок

    Если ученик не справляется со сборкой, установкой и настройкой существующих программ по готовой инструкции, как он новые писать-то будет? Лучше сразу "вон из профессии", пока кому-нибудь не навредил.

     
  • 4.40, Аноним (40), 06:19, 03/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Типа Linux дистрибутив для программирования - очень нужная штука для школьников и просто начинающих программировать

    Школьники и начинающие пускай кодят на пайтоне. Когда освоят пайтон, пускай следом учатся обустраивать себе рабочее место, устанавливая туда те инструменты, которые им нужны, будь то компиляторы, IDE, профайлеры, статические анализаторы, системы контроля версий, бла-бла-бла...

     
  • 2.7, Big Robert TheTables (?), 13:32, 01/02/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Zwift тоже хотелось бы нативный.
     
     
  • 3.29, Duncanmacleod (?), 19:24, 01/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ты стал догадываться о чем вел реч griggorii c ютуба?
     
     
  • 4.36, Big Robert TheTables (?), 11:17, 02/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Ты стал догадываться о чем вел реч griggorii c ютуба?

    не знаю вас, в людскую пройдите, голубчик, со своими корешами туда же

     
  • 2.8, Аноним (8), 13:35, 01/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    а кто должен делать? берись и делай
     
  • 2.11, Аноним (-), 14:35, 01/02/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А зачем нам язык, который специально создавался для macOS? Чудной ты!
     
  • 2.25, Аноним (25), 17:05, 01/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Бери:

    https://swift.im/

     

  • 1.9, Аноним (9), 13:56, 01/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Пора обновляться с debian10 на debian12?
     
     
  • 2.10, Аноним (-), 14:33, 01/02/2024 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.12, Фрик из соседней пещеры (?), 14:53, 01/02/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Наверное вам позарез необходим 12 и на 10 многое не работает.
     
     
  • 3.20, Аноним (20), 16:45, 01/02/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    да приложения уже требуют новый glibc
    список таких увеличивается)
    вот новость навела на мысль
    10-->11->12
     
     
  • 4.41, Аноним (41), 09:18, 03/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > вот новость навела на мысль > 10-->11->12

    С некоторой мануальщиной обычно получается и сразу 10 -> 12, если понимать что делаешь.

     

  • 1.14, Карлос Сношайтилис (ok), 15:18, 01/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Индустрия настолько разуверились в возможности писать на С без проблем с памятью, что решает это аппаратным способом
     
     
  • 2.15, Аноним (16), 15:42, 01/02/2024 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.22, Аноним (-), 16:54, 01/02/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ты не правильно понял. Проблема не в Си, а в особенности работы связки "процессор - оперативная память". Поэтому и была задействована Интелом так называемая инструкция "теневой стек"
     
     
  • 3.27, Карлос Сношайтилис (ok), 18:49, 01/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ох, простите бога ради, я, по глупости своей, думал, что это защита от stack buffer overflow, а это оказывается просто Интел процессоры нормально с памятью работать не умеют
     
     
  • 4.28, Аноним (-), 19:17, 01/02/2024 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.24, Аноним (24), 16:57, 01/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ты в курсе, что весь машинный код ассемблирован из ассемблера? Может это индустрия разуверилась компилировать весь код в ассемблер без проблем с памятью?
     
     
  • 3.26, Аноним (-), 17:06, 01/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Так мы докатимся до обвинений в сторону машинных кодов. На самом деле проблема в процессоре.
     
  • 2.33, C00l_ni66a (ok), 23:08, 01/02/2024 Скрыто ботом-модератором     [к модератору]
  • –1 +/
     

     ....ответы скрыты (7)

  • 1.21, Mr.Who (?), 16:50, 01/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Alpine Linux решает 99% серверных задач, так что от этого монстра пора отказываться.
     
     
  • 2.23, Аноним (-), 16:55, 01/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Спасибо, что возвестил нам Благую весть!
     
  • 2.31, Аноним (31), 20:45, 01/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Мусли на >60% медленнее и содержат неизвестное (и никому не интересное) число ACE. Одного этого достаточно.
     
     
  • 3.37, Mr.Who (?), 11:38, 02/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Вранье.
     
     
  • 4.38, Аноним (31), 11:42, 02/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А ты проверял? Потому что я проверял, ведь авторы обещали код быстрее глибц.
     
  • 2.32, Аноним (32), 22:38, 01/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Решает, в основном, те задачи, что опакетили сами разработчики Alpine.
     
     
  • 3.34, Moomintroll (ok), 09:55, 02/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Справедливости ради - у Альпайна довольно обширные репы.

    Ну и, как оказалось, собрать пакет для Альпайна совсем несложно. Пришлось как-то.

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру