HIGH
crypto krb5enc Bypass
CVE-2026-31719
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
KernelScan AI6.4MEDIUM
01Description
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.
02KernelScan AI Analysis
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.
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.
03Fix Versions
| Branch | Fixed in | Patch commit |
|---|---|---|
| 6.18 | 6.18.25 | 07cbb1bd4243 |
| 7.0 | 7.0.2 | e51f42114abb |
| mainline | 7.1-rc1 | 3bfbf5f0a99c |