CVE-2026-64558 в Linux Kernel: переполнение буфера в s390 pkey и защита

CVE: CVE-2026-64558
Продукт: Linux Kernel
Дата публикации: 29.07.2026
Критичность: HIGH
CVSS: 7.8 (3.1)
EPSS: 0,12%; процентиль 2,14%
CISA KEV: нет подтверждения в каталоге CISA KEV

Краткое описание​


Уязвимость в драйвере криптографии s390 pkey позволяет локальному пользователю вызвать переполнение буфера при конвертации ключей. Ошибка возникает из-за отсутствия проверки длины целевого буфера перед копированием данных. Исправление добавляет явную проверку размера, предотвращающую запись за пределы выделенной памяти. Статья описывает механику ошибки, условия эксплуатации и шаги по верификации исправления.

Основные характеристики​


CVE-2026-64558 классифицируется как уязвимость с высоким уровнем критичности (CVSS 7.8). Вектор атаки локальный (AV:L), сложность низкая (AC:L), требуются права обычного пользователя (PR:L). Успешная эксплуатация приводит к полному компрометированию конфиденциальности, целостности и доступности системы (C:H/I:H/A:H). Ошибка находится в модуле драйвера s390 pkey, конкретно в реализации обработчика pkey_pckmo. Корневая причина — отсутствие проверки длины целевого буфера перед операцией memcpy. Исправление добавляет проверку, при которой функция возвращает ошибку, если размер выходных данных превышает доступный буфер.

Какие продукты и версии затронуты​


Уязвимость затрагивает ядра Linux, содержащие драйвер s390 pkey с модулем pkey_pckmo. Ошибка была введена в коммите 8fcc231ce3be, который реализовал базовую инфраструктуру pkey с реестром обработчиков. Затронуты версии ядра, в которых отсутствует исправление, добавленное в коммитах 1ac287e2af9a9112fe271427ef45eceb26bce8b4 и его backports в стабильные ветки. Конкретные номера версий ядра, в которых присутствует уязвимость, не указаны в предоставленных источниках, однако известно, что исправление было применено в стабильных ветках ядра. Администраторам s390-систем рекомендуется проверить наличие данного коммита в истории ядра.

Причина уязвимости​


Причина уязвимости заключается в отсутствии проверки длины целевого буфера в функции pckmo_key2protkey, которая реализует обработчик key_to_protkey() для драйвера pkey_pckmo. При конвертации ключа в защищенный ключ функция генерирует выходные данные в структуре t, но перед копированием этих данных в целевой буфер protkey с помощью memcpy не проверяется, что размер t->len не превышает *protkeylen. Это приводит к записи за пределы выделенного буфера, что может вызвать повреждение памяти, сбой ядра или выполнение кода. Исправление добавляет явную проверку: если t->len > *protkeylen, функция возвращает -EINVAL и завершает работу без копирования данных.

Как работает атака​


Атакующий с локальными правами пользователя может вызвать функцию key_to_protkey() через соответствующие системные вызовы или интерфейсы криптографического подсистемы ядра. При передаче ключа, который приводит к генерации выходных данных большего размера, чем предоставленный целевой буфер, срабатывает переполнение. Функция pckmo_key2protkey копирует данные из t->protkey в protkey без проверки размера, что позволяет записать данные за пределы буфера. Это может привести к повреждению соседних структур данных в памяти ядра, что потенциально позволяет атакующему изменить состояние ядра, вызвать сбой или выполнить произвольный код в контексте ядра. Механизм атаки не требует взаимодействия с пользователем (UI:N) и имеет низкую сложность (AC:L).

Условия успешной эксплуатации​


Для эксплуатации уязвимости атакующему необходимы локальные права доступа к системе (PR:L). Система должна работать на архитектуре s390 с загруженным драйвером pkey и модулем pkey_pckmo. Атакующий должен иметь возможность вызывать функции криптографического подсистемы ядра, связанные с конвертацией ключей. Не требуется взаимодействие с пользователем (UI:N). Сложность атаки низкая (AC:L), что означает, что атакующему не нужны специальные условия или сложная настройка для успешной эксплуатации. Доступ к криптографическим интерфейсам может быть ограничен политиками безопасности, но базовые права пользователя обычно достаточны для вызова соответствующих функций.

Возможный сценарий атаки​


Локальный пользователь с правами доступа к криптографическим интерфейсам s390 pkey вызывает функцию конвертации ключа, передавая ключ, который приводит к генерации выходных данных большего размера, чем предоставленный целевой буфер. Функция pckmo_key2protkey не проверяет длину выходных данных перед копированием, что приводит к записи за пределы буфера. Это повреждает соседние структуры данных в памяти ядра, что может вызвать сбой ядра или выполнение произвольного кода в контексте ядра. Атакующий получает полный контроль над системой, включая возможность создания учетных записей, изменения конфигурации и доступа к конфиденциальным данным. Сценарий требует, чтобы драйвер pkey был загружен и активен на системе.

Есть ли публичный эксплойт​


В предоставленных источниках отсутствуют сведения о публичных эксплоитах, PoC или подтвержденной эксплуатации CVE-2026-64558 в реальных атаках. EPSS-оценка составляет 0.0012, что указывает на низкую вероятность эксплуатации в ближайшем будущем. Отсутствие сведений о публичном эксплоите не означает, что эксплойт не существует, но подтвержденных данных о его доступности в открытых источниках нет. Атакующие могут разработать собственный эксплойт на основе понимания механики ошибки, но для этого требуется знание внутренней структуры драйвера pkey и возможность вызова соответствующих функций ядра.

