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

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

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


Уязвимость CVE-2026-68451 затрагивает подсистему криптографии zcrypt в архитектуре s390. Функция cca_ecc2protkey() использовала поле длины из токена ключа ECC для копирования данных в блок параметров CPRB без проверки границ. Это позволяло вызвать переполнение буфера. Исправление добавляет валидацию длины токена перед выполнением операции копирования.

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


Оценка риска: 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 и затрагивает исключительно архитектуру s390 (IBM Z).

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


Linux Kernel для архитектуры s390. Согласно тегу стабильности в коммите исправления (Cc: [email protected] # 5.10+), уязвимость присутствует в версиях ядра начиная с 5.10 и выше, вплоть до версий, содержащих исправление. Конкретные номера версий зависят от веток стабильных релизов, в которые был применен патч. Уязвимость не затрагивает другие архитектуры (x86, ARM и т.д.), так как код относится исключительно к драйверу s390.

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


Функция cca_ecc2protkey() извлекала значение длины из поля len структуры токена ключа (eccprivkeytoken) и использовала его для определения размера данных, подлежащих копированию в блок параметров CPRB. Исходный код не проверял, превышает ли указанная в токене длина доступное пространство в выделенном блоке параметров. Это приводило к тому, что при указании завышенного значения длины происходило копирование данных за пределы выделенного буфера, нарушая целостность памяти ядра.

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


Атакующий, имеющий локальный доступ к системе с правами, достаточными для вызова криптографических операций через интерфейс zcrypt, формирует запрос на обработку закрытого ключа ECC. В запросе передается токен ключа с модифицированным полем длины (len), значение которого превышает размер доступного буфера в блоке параметров CPRB. При обработке этого запроса функция cca_ecc2protkey() доверяет указанной длине и выполняет копирование данных, выходя за границы выделенной памяти. Это может привести к повреждению структур данных ядра, падению системы (DoS) или, в случае успешного контроля потока выполнения, к повышению привилегий.

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


  1. Система работает на архитектуре IBM s390 (Z-series).<br>2. В ядре включена поддержка подсистемы zcrypt (CONFIG_ZCRYPT).<br>3. Атакующий имеет локальный доступ к системе.<br>4. Атакующий обладает правами, позволяющими инициировать криптографические операции через интерфейс zcrypt (обычно это требует прав пользователя, имеющего доступ к устройствам zcrypt, что соответствует вектору PR:L).<br>5. Отсутствие исправления в текущей версии ядра.

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


Локальный пользователь или процесс с ограниченными привилегиями обращается к криптографическому устройству zcrypt для выполнения операции с закрытым ключом ECC. В запросе передается специально сформированный токен ключа, в котором поле длины установлено в значение, превышающее размер буфера блока параметров CPRB. Ядро, обрабатывая этот запрос в функции cca_ecc2protkey(), не проверяет границы и копирует данные из токена в буфер CPRB, выходя за его пределы. Это приводит к переполнению буфера. В худшем случае атакующий может использовать это для перезаписи критических структур данных ядра или управления потоком выполнения кода, получая контроль над системой.

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


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

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


Специфичные индикаторы компрометации (IOC) для этой уязвимости не определены, так как эксплуатация происходит на уровне ядра и может маскироваться под легитимные криптографические операции. Общие признаки, которые могут указывать на попытку эксплуатации:<br>- Нестабильность работы системы, зависания или перезагрузки (kernel panic) при выполнении криптографических операций.<br>- Необычная активность процессов, обращающихся к устройствам zcrypt (/dev/zcrypt/*).<br>- Появление новых процессов с повышенными привилегиями (root) без видимой причины.<br>Эти признаки неспецифичны и могут быть вызваны другими причинами.

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


Для обнаружения потенциальных попыток эксплуатации или наличия уязвимости рекомендуется:<br>1. Проверить версию установленного ядра Linux.<br>2. Мониторить логи ядра (dmesg, /var/log/kern.log) на наличие сообщений об ошибках в подсистеме zcrypt или падениях ядра (kernel oops/panic).<br>3. Использовать средства аудита (auditd) для отслеживания вызовов системных функций, связанных с доступом к криптографическим устройствам.<br>4. Проверить наличие патча в исходном коде ядра или в пакете ядра, поставляемом дистрибутивом.

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


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

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


Основной метод устранения уязвимости — обновление ядра Linux до версии, содержащей исправление. Исправление добавляет проверку длины токена ключа перед копированием:<br><br>c<br>if (keylen > PARMBSIZE - sizeof(struct aureqparm))<br> return -EINVAL;<br><br><br>Обновите ядро через менеджер пакетов вашего дистрибутива (например, apt, yum, dnf) или скомпилируйте ядро из исходников с применением патча. После обновления перезагрузите систему для загрузки нового ядра.

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


До применения обновления ядра можно рассмотреть следующие временные меры:<br>1. Ограничить доступ к устройствам zcrypt (/dev/zcrypt/*) только для необходимых процессов и пользователей.<br>2. Если возможно, отключить использование криптографических функций zcrypt, требующих обработки закрытых ключей ECC, или перенести их на другие аппаратные модули безопасности (HSM), не использующие уязвимый драйвер.<br>3. Использовать механизмы изоляции (cgroups, namespaces) для ограничения ресурсов процессов, работающих с zcrypt.<br>Эти меры не устраняют уязвимость, но могут усложнить эксплуатацию.

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


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

Вывод​


CVE-2026-68451 представляет собой серьезную угрозу для систем на архитектуре s390, использующих подсистему zcrypt. Уязвимость позволяет локальному пользователю с низкими привилегиями вызвать переполнение буфера в ядре, что может привести к повышению привилегий или отказу в обслуживании. Рекомендуется незамедлительно обновить ядро Linux до версии, содержащей исправление. Временные меры, такие как ограничение доступа к устройствам zcrypt, могут снизить риск, но не заменяют обновление.

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


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

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


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