Ad

CVE-2026-19548

MEDIUM CVSS 3.1: 5,5 EPSS 0.12%
Обновлено 14 августа 2026
Red Hat
Параметр Значение
CVSS 5,5 (MEDIUM)
Тип уязвимости CWE-416 (Использование памяти после освобождения)
Поставщик Red Hat
Публичный эксплойт Нет

Множественные уязвимости Use-After-Free были обнаружены в функции add_archive_element в ld/ldmain.c компоновщика GNU (ld), компонента binutils. Основная причина заключается в том, что плагин_maybe_claim() в ld/plugin.c освобождает исходный объект BFD через bfd_close/_bfd_delete_bfd, когда вход->the_bfd->my_archive == NULL, но вызывающая сторона сохраняет как исходный параметр abfd, так и неглубокую копию (orig_input.the_bfd) в качестве висячих указателей. Эти висячие указатели впоследствии разыменовываются в трех разных местах в add_archive_element: 1.

Строка ~1442: доступ к abfd->my_archive через bfd_usrdata(abfd->my_archive) 2. Строка ~1493: множественный доступ к abfd и abfd->my_archive при условной проверке и вызове bfd_get_filename. 3. Строка ~1525: разыменование мелкой копии orig_input.the_bfd->my_archive в трассировочном/подробном журнале.

Уязвимость срабатывает, когда плагины LTO активны (link_info.lto_plugin_active имеет значение true) и входной объект имеет abfd->my_archive == NULL, что является допустимым состоянием для автономных объектных файлов. Red Hat собирает binutils с --enable-plugins и --enable-lto, подтверждая, что уязвимый путь кода скомпилирован и доступен. Злоумышленник, который может предоставить созданный объект или архивный файл в процесс сборки с использованием связывания с поддержкой LTO, может воспользоваться этой уязвимостью, чтобы вызвать отказ в обслуживании (сбой компоновщика из-за ошибки сегментации).

Выполнение произвольного кода теоретически возможно посредством манипулирования кучей, но его существенно смягчают меры по усилению защиты, включая защиту стека, FORTIFY_SOURCE, ASLR и PIE. Поверхность атаки ограничена средами времени сборки: компоновщик — это инструмент разработки, не доступный во время выполнения продукта. Наиболее реалистичным сценарием эксплуатации является атака на цепочку поставок, в которой созданный объектный файл используется в качестве зависимости сборки в конвейерах CI/CD или средах разработки.

Показать оригинальное описание (EN)

Multiple Use-After-Free vulnerabilities were found in the add_archive_element function in ld/ldmain.c of the GNU linker (ld), a component of binutils. The root cause is that plugin_maybe_claim() in ld/plugin.c frees the original BFD object via bfd_close/_bfd_delete_bfd when entry->the_bfd->my_archive == NULL, but the caller retains both the original abfd parameter and a shallow copy (orig_input.the_bfd) as dangling pointers. These dangling pointers are subsequently dereferenced at three distinct locations in add_archive_element: 1. Line ~1442: accessing abfd->my_archive via bfd_usrdata(abfd->my_archive) 2. Line ~1493: multiple accesses to abfd and abfd->my_archive in a conditional check and bfd_get_filename call 3. Line ~1525: dereferencing the shallow copy orig_input.the_bfd->my_archive in trace/verbose logging The vulnerability is triggered when LTO plugins are active (link_info.lto_plugin_active is true) and the input object has abfd->my_archive == NULL, which is a valid state for standalone object files. Red Hat builds binutils with --enable-plugins and --enable-lto, confirming the vulnerable code path is compiled in and reachable. An attacker who can supply a crafted object or archive file to a build process using LTO-enabled linking could exploit this flaw to cause a denial of service (linker crash via segmentation fault). Arbitrary code execution is theoretically possible through heap manipulation but is substantially mitigated by hardening measures including stack protector, FORTIFY_SOURCE, ASLR, and PIE. The attack surface is limited to build-time environments — the linker is a development tool not exposed in production runtime. The most realistic exploitation scenario is a supply chain attack introducing a crafted object file as a build dependency in CI/CD pipelines or development environments.

Характеристики атаки

Способ атаки
Локальный
Нужен локальный доступ
Сложность
Низкая
Легко эксплуатировать
Нужны права
Не требуются
Права не нужны
Участие пользователя
Требуется
Нужно действие пользователя

Последствия

Конфиденциальность
Нет
Нет утечки данных
Целостность
Нет
Нет модификации данных
Доступность
Высокое
Полный отказ в обслуживании

Строка CVSS v3.1