Ad

CVE-2026-89607

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

В ядре Linux устранена следующая уязвимость: ecryptfs: отклонить слишком большой размер Encrypted_key_size в parse_tag_3_packet parse_tag_3_packet() устанавливает Encrypted_key_size из тела пакета тега 3 без привязки его к ECRYPTFS_MAX_KEY_BYTES (64). Когда Encrypted_key_size > 64, decrypt_passphrase_encrypted_session_key() устанавливает decrypted_key_size = Encrypted_key_size и выполняет два за пределами пишет: 1. crypto_skcipher_decrypt() записывает байты protected_key_size в decrypted_key[64] через список разброса, переполняется в родительский ecryptfs_auth_tok структура. 2. memcpy(crypt_stat->key, decrypted_key, decrypted_key_size) записывает в crypt_stat->key[64], повреждая root_iv, keyig_list и мьютексы в ecryptfs_crypt_stat. Только AES-192 (код шифрования 0x08) позволяет это сделать, поскольку он устанавливает crypt_stat->key_size = 24 независимо от Encrypted_key_size, разрешение crypto_skcipher_setkey() добиться успеха, пока зашифрован_key_size превышает ECRYPTFS_MAX_KEY_BYTES.

Путь расшифровки PKI (parse_tag_65_packet) уже проверен. decrypted_key_size <= ECRYPTFS_MAX_KEY_BYTES; путь к парольной фразе пропускает эту проверку. Скорее привязывайте Encrypted_key_size к ECRYPTFS_MAX_KEY_BYTES (64). чем ECRYPTFS_MAX_ENCRYPTED_KEY_BYTES (512). Ограничение в 64 байта также защищает 512-байтовый буфер Encrypted_key[], поэтому прежний 512-байтовый буфер проверка удалена за ненадобностью. [tyhicks: отредактируйте комментарий к коду, чтобы он ссылался на макросы, представляющие размеры буфера, а не упоминать значения размера буфера, поскольку они может измениться в будущем]

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

In the Linux kernel, the following vulnerability has been resolved: ecryptfs: reject oversized encrypted_key_size in parse_tag_3_packet parse_tag_3_packet() set encrypted_key_size from the Tag 3 packet body without bounding it against ECRYPTFS_MAX_KEY_BYTES (64). When encrypted_key_size > 64, decrypt_passphrase_encrypted_session_key() sets decrypted_key_size = encrypted_key_size and performs two out-of-bounds writes: 1. crypto_skcipher_decrypt() writes encrypted_key_size bytes into decrypted_key[64] via scatterlist, overflowing into the parent ecryptfs_auth_tok struct. 2. memcpy(crypt_stat->key, decrypted_key, decrypted_key_size) writes into crypt_stat->key[64], corrupting root_iv, keysig_list, and mutexes in ecryptfs_crypt_stat. Only AES-192 (cipher code 0x08) enables this because it sets crypt_stat->key_size = 24 independently of encrypted_key_size, allowing crypto_skcipher_setkey() to succeed while encrypted_key_size exceeds ECRYPTFS_MAX_KEY_BYTES. The PKI decryption path (parse_tag_65_packet) already validates decrypted_key_size <= ECRYPTFS_MAX_KEY_BYTES; the passphrase path omits this check. Bound encrypted_key_size against ECRYPTFS_MAX_KEY_BYTES (64) rather than ECRYPTFS_MAX_ENCRYPTED_KEY_BYTES (512). The 64-byte limit also protects the 512-byte encrypted_key[] buffer, so the former 512-byte check is removed as redundant. [tyhicks: Adjust the code comment to refer to macros representing the buffer sizes rather than mentioning the buffer size values since they may change in the future]

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

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

Последствия

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

Строка CVSS v3.1