KernelScan.io

HIGH

crypto krb5enc Bypass

CVE-2026-31719

CVSS 7.5 / 10.0 NVD

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N

KernelScan AI6.4MEDIUM

01

In the Linux kernel, the following vulnerability has been resolved: crypto: krb5enc - fix async decrypt skipping hash verification krb5enc_dispatch_decrypt() sets req->base.complete as the skcipher callback, which is the caller's own completion handler. When the skcipher completes asynchronously, this signals "done" to the caller without executing krb5enc_dispatch_decrypt_hash(), completely bypassing the integrity verification (hash check). Compare with the encrypt path which correctly uses krb5enc_encrypt_done as an intermediate callback to chain into the hash computation on async completion. Fix by adding krb5enc_decrypt_done as an intermediate callback that chains into krb5enc_dispatch_decrypt_hash() upon async skcipher completion, matching the encrypt path's callback pattern. Also fix EBUSY/EINPROGRESS handling throughout: remove krb5enc_request_complete() which incorrectly swallowed EINPROGRESS notifications that must be passed up to callers waiting on backlogged requests, and add missing EBUSY checks in krb5enc_encrypt_ahash_done for the dispatch_encrypt return value. Unset MAY_BACKLOG on the async completion path so the user won't see back-to-back EINPROGRESS notifications.

02

Engine v0.2.0

Risk summary

The krb5enc AEAD algorithm in the Linux kernel crypto subsystem completely bypasses integrity verification during asynchronous decryption operations. An authenticated attacker can modify encrypted Kerberos data without detection, potentially compromising authentication and data integrity in systems using Kerberos encryption via network services such as NFS.

Affectedcrypto/krb5enc.c (crypto subsystem)

Vulnerability analysis

The root cause is in krb5enc_dispatch_decrypt() which incorrectly sets the caller's completion handler as the skcipher callback instead of using an intermediate callback. When the underlying cipher completes asynchronously, it signals completion directly to the caller without executing krb5enc_dispatch_decrypt_hash(), completely skipping the integrity verification step. The fix adds krb5enc_decrypt_done() as an intermediate callback that ensures hash verification always occurs before signaling completion to the caller, matching the correct pattern used in the encrypt path.

03

BranchFixed inPatch commit
6.186.18.2507cbb1bd4243
7.07.0.2e51f42114abb
mainline7.1-rc13bfbf5f0a99c