CVE-2026-68452 в Linux Kernel: проверка длины токена ключа в s390/zcrypt

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

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


Уязвимость CVE-2026-68452 (CVSS 7.8) затрагивает подсистему криптографии s390/zcrypt в Linux Kernel. Ошибка возникает из-за отсутствия проверки длины токена ключа AES перед копированием в блок параметров CPRB, что может привести к переполнению буфера. Статья описывает механику ошибки, условия эксплуатации и методы проверки систем архитектуры IBM Z.

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


Уязвимость классифицируется как HIGH (CVSS 3.1: 7.8). Вектор атаки требует локального доступа (AV:L), низких условий эксплуатации (AC:L) и наличия учетных данных с ограниченными привилегиями (PR:L). Пользовательское взаимодействие не требуется (UI:N). В случае успешной эксплуатации нарушаются конфиденциальность, целостность и доступность системы (C:H/I:H/A:H). Ошибка локализована в драйвере drivers/s390/crypto/zcrypt_ccamisc.c и связана с функцией cca_cipher2protkey().

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


Уязвимость затрагивает Linux Kernel на архитектуре s390 (IBM Z). Согласно метаданным исправления, ошибка присутствует в версиях ядра начиная с 5.4 и выше (Cc: [email protected] # 5.4+). Затронуты системы, использующие аппаратное ускорение криптографии CCA (Crypto Coprocessor Architecture) и подсистему zcrypt. Системы других архитектур (x86, ARM и др.) не подвержены этой конкретной ошибке.

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


Причиной уязвимости является отсутствие валидации длины данных, переданных в функцию cca_cipher2protkey(). Функция извлекает значение длины (len) непосредственно из структуры токена ключа (struct cipherkeytoken) и использует это значение для определения размера копируемых данных в блок параметров CPRB (Command Program Request Block). Если передается токен с завышенным значением длины, превышающим доступное пространство в буфере параметра (PARMBSIZE - sizeof(struct aureqparm)), происходит запись за пределы выделенной памяти.

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


Атака базируется на манипуляции структурой данных токена ключа AES. Атакующий формирует запрос к криптографическому API, содержащий токен ключа с модифицированным полем длины. При обработке запроса функция cca_cipher2protkey() доверяет указанному значению длины и инициирует копирование данных в буфер CPRB. Поскольку проверка границ буфера отсутствует, данные копируются за пределы выделенного блока памяти. Это приводит к повреждению смежных структур данных в памяти ядра, что может вызвать отказ в обслуживании (Kernel Panic) или, при благоприятных условиях, выполнение произвольного кода с привилегиями ядра.

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


Для эксплуатации уязвимости необходимо наличие локального доступа к системе (AV:L). Атакующий должен обладать учетной записью с ограниченными привилегиями (PR:L), достаточными для вызова криптографических операций через интерфейс zcrypt. Требуется, чтобы система работала на архитектуре s390 и использовала модуль zcrypt с поддержкой CCA AES cipher keys. Отсутствие необходимости во взаимодействии пользователя (UI:N) позволяет автоматизировать атаку.

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


  1. Атакующий получает доступ к системе под учетной записью с ограниченными правами.
  2. С помощью системных вызовов или библиотек криптографии атакующий формирует запрос на обработку ключа AES через подсистему zcrypt.
  3. В запросе передается специально сформированный токен ключа, в котором поле длины указывает на размер, превышающий размер буфера CPRB.
  4. Ядро обрабатывает запрос, функция cca_cipher2protkey() копирует данные за пределы буфера.
  5. Происходит повреждение памяти ядра, что может привести к краху системы или эскалации привилегий.

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


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

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


Специфичные индикаторы компрометации (IOC) для данной уязвимости не опубликованы. Общие признаки, которые могут указывать на попытку эксплуатации:

  • Необъяснимые падения ядра (Kernel Panic) с упоминанием модуля zcrypt или s390/crypto.
  • Аномальная активность процессов, обращающихся к криптографическим устройствам /dev/zcrypt*.
  • Ошибки сегментации или повреждения памяти в логах ядра (dmesg) в контексте криптографических операций.
    Эти признаки неспецифичны и могут быть вызваны другими причинами.

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


Для выявления потенциальных атак рекомендуется мониторинг журналов ядра (dmesg, /var/log/kern.log) на предмет ошибок в модуле zcrypt. Следует обращать внимание на сообщения об ошибках памяти, крахах ядра или некорректных запросах к криптографическим устройствам. Также полезно анализировать системные вызовы, связанные с доступом к /dev/zcrypt*, на предмет аномальных паттернов использования.

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


Для проверки версии установленного ядра Linux используйте следующие команды:

Bash:
uname -r
uname -a
cat /proc/version

Сравните полученную версию с списком уязвимых версий (начиная с 5.4). Если версия ядра ниже версии, содержащей исправление (патч 06afe425d5283b9764303de47f554da5a808ce8a и его порты), система уязвима.

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


Единственным эффективным способом устранения уязвимости является обновление ядра Linux до версии, содержащей исправление. Исправление добавляет проверку длины токена ключа перед копированием:

C:
if (keytoklen > PARMBSIZE - sizeof(struct aureqparm))
    return -EINVAL;

Обновите систему с помощью пакетного менеджера вашей дистрибуции (например, apt, yum, zypper) до последней стабильной версии ядра, выпущенной после 29 июля 2026 года (дата авторства патча).

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


До применения обновления можно рассмотреть следующие временные меры:

  • Ограничение доступа к криптографическим устройствам /dev/zcrypt* только для доверенных приложений.
  • Использование механизмов изоляции (например, контейнеров или виртуальных машин) для разделения процессов, работающих с криптографией.
  • Отключение использования аппаратного ускорения CCA, если это допускается требованиями безопасности и производительности.
    Эти меры не устраняют уязвимость, но могут снизить поверхность атаки.

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


После обновления ядра выполните команду uname -r для подтверждения установки новой версии. Проверьте наличие патча в исходном коде ядра или в журнале изменений дистрибутива. Убедитесь, что система перезагружена с новым ядром. Проверьте логи на отсутствие ошибок zcrypt после обновления.

Вывод​


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

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


  1. NVD — CVE-2026-68452
  2. FIRST EPSS — CVE-2026-68452
  3. s390/zcrypt: Validate length for CCA AES cipher key requests - kernel/git/stable/linux.git - Linux kernel stable tree
  4. s390/zcrypt: Validate length for CCA AES cipher key requests - kernel/git/stable/linux.git - Linux kernel stable tree
  5. s390/zcrypt: Validate length for CCA AES cipher key requests - kernel/git/stable/linux.git - Linux kernel stable tree
  6. s390/zcrypt: Validate length for CCA AES cipher key requests - kernel/git/stable/linux.git - Linux kernel stable tree
  7. s390/zcrypt: Validate length for CCA AES cipher key requests - kernel/git/stable/linux.git - Linux kernel stable tree
  8. s390/zcrypt: Validate length for CCA AES cipher key requests - kernel/git/stable/linux.git - Linux kernel stable tree
  9. s390/zcrypt: Validate length for CCA AES cipher key requests - kernel/git/stable/linux.git - Linux kernel stable tree
  10. s390/zcrypt: Validate length for CCA AES cipher key requests - kernel/git/stable/linux.git - Linux kernel stable tree

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


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