Ad

CVE-2026-12235

MEDIUM CVSS 3.1: 6,3 EPSS 0.10%
Обновлено 12 августа 2026
Параметр Значение
CVSS 6,3 (MEDIUM)
Тип уязвимости CWE-787 (Запись за пределами буфера)
Публичный эксплойт Нет

Подсистема связываемых загружаемых расширений (llext) неправильно обрабатывает записи перемещения PLT/RELA при связывании перемещаемого (частично связанного) расширения ELF. В llext_link_plt() (subsys/llext/llext_link.c) перемещаемая ветвь (tgt != NULL, путь, используемый для перемещаемых объектов Xtensa) вычисляет адрес исправления как ext->mem[LLEXT_MEM_TEXT] - text.sh_offset + rela.r_offset + tgt->sh_offset, а затем выполняет перемещение и запись туда без проверки. rela.r_offset. Его родственная общая/динамическая ветвь уже отклонила смещения, выходящие за пределы диапазона, с помощью llext_file_offset(). rela.r_offset считывается непосредственно из таблицы RELA ELF, поэтому созданная запись со смещением, превышающим целевой раздел, приводит к тому, что запись оказывается произвольно далеко за пределами текстового буфера расширения.

Результатом является запись за пределами границ под влиянием злоумышленника (местоположение через r_offset, записанное значение — это разрешенный адрес символа), выполняемая в контексте супервизора во время соединения, до запуска любого кода расширения. Путь достигается из llext_load() всякий раз, когда приложение загружает в Xtensa под влиянием злоумышленника расширение ELF с доступным для записи хранилищем; Документально подтверждено, что llext принимает расширения ненадежного происхождения. Последствием является повреждение памяти контекста супервизора (потеря целостности и доступности, а также выход за пределы песочницы для расширений пользовательского режима).

Эксплуатация ограничена перемещаемым путем PLT Xtensa и записываемым хранилищем, а превращение записи за пределами диапазона в полезный примитив нетривиально. Исправление добавляет связанную проверку, отклоняющую любую запись RELA, чья r_offset >= tgt->sh_size, что отражает существующую проверку в общей ветке.

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

The Linkable Loadable Extensions (llext) subsystem mis-handles PLT/RELA relocation entries when linking a relocatable (partially-linked) ELF extension. In llext_link_plt() (subsys/llext/llext_link.c), the relocatable branch (tgt != NULL, the path used for Xtensa relocatable objects) computed the patch address as ext->mem[LLEXT_MEM_TEXT] - text.sh_offset + rela.r_offset + tgt->sh_offset and then performed the relocation write there without validating rela.r_offset. Its sibling shared/dynamic branch already rejected out-of-range offsets via llext_file_offset(). rela.r_offset is read directly from the ELF's RELA table, so a crafted entry with an offset larger than the target section makes the write land arbitrarily far outside the extension's text buffer. The result is an attacker-influenced out-of-bounds write (the location via r_offset, the written value being the resolved symbol address) performed in supervisor context at link time, before any extension code runs. The path is reached from llext_load() whenever an application loads an attacker-influenced ELF extension on Xtensa with writable storage; llext is documented to accept extensions of untrusted origin. Impact is supervisor-context memory corruption (integrity and availability loss, and a sandbox-boundary escape for user-mode extensions). Exploitation is gated by the Xtensa relocatable PLT path and writable storage, and turning the out-of-range write into a useful primitive is non-trivial. The fix adds a bound check rejecting any RELA entry whose r_offset >= tgt->sh_size, mirroring the existing validation in the shared branch.

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

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

Последствия

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

Строка CVSS v3.1