Признаки эксплуатации​


Специфичные индикаторы компрометации (IOC) для CVE-2026-64558 не раскрыты в предоставленных источниках. Общие точки контроля, которые могут указывать на эксплуатацию, включают: аномальные системные вызовы, связанные с криптографическими интерфейсами s390 pkey; неожиданные сбои ядра или ошибки в логах, связанные с драйвером pkey; изменения в памяти ядра, которые не объясняются легитимной активностью. Эти индикаторы неспецифичны и могут быть вызваны другими причинами, поэтому их наличие требует дополнительной верификации. Рекомендуется анализировать логи ядра и системные вызовы для выявления подозрительной активности.

Как обнаружить атаку​


Для обнаружения эксплуатации CVE-2026-64558 рекомендуется использовать следующие методы: мониторинг системных вызовов, связанных с криптографическими интерфейсами s390 pkey; анализ логов ядра на наличие ошибок, связанных с драйвером pkey; проверка изменений в памяти ядра с помощью инструментов аудита. Специфичные правила для SIEM или IDS для данной уязвимости не предоставлены. Администраторам s390-систем рекомендуется настроить мониторинг за подозрительной активностью в криптографическом подсистеме ядра и анализировать логи на наличие аномалий. Также полезно отслеживать обновления ядра и применять исправления своевременно.

Как проверить свою версию​


Для проверки версии ядра и наличия исправления используйте следующие команды: uname -r для получения версии ядра; uname -a для получения полной информации о системе; cat /proc/version для просмотра версии ядра и информации о сборке. Чтобы проверить наличие конкретного коммита с исправлением, используйте git log в исходном коде ядра или проверьте историю обновлений вашего дистрибутива. Если вы используете дистрибутив, проверьте его базу данных уязвимостей для информации о том, какие версии ядра содержат исправление. Заполнитель <имя-пакета> в командах проверки пакетов нужно заменить на фактическое имя пакета ядра в вашем дистрибутиве.

Исправление​


Основным способом устранения уязвимости является обновление ядра Linux до версии, содержащей исправление. Исправление было добавлено в коммите 1ac287e2af9a9112fe271427ef45eceb26bce8b4 и backported в стабильные ветки ядра. Администраторам s390-систем рекомендуется обновить ядро до последней стабильной версии, которая включает данный коммит. Если обновление ядра невозможно в краткосрочной перспективе, рассмотрите временные меры, описанные ниже. После обновления проверьте, что исправление действительно применено, используя команды проверки версии и историю обновлений.

Временные меры защиты​


Временные меры для снижения риска эксплуатации CVE-2026-64558 включают: ограничение доступа к криптографическим интерфейсам s390 pkey для пользователей, которым это не требуется; использование модульной загрузки драйвера pkey только при необходимости; мониторинг системных вызовов, связанных с криптографическим подсистемой ядра; применение политик безопасности, ограничивающих локальные права пользователей. Эти меры не устраняют уязвимость, но снижают вероятность успешной атаки. Рекомендуется также изолировать критические s390-системы от недоверенных пользователей и ограничить их доступ к криптографическим функциям.

Как проверить устранение уязвимости​


Для верификации применения исправления CVE-2026-64558 выполните следующие шаги: 1) Проверьте версию ядра с помощью uname -r и убедитесь, что она соответствует версии, содержащей исправление. 2) Проверьте историю обновлений ядра или дистрибутива для подтверждения наличия коммита 1ac287e2af9a9112fe271427ef45eceb26bce8b4. 3) Если возможно, проверьте исходный код ядра на наличие добавленной проверки длины в функции pckmo_key2protkey. 4) Проведите функциональное тестирование криптографических интерфейсов s390 pkey, чтобы убедиться, что они работают корректно после обновления. 5) Проверьте логи ядра на наличие ошибок, связанных с драйвером pkey, после обновления.

Вывод​


CVE-2026-64558 представляет собой серьезную уязвимость в драйвере s390 pkey, которая позволяет локальному пользователю вызвать переполнение буфера и потенциально получить полный контроль над системой. Ошибка была исправлена добавлением явной проверки длины целевого буфера перед копированием данных. Администраторам s390-систем рекомендуется обновить ядро до версии, содержащей исправление, и применить временные меры для снижения риска в период до обновления. Мониторинг и верификация применения исправления являются важными шагами для обеспечения безопасности системы. Отсутствие публичных эксплоитов не должно снижать приоритет устранения уязвимости, учитывая высокий уровень критичности и потенциальные последствия успешной атаки.

Официальные источники​


  1. NVD — CVE-2026-64558
  2. FIRST EPSS — CVE-2026-64558
  3. s390/pkey: Check length in pkey_pckmo handler implementation - kernel/git/stable/linux.git - Linux kernel stable tree
  4. s390/pkey: Check length in pkey_pckmo handler implementation - kernel/git/stable/linux.git - Linux kernel stable tree
  5. s390/pkey: Check length in pkey_pckmo handler implementation - kernel/git/stable/linux.git - Linux kernel stable tree
  6. s390/pkey: Check length in pkey_pckmo handler implementation - kernel/git/stable/linux.git - Linux kernel stable tree
  7. CVEs — The Linux Kernel documentation

История обновлений статьи​


  • 08.08.2026 — Опубликована первая версия материала.
  • 24.08.2026 — Уточнены сведения об уязвимых версиях, оценке риска или исправлении.
 
Последнее редактирование:
Назад
Верх Низ