CVE-2026-64558 в Linux Kernel: проверка длины буфера в обработчике pkey_pckmo

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

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


Уязвимость CVE-2026-64558 в ядре Linux связана с отсутствием проверки длины целевого буфера в реализации функции pkey_pckmo. Исправление, выпущенное в июле 2026 года, добавляет проверку длины выходных данных перед их копированием. Уязвимость затрагивает системы на архитектуре IBM z/Architecture, использующие подсистему s390/pkey. Обновление рекомендовано для предотвращения потенциального повреждения данных и неопределённого поведения.

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


CVE-2026-64558 — уязвимость типа переполнения буфера в ядре Linux, затрагивающая реализацию функции pkey_pckmo в подсистеме криптографии s390. Отсутствие проверки длины выходных данных в функции key_to_protkey() может привести к переполнению целевого буфера. Исправление вносит дополнительную проверку, которая предотвращает запись данных, превышающих размер буфера. Изменение внесено в файл drivers/s390/crypto/pkey_pckmo.c и подтверждено в коммитах [3], [4], [5], [6].

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


Уязвимость затрагивает ядра Linux, поддерживающие подсистему s390/pkey, в частности, использующие модуль pkey_pckmo. Проблема актуальна для систем на архитектуре IBM z/Architecture, где применяется криптографическая подсистема ядра. Системы, в которых активна функциональность key_to_protkey() и используется pkey_pckmo, могут быть подвержены риску. Уязвимость может быть актуальна для всех версий ядра, где реализация pkey_pckmo не содержит исправления. Подробная информация о влиянии на конкретные версии доступна в исторических изменениях [3].

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


Корневая причина — отсутствие проверки длины выходных данных перед копированием в целевой буфер. В функции key_to_protkey() реализация pkey_pckmo не проверяет, помещаются ли данные (t->len) в предоставленный буфер (*protkeylen). Если длина данных превышает размер буфера, происходит переполнение. Исправление добавляет проверку if (t->len > *protkeylen) и возвращает ошибку при несоответствии. Изменение внесено в drivers/s390/crypto/pkey_pckmo.c согласно исправлениям [3], [4], [5], [6].

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


Механизм уязвимости основан на том, что функция key_to_protkey() может записать больше данных, чем позволяет целевой буфер. Если длина выходных данных (t->len) больше, чем размер буфера (*protkeylen), происходит переполнение. Это может привести к повреждению памяти или неопределённому поведению. Уязвимость наиболее актуальна в системах, где активна подсистема pkey_pckmo и функция key_to_protkey() вызывается с параметрами, позволяющими контролировать размер данных. Механизм зависит от контекста вызова и управления данными.

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


Для использования уязвимости требуется, чтобы система имела активную подсистему s390/pkey и функцию key_to_protkey(). Необходимо, чтобы вызов функции происходил с параметрами, позволяющими генерировать данные, превышающие размер буфера. Уязвимость не является автоматической и требует определённых условий. В настоящее время нет подтверждённых эксплуатаций, однако потенциал использования существует. Системы, где функция key_to_protkey() активна, должны быть защищены обновлением.

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


Сценарий предполагает, что функция key_to_protkey() вызывается с входными данными, которые приводят к генерации данных большего размера, чем буфер. При отсутствии проверки это может вызвать переполнение, что в некоторых случаях может быть использовано для повреждения памяти или вызова отказа в обслуживании. Уязвимость наиболее актуальна в средах, где криптографические ключи обрабатываются в ядре, например, в системах IBM z/Architecture. Реализация pkey_pckmo и связанные с ней функции являются потенциальной точкой атаки.

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


На момент проверки публичные эксплуатации или PoC для CVE-2026-64558 не подтверждены. Уязвимость связана с переполнением буфера и отсутствием проверки длины, что делает её потенциально эксплуатируемой. Однако, без подтверждённых случаев использования, риск эксплуатации остаётся теоретическим. Рекомендуется применять исправление, чтобы избежать потенциальных угроз.

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


Отсутствие специфичных IOC для уязвимости. Возможные сигналы включают ошибки в журналах ядра при работе с криптографическими функциями, аномалии в системах, использующих pkey_pckmo, или необычное поведение при вызове key_to_protkey(). Наличие таких событий может указывать на возможное использование, но не гарантирует эксплуатацию. Рекомендуется анализировать логи и мониторить активность подсистемы.

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


Обнаружение возможно через проверку версии ядра и наличия исправления в pkey_pckmo. Системы, где активна подсистема s390/pkey, должны быть проанализированы на соответствие исправленной версии. Проверка через команды uname -r, uname -a или cat /proc/version позволяет определить версию ядра. Также можно использовать git log или git show для анализа коммитов [3].

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


Для проверки версии ядра, в которой исправлена уязвимость CVE-2026-64558, можно использовать следующие команды:

Bash:
uname -r

или

Bash:
uname -a

или

Bash:
cat /proc/version

Для более точной проверки изменений рекомендуется проанализировать историю коммитов в ядре Linux, например, через git log или git show [3].

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


Рекомендуется обновить ядро Linux до версии, содержащей исправление CVE-2026-64558. Обновление должно включать изменения в drivers/s390/crypto/pkey_pckmo.c, добавляющие проверку длины выходных данных. Это позволит предотвратить переполнение буфера и потенциальные последствия, такие как повреждение данных или отказ в обслуживании. Системы, использующие подсистему s390/pkey, должны быть обновлены как можно скорее.

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


В отсутствие постоянного решения можно ограничить использование подсистемы pkey_pckmo или функции key_to_protkey(), если это возможно. Также рекомендуется отслеживать журналы ядра на предмет ошибок, связанных с криптографическими операциями. Анализ активности, связанной с функциями pkey_pckmo, может помочь выявить подозрительные действия. Эти меры не устраняют уязвимость, но снижают риск её эксплуатации.

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


После обновления рекомендуется проверить, что версия ядра содержит исправление. Это можно сделать с помощью команд:

Bash:
uname -r

или

Bash:
cat /proc/version

Также можно проверить историю коммитов в ядре, например:

Bash:
git log --oneline | grep -i "pkey_pckmo"

Если в выводе отображается коммит, связанный с исправлением, это подтверждает обновление. Также можно проверить, что в файле drivers/s390/crypto/pkey_pckmo.c присутствует проверка длины, как указано в исправлении [3].

Вывод​


CVE-2026-64558 — уязвимость переполнения буфера в подсистеме s390/pkey ядра Linux. Исправление, выпущенное в июле 2026 года, добавляет проверку длины данных перед копированием. Рекомендуется своевременно обновить ядро, особенно в системах, использующих pkey_pckmo. Наличие уязвимости в таких системах требует немедленного действия. Обновление помогает избежать потенциальных последствий, связанных с повреждением данных и неопределённым поведением.

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


  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 — Опубликована первая версия материала.
 
Назад
Верх Низ