CVE-2026-23248

HIGH CVSS 3.1: 7,8 EPSS 0.01%
Обновлено 2 апреля 2026
Linux
Параметр Значение
CVSS 7,8 (HIGH)
Поставщик Linux
Публичный эксплойт Нет

В ядре Linux устранена следующая уязвимость: perf/core: исправлена ошибка счетчика ссылок и потенциальный UAF в perf_mmap. Syzkaller сообщил о добавлении refcount_t: на 0; предупреждение об использовании после бесплатного использования в perf_mmap. Проблема вызвана состоянием гонки между неудачной настройкой mmap(). и одновременный вызов mmap() для зависимого события (например, с использованием вывода перенаправление).

В perf_mmap() кольцевой буфер (rb) выделяется и назначается event->rb с удержанным mmap_mutex. Затем мьютекс освобождается выполните map_range(). Если функция map_range() завершается неудачно, для очистки вызывается perf_mmap_close().

Однако, поскольку мьютекс был удален, к нему присоединился другой поток. это событие (через унаследованные события или перенаправление вывода) может получить мьютекс, обратите внимание на действительный указатель event->rb и попытайтесь увеличить счетчик ссылок. Если путь очистки уже dropped the reference count to zero, this results in a предупреждение об использовании после освобождения или насыщении счетчика ссылок. Исправьте это, расширив область действия mmap_mutex, чтобы охватить вызов map_range().

Это гарантирует, что инициализация кольцевого буфера и отображение (или очистка в случае сбоя) происходит атомарно эффективно, предотвращение доступа других потоков к наполовину инициализированному или умирающий кольцевой буфер.

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

In the Linux kernel, the following vulnerability has been resolved: perf/core: Fix refcount bug and potential UAF in perf_mmap Syzkaller reported a refcount_t: addition on 0; use-after-free warning in perf_mmap. The issue is caused by a race condition between a failing mmap() setup and a concurrent mmap() on a dependent event (e.g., using output redirection). In perf_mmap(), the ring_buffer (rb) is allocated and assigned to event->rb with the mmap_mutex held. The mutex is then released to perform map_range(). If map_range() fails, perf_mmap_close() is called to clean up. However, since the mutex was dropped, another thread attaching to this event (via inherited events or output redirection) can acquire the mutex, observe the valid event->rb pointer, and attempt to increment its reference count. If the cleanup path has already dropped the reference count to zero, this results in a use-after-free or refcount saturation warning. Fix this by extending the scope of mmap_mutex to cover the map_range() call. This ensures that the ring buffer initialization and mapping (or cleanup on failure) happens atomically effectively, preventing other threads from accessing a half-initialized or dying ring buffer.

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

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

Последствия

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

Строка CVSS v3.